Changeset 109336 in webkit
- Timestamp:
- Mar 1, 2012 4:39:49 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r109333 r109336 1 2012-03-01 Adam Barth <abarth@webkit.org> 2 3 DOMWindow shouldn't have any INDEXED_DATABASE ifdefs 4 https://bugs.webkit.org/show_bug.cgi?id=80013 5 6 Reviewed by Kentaro Hara. 7 8 Before this patch, DOMWindow still knew about IDB because of the 9 database factory. This patch moves the factory to 10 DOMWindowIndexedDatabase. 11 12 * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: 13 (WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase): 14 (WebCore::DOMWindowIndexedDatabase::from): 15 (WebCore): 16 (WebCore::DOMWindowIndexedDatabase::disconnectFrame): 17 (WebCore::DOMWindowIndexedDatabase::webkitIndexedDB): 18 * Modules/indexeddb/DOMWindowIndexedDatabase.h: 19 (DOMWindowIndexedDatabase): 20 * page/DOMWindow.cpp: 21 (WebCore::DOMWindow::~DOMWindow): 22 (WebCore::DOMWindow::clear): 23 (WebCore): 24 * page/DOMWindow.h: 25 (DOMWindow): 26 1 27 2012-03-01 Nikolas Zimmermann <nzimmermann@rim.com> 2 28 -
trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.cpp
r105569 r109336 38 38 namespace WebCore { 39 39 40 DOMWindowIndexedDatabase::DOMWindowIndexedDatabase() 40 DOMWindowIndexedDatabase::DOMWindowIndexedDatabase(DOMWindow* window) 41 : DOMWindowProperty(window->frame()) 42 , m_window(window) 41 43 { 42 44 } … … 46 48 } 47 49 50 DOMWindowIndexedDatabase* DOMWindowIndexedDatabase::from(DOMWindow* window) 51 { 52 DEFINE_STATIC_LOCAL(AtomicString, name, ("DOMWindowIndexedDatabase")); 53 DOMWindowIndexedDatabase* supplement = static_cast<DOMWindowIndexedDatabase*>(Supplement<DOMWindow>::from(window, name)); 54 if (!supplement) { 55 supplement = new DOMWindowIndexedDatabase(window); 56 provideTo(window, name, adoptPtr(supplement)); 57 } 58 return supplement; 59 } 60 61 void DOMWindowIndexedDatabase::disconnectFrame() 62 { 63 m_idbFactory = 0; 64 } 65 48 66 IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB(DOMWindow* window) 49 67 { 50 Document* document = window->document(); 68 return from(window)->webkitIndexedDB(); 69 } 70 71 IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB() 72 { 73 Document* document = m_window->document(); 51 74 if (!document) 52 75 return 0; … … 59 82 return 0; 60 83 61 if (! window->idbFactory() &&window->isCurrentlyDisplayedInFrame())62 window->setIDBFactory(IDBFactory::create(page->group().idbFactory()));63 return window->idbFactory();84 if (!m_idbFactory && m_window->isCurrentlyDisplayedInFrame()) 85 m_idbFactory = IDBFactory::create(page->group().idbFactory()); 86 return m_idbFactory.get(); 64 87 } 65 88 -
trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.h
r105569 r109336 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include "DOMWindowProperty.h" 32 #include "Supplementable.h" 33 31 34 namespace WebCore { 32 35 … … 34 37 class DOMWindow; 35 38 36 class DOMWindowIndexedDatabase {39 class DOMWindowIndexedDatabase : public DOMWindowProperty, public Supplement<DOMWindow> { 37 40 public: 41 virtual ~DOMWindowIndexedDatabase(); 42 static DOMWindowIndexedDatabase* from(DOMWindow*); 43 38 44 static IDBFactory* webkitIndexedDB(DOMWindow*); 39 45 46 virtual void disconnectFrame() OVERRIDE; 47 40 48 private: 41 DOMWindowIndexedDatabase(); 42 ~DOMWindowIndexedDatabase(); 49 explicit DOMWindowIndexedDatabase(DOMWindow*); 50 51 IDBFactory* webkitIndexedDB(); 52 53 DOMWindow* m_window; 54 RefPtr<IDBFactory> m_idbFactory; 43 55 }; 44 56 -
trunk/Source/WebCore/page/DOMWindow.cpp
r108958 r109336 421 421 ASSERT(!m_notifications); 422 422 #endif 423 #if ENABLE(INDEXED_DATABASE)424 ASSERT(!m_idbFactory);425 #endif426 423 #if ENABLE(BLOB) 427 424 ASSERT(!m_domURL); … … 532 529 resetNotifications(); 533 530 #endif 534 #if ENABLE(INDEXED_DATABASE)535 m_idbFactory = 0;536 #endif537 531 #if ENABLE(BLOB) 538 532 m_domURL = 0; … … 738 732 m_notifications->disconnectFrame(); 739 733 m_notifications = 0; 740 }741 #endif742 743 #if ENABLE(INDEXED_DATABASE)744 void DOMWindow::setIDBFactory(PassRefPtr<IDBFactory> idbFactory)745 {746 m_idbFactory = idbFactory;747 734 } 748 735 #endif -
trunk/Source/WebCore/page/DOMWindow.h
r108958 r109336 31 31 #include "FrameDestructionObserver.h" 32 32 #include "KURL.h" 33 #include "Supplementable.h" 33 34 34 35 namespace WebCore { … … 81 82 enum SetLocationLocking { LockHistoryBasedOnGestureState, LockHistoryAndBackForwardList }; 82 83 83 class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver {84 class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver, public Supplementable<DOMWindow> { 84 85 public: 85 86 static PassRefPtr<DOMWindow> create(Frame* frame) { return adoptRef(new DOMWindow(frame)); } … … 394 395 bool isCurrentlyDisplayedInFrame() const; 395 396 396 #if ENABLE(INDEXED_DATABASE)397 IDBFactory* idbFactory() { return m_idbFactory.get(); }398 void setIDBFactory(PassRefPtr<IDBFactory>);399 #endif400 401 397 private: 402 398 explicit DOMWindow(Frame*); … … 446 442 mutable RefPtr<Storage> m_sessionStorage; 447 443 mutable RefPtr<Storage> m_localStorage; 448 449 #if ENABLE(INDEXED_DATABASE)450 mutable RefPtr<IDBFactory> m_idbFactory;451 #endif452 453 444 mutable RefPtr<DOMApplicationCache> m_applicationCache; 454 445
Note: See TracChangeset
for help on using the changeset viewer.