Changeset 56777 in webkit
- Timestamp:
- Mar 30, 2010 4:58:06 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 3 deleted
- 20 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r56776 r56777 1 2010-03-29 Jeremy Orlow <jorlow@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 More IndexedDB work 6 https://bugs.webkit.org/show_bug.cgi?id=36770 7 8 Add the "singleton" IndexedDatabase object to PageGroup 9 IndexedDatabase now has a create() method since PageGroup can own the instance (at least for now) 10 Rip out the IDBRequest stuff (now obsolete). 11 DOMWindow now can instantiate indexedDatabase objects on demand. 12 13 New layout tests starting with the next patch (which should make indexedDB.open() "work"). 14 15 * WebCore.gypi: 16 * bindings/v8/custom/V8IDBRequestCustom.cpp: Removed. 17 * page/DOMWindow.cpp: 18 (WebCore::DOMWindow::indexedDB): 19 * page/DOMWindow.h: 20 * page/PageGroup.cpp: 21 (WebCore::PageGroup::indexedDatabase): 22 * page/PageGroup.h: 23 * storage/IDBDatabase.cpp: 24 * storage/IDBDatabaseRequest.h: 25 (WebCore::IDBDatabaseRequest::createObjectStore): 26 * storage/IDBDatabaseRequest.idl: 27 * storage/IDBRequest.cpp: Removed. 28 * storage/IDBRequest.h: Removed. 29 * storage/IDBRequest.idl: Removed. 30 * storage/IndexedDatabase.cpp: 31 (WebCore::IndexedDatabase::create): 32 * storage/IndexedDatabase.h: 33 * storage/IndexedDatabaseImpl.cpp: 34 (WebCore::IndexedDatabaseImpl::create): 35 (WebCore::IndexedDatabaseImpl::IndexedDatabaseImpl): 36 (WebCore::IndexedDatabaseImpl::~IndexedDatabaseImpl): 37 * storage/IndexedDatabaseImpl.h: 38 * storage/IndexedDatabaseRequest.cpp: 39 (WebCore::IndexedDatabaseRequest::IndexedDatabaseRequest): 40 * storage/IndexedDatabaseRequest.h: 41 (WebCore::IndexedDatabaseRequest::create): 42 * storage/IndexedDatabaseRequest.idl: 43 * storage/chromium/IndexedDatabase.cpp: 44 (WebCore::IndexedDatabase::create): 45 1 46 2010-03-30 Dirk Schulze <krit@webkit.org> 2 47 -
trunk/WebCore/WebCore.gypi
r56713 r56777 219 219 'storage/IDBDatabaseException.idl', 220 220 'storage/IDBDatabaseRequest.idl', 221 'storage/IDBRequest.idl',222 221 'storage/IndexedDatabaseRequest.idl', 223 222 'storage/SQLError.idl', … … 753 752 'bindings/v8/custom/V8HTMLSelectElementCustom.cpp', 754 753 'bindings/v8/custom/V8HTMLSelectElementCustom.h', 755 'bindings/v8/custom/V8IDBRequestCustom.cpp',756 754 'bindings/v8/custom/V8IndexedDatabaseRequestCustom.cpp', 757 755 'bindings/v8/custom/V8InjectedScriptHostCustom.cpp', … … 3274 3272 'storage/IDBDatabaseException.h', 3275 3273 'storage/IDBDatabaseRequest.h', 3276 'storage/IDBRequest.cpp',3277 'storage/IDBRequest.h',3278 3274 'storage/IndexedDatabase.cpp', 3279 3275 'storage/IndexedDatabase.h', -
trunk/WebCore/page/DOMWindow.cpp
r56608 r56777 55 55 #include "HTMLFrameOwnerElement.h" 56 56 #include "History.h" 57 #include "IndexedDatabase.h" 58 #include "IndexedDatabaseRequest.h" 57 59 #include "InspectorController.h" 58 60 #include "InspectorTimelineAgent.h" … … 469 471 m_notifications = 0; 470 472 #endif 473 474 #if ENABLE(INDEXED_DATABASE) 475 if (m_indexedDatabaseRequest) 476 m_indexedDatabaseRequest->disconnectFrame(); 477 m_indexedDatabaseRequest = 0; 478 #endif 471 479 } 472 480 … … 646 654 IndexedDatabaseRequest* DOMWindow::indexedDB() const 647 655 { 648 return 0; 656 if (m_indexedDatabaseRequest) 657 return m_indexedDatabaseRequest.get(); 658 659 Document* document = this->document(); 660 if (!document) 661 return 0; 662 663 // FIXME: See if access is allowed. 664 665 Page* page = document->page(); 666 if (!page) 667 return 0; 668 669 // FIXME: See if indexedDatabase access is allowed. 670 671 m_indexedDatabaseRequest = IndexedDatabaseRequest::create(page->group().indexedDatabase(), m_frame); 672 return m_indexedDatabaseRequest.get(); 649 673 } 650 674 #endif -
trunk/WebCore/page/DOMWindow.h
r56002 r56777 402 402 mutable RefPtr<NotificationCenter> m_notifications; 403 403 #endif 404 #if ENABLE(INDEXED_DATABASE) 405 mutable RefPtr<IndexedDatabaseRequest> m_indexedDatabaseRequest; 406 #endif 404 407 405 408 EventTargetData m_eventTargetData; -
trunk/WebCore/page/PageGroup.cpp
r54316 r56777 31 31 #include "Document.h" 32 32 #include "Frame.h" 33 #include "IndexedDatabase.h" 33 34 #include "Page.h" 34 35 #include "Settings.h" 35 36 #if ENABLE(DOM_STORAGE)37 36 #include "StorageNamespace.h" 38 #endif39 37 40 38 #if PLATFORM(CHROMIUM) … … 192 190 if (!m_localStorage) { 193 191 // Need a page in this page group to query the settings for the local storage database path. 192 // Having these parameters attached to the page settings is unfortunate since these settings are 193 // not per-page (and, in fact, we simply grab the settings from some page at random), but 194 // at this point we're stuck with it. 194 195 Page* page = *m_pages.begin(); 195 196 const String& path = page->settings()->localStorageDatabasePath(); … … 199 200 200 201 return m_localStorage.get(); 202 } 203 #endif 204 205 #if ENABLE(INDEXED_DATABASE) 206 IndexedDatabase* PageGroup::indexedDatabase() 207 { 208 // Do not add page setting based access control here since this object is shared by all pages in 209 // the group and having per-page controls is misleading. 210 if (!m_indexedDatabase) 211 m_indexedDatabase = IndexedDatabase::create(); 212 return m_indexedDatabase.get(); 201 213 } 202 214 #endif -
trunk/WebCore/page/PageGroup.h
r50907 r56777 37 37 38 38 class KURL; 39 class IndexedDatabase; 39 40 class Page; 40 41 class StorageNamespace; … … 70 71 bool hasLocalStorage() { return m_localStorage; } 71 72 #endif 73 #if ENABLE(DOM_STORAGE) 74 IndexedDatabase* indexedDatabase(); 75 #endif 72 76 73 77 void addUserScriptToWorld(DOMWrapperWorld*, const String& source, const KURL&, … … 102 106 RefPtr<StorageNamespace> m_localStorage; 103 107 #endif 108 #if ENABLE(INDEXED_DATABASE) 109 RefPtr<IndexedDatabase> m_indexedDatabase; 110 #endif 104 111 105 112 OwnPtr<UserScriptMap> m_userScripts; -
trunk/WebCore/storage/IDBDatabase.cpp
r56713 r56777 1 /* 2 * Copyright (C) 2010 Google Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14 * its contributors may be used to endorse or promote products derived 15 * from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 #include "config.h" 29 #include "IDBDatabase.h" 30 31 #if ENABLE(INDEXED_DATABASE) 32 33 namespace WebCore { 34 35 // FIXME: Write. 36 37 } // namespace WebCore 38 39 #endif // ENABLE(INDEXED_DATABASE) 40 -
trunk/WebCore/storage/IDBDatabaseRequest.h
r55779 r56777 41 41 // FIXME: Write. 42 42 IDBRequest* request() const { return 0; } 43 void createObjectStore(const String& name, const String& keyPath, bool autoIncrement) { } 43 44 }; 44 45 -
trunk/WebCore/storage/IDBDatabaseRequest.idl
r55779 r56777 31 31 Conditional=INDEXED_DATABASE 32 32 ] IDBDatabaseRequest { 33 readonly attribute IDBRequest request; 34 // FIXME: Write. 33 // FIXME: Boolean should be optional and keyPath should take nulls. 34 void createObjectStore(in DOMString name, in DOMString keyPath, in boolean autoIncrement); 35 36 // FIXME: Finish. 35 37 }; 36 38 -
trunk/WebCore/storage/IndexedDatabase.cpp
r55784 r56777 39 39 namespace WebCore { 40 40 41 PassRefPtr<IndexedDatabase> IndexedDatabase:: get()41 PassRefPtr<IndexedDatabase> IndexedDatabase::create() 42 42 { 43 return IndexedDatabaseImpl:: get();43 return IndexedDatabaseImpl::create(); 44 44 } 45 45 -
trunk/WebCore/storage/IndexedDatabase.h
r56713 r56777 48 48 class IndexedDatabase : public ThreadSafeShared<IndexedDatabase> { 49 49 public: 50 static PassRefPtr<IndexedDatabase> get();50 static PassRefPtr<IndexedDatabase> create(); 51 51 virtual ~IndexedDatabase() { } 52 52 -
trunk/WebCore/storage/IndexedDatabaseImpl.cpp
r56713 r56777 37 37 namespace WebCore { 38 38 39 IndexedDatabaseImpl* IndexedDatabaseImpl::indexedDatabaseImpl = 0; 40 41 PassRefPtr<IndexedDatabaseImpl> IndexedDatabaseImpl::get() 39 PassRefPtr<IndexedDatabaseImpl> IndexedDatabaseImpl::create() 42 40 { 43 if (!indexedDatabaseImpl) 44 indexedDatabaseImpl = new IndexedDatabaseImpl(); 45 ASSERT(indexedDatabaseImpl); 46 return indexedDatabaseImpl; 41 return new IndexedDatabaseImpl(); 47 42 } 48 43 49 44 IndexedDatabaseImpl::IndexedDatabaseImpl() 50 45 { 51 // FIXME: Make this thread safe before implementing a sync interface.52 ASSERT(!indexedDatabaseImpl);53 indexedDatabaseImpl = this;54 46 } 55 47 56 48 IndexedDatabaseImpl::~IndexedDatabaseImpl() 57 49 { 58 // FIXME: Make this thread safe before implementing a sync interface.59 ASSERT(indexedDatabaseImpl == this);60 indexedDatabaseImpl = 0;61 50 } 62 51 -
trunk/WebCore/storage/IndexedDatabaseImpl.h
r56713 r56777 37 37 class IndexedDatabaseImpl : public IndexedDatabase { 38 38 public: 39 static PassRefPtr<IndexedDatabaseImpl> get();39 static PassRefPtr<IndexedDatabaseImpl> create(); 40 40 virtual ~IndexedDatabaseImpl(); 41 41 -
trunk/WebCore/storage/IndexedDatabaseRequest.cpp
r56713 r56777 29 29 #include "IndexedDatabaseRequest.h" 30 30 31 #include "ExceptionCode.h" 32 #include "IndexedDatabase.h" 33 31 34 #if ENABLE(INDEXED_DATABASE) 32 33 #include "ExceptionCode.h"34 #include "IDBRequest.h"35 35 36 36 namespace WebCore { 37 37 38 IndexedDatabaseRequest::IndexedDatabaseRequest() 38 IndexedDatabaseRequest::IndexedDatabaseRequest(IndexedDatabase* indexedDatabase, Frame* frame) 39 : m_indexedDatabase(indexedDatabase) 40 , m_frame(frame) 39 41 { 40 42 } -
trunk/WebCore/storage/IndexedDatabaseRequest.h
r54085 r56777 39 39 namespace WebCore { 40 40 41 class IDBRequest; 41 class IndexedDatabase; 42 class Frame; 42 43 43 44 class IndexedDatabaseRequest : public RefCounted<IndexedDatabaseRequest> { 44 45 public: 45 static PassRefPtr<IndexedDatabaseRequest> create( )46 static PassRefPtr<IndexedDatabaseRequest> create(IndexedDatabase* indexedDatabase, Frame* frame) 46 47 { 47 return adoptRef(new IndexedDatabaseRequest( ));48 return adoptRef(new IndexedDatabaseRequest(indexedDatabase, frame)); 48 49 } 49 50 ~IndexedDatabaseRequest(); 50 51 51 IDBRequest* request() const { return m_request.get(); }52 52 void open(const String& name, const String& description, bool modifyDatabase, ExceptionCode&); 53 53 54 void disconnectFrame() { m_frame = 0; } 55 54 56 private: 55 IndexedDatabaseRequest( );57 IndexedDatabaseRequest(IndexedDatabase*, Frame*); 56 58 57 PassRefPtr<IDBRequest> m_request; 59 PassRefPtr<IndexedDatabase> m_indexedDatabase; 60 Frame* m_frame; 58 61 }; 59 62 -
trunk/WebCore/storage/IndexedDatabaseRequest.idl
r55778 r56777 31 31 Conditional=INDEXED_DATABASE 32 32 ] IndexedDatabaseRequest { 33 readonly attribute IDBRequest request;34 33 [Custom] void open(in DOMString name, in DOMString description, in optional boolean modifyDatabase, IDBDatabaseErrorCallback onerror, IDBDatabaseRequestCallback onsuccess) 35 34 raises(IDBDatabaseException); -
trunk/WebCore/storage/chromium/IndexedDatabase.cpp
r55784 r56777 35 35 namespace WebCore { 36 36 37 PassRefPtr<IndexedDatabase> IndexedDatabase:: get()37 PassRefPtr<IndexedDatabase> IndexedDatabase::create() 38 38 { 39 39 return ChromiumBridge::indexedDatabase(); -
trunk/WebKit/chromium/ChangeLog
r56756 r56777 1 2010-03-29 Jeremy Orlow <jorlow@chromium.org> 2 3 Reviewed by Darin Fisher. 4 5 More IndexedDB work 6 https://bugs.webkit.org/show_bug.cgi?id=36770 7 8 Start the implementation of WebIndexedDatabase (for entrance back into WebKit). 9 10 * WebKit.gyp: 11 * public/WebIndexedDatabase.h: 12 * src/WebIndexedDatabaseImpl.cpp: Added. 13 (WebKit::WebIndexedDatabase::create): 14 (WebKit::WebIndexedDatabaseImpl::~WebIndexedDatabaseImpl): 15 (WebKit::WebIndexedDatabaseImpl::open): 16 * src/WebIndexedDatabaseImpl.h: Added. 17 1 18 2010-03-29 Rafael Weinstein <rafaelw@chromium.org> 2 19 -
trunk/WebKit/chromium/WebKit.gyp
r56713 r56777 334 334 'src/WebImageDecoder.cpp', 335 335 'src/WebImageSkia.cpp', 336 'src/WebIndexedDatabaseImpl.cpp', 337 'src/WebIndexedDatabaseImpl.h', 336 338 'src/WebInputElement.cpp', 337 339 'src/WebInputEvent.cpp', -
trunk/WebKit/chromium/public/WebIndexedDatabase.h
r56713 r56777 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 28 29 #ifndef WebIndexedDatabase_h 29 30 #define WebIndexedDatabase_h … … 42 43 class WebIndexedDatabase { 43 44 public: 44 // FIXME: Implement entry back into WebKit for this API.45 WEBKIT_API static WebIndexedDatabase* create(); 45 46 46 47 virtual ~WebIndexedDatabase() { } -
trunk/WebKit/chromium/src/WebIndexedDatabaseImpl.cpp
-
Property
svn:eol-style
set to
LF
r56776 r56777 30 30 31 31 #include "config.h" 32 #include "WebIndexedDatabaseImpl.h" 33 34 #include "WebIDBDatabaseError.h" 35 #include <wtf/OwnPtr.h> 32 36 33 37 #if ENABLE(INDEXED_DATABASE) 34 #include "V8IDBRequest.h"35 38 36 #include "SerializedScriptValue.h" 37 #include "V8Proxy.h" 39 namespace WebKit { 38 40 39 namespace WebCore { 40 41 v8::Handle<v8::Value> V8IDBRequest::resultAccessorGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info) 41 WebIndexedDatabase* WebIndexedDatabase::create() 42 42 { 43 IDBRequest* request = V8IDBRequest::toNative(info.Holder()); 44 SerializedScriptValue* result = request->result(); 45 if (!result) 46 return v8::Null(); 47 48 return result->deserialize(); 43 return new WebIndexedDatabaseImpl(); 49 44 } 50 45 51 } // namespace WebCore 46 WebIndexedDatabaseImpl::~WebIndexedDatabaseImpl() 47 { 48 } 52 49 53 #endif 50 void WebIndexedDatabaseImpl::open(const WebString& name, const WebString& description, bool modifyDatabase, int& exceptionCode, WebIDBCallbacks<WebIDBDatabase>* callbacksPtr) 51 { 52 OwnPtr<WebIDBCallbacks<WebIDBDatabase>*> callbacks(callbacksPtr); 53 callbacks->onError(WebIDBDatabaseError(0, "Not implemented")); 54 // FIXME: Implement for realz. 55 } 56 57 } // namespace WebKit 58 59 #endif // ENABLE(INDEXED_DATABASE) -
Property
svn:eol-style
set to
-
trunk/WebKit/chromium/src/WebIndexedDatabaseImpl.h
r56776 r56777 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 #ifndef IDBDatabaseRequest_h29 #define IDBDatabaseRequest_h30 28 31 #include <wtf/RefCounted.h> 29 #ifndef WebIndexedDatabaseImpl_h 30 #define WebIndexedDatabaseImpl_h 32 31 33 #i f ENABLE(INDEXED_DATABASE)32 #include "WebIndexedDatabase.h" 34 33 35 namespace Web Core{34 namespace WebKit { 36 35 37 class IDBRequest; 36 class WebIndexedDatabaseImpl : public WebIndexedDatabase { 37 public: 38 virtual ~WebIndexedDatabaseImpl(); 38 39 39 class IDBDatabaseRequest : public RefCounted<IDBDatabaseRequest> { 40 public: 41 // FIXME: Write. 42 IDBRequest* request() const { return 0; } 40 virtual void open(const WebString& name, const WebString& description, bool modifyDatabase, int& exceptionCode, WebIDBCallbacks<WebIDBDatabase>* callbacks); 43 41 }; 44 42 45 } // namespace Web Core43 } // namespace WebKit 46 44 47 #endif 48 49 #endif // IDBDatabaseRequest_h 50 45 #endif // WebIndexedDatabaseImpl_h
Note: See TracChangeset
for help on using the changeset viewer.