Changeset 109370 in webkit
- Timestamp:
- Mar 1, 2012, 11:01:14 AM (15 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
-
ChangeLog (modified) (1 diff)
-
Modules/indexeddb/DOMWindowIndexedDatabase.cpp (modified) (3 diffs)
-
Modules/indexeddb/DOMWindowIndexedDatabase.h (modified) (2 diffs)
-
page/DOMWindow.cpp (modified) (3 diffs)
-
page/DOMWindow.h (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r109369 r109370 1 2012-03-01 Adam Barth <abarth@webkit.org> 2 3 Unreviewed, rolling out r109336. 4 http://trac.webkit.org/changeset/109336 5 https://bugs.webkit.org/show_bug.cgi?id=80013 6 7 It's causing some crashes 8 9 * Modules/indexeddb/DOMWindowIndexedDatabase.cpp: 10 (WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase): 11 (WebCore::DOMWindowIndexedDatabase::webkitIndexedDB): 12 * Modules/indexeddb/DOMWindowIndexedDatabase.h: 13 (DOMWindowIndexedDatabase): 14 * page/DOMWindow.cpp: 15 (WebCore::DOMWindow::~DOMWindow): 16 (WebCore::DOMWindow::clear): 17 (WebCore): 18 (WebCore::DOMWindow::setIDBFactory): 19 * page/DOMWindow.h: 20 (DOMWindow): 21 (WebCore::DOMWindow::idbFactory): 22 1 23 2012-03-01 Tom Sepez <tsepez@chromium.org> 2 24 -
trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.cpp
r109336 r109370 38 38 namespace WebCore { 39 39 40 DOMWindowIndexedDatabase::DOMWindowIndexedDatabase(DOMWindow* window) 41 : DOMWindowProperty(window->frame()) 42 , m_window(window) 40 DOMWindowIndexedDatabase::DOMWindowIndexedDatabase() 43 41 { 44 42 } … … 48 46 } 49 47 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 66 48 IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB(DOMWindow* window) 67 49 { 68 return from(window)->webkitIndexedDB(); 69 } 70 71 IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB() 72 { 73 Document* document = m_window->document(); 50 Document* document = window->document(); 74 51 if (!document) 75 52 return 0; … … 82 59 return 0; 83 60 84 if (! m_idbFactory && m_window->isCurrentlyDisplayedInFrame())85 m_idbFactory = IDBFactory::create(page->group().idbFactory());86 return m_idbFactory.get();61 if (!window->idbFactory() && window->isCurrentlyDisplayedInFrame()) 62 window->setIDBFactory(IDBFactory::create(page->group().idbFactory())); 63 return window->idbFactory(); 87 64 } 88 65 -
trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.h
r109336 r109370 29 29 #if ENABLE(INDEXED_DATABASE) 30 30 31 #include "DOMWindowProperty.h"32 #include "Supplementable.h"33 34 31 namespace WebCore { 35 32 … … 37 34 class DOMWindow; 38 35 39 class DOMWindowIndexedDatabase : public DOMWindowProperty, public Supplement<DOMWindow>{36 class DOMWindowIndexedDatabase { 40 37 public: 41 virtual ~DOMWindowIndexedDatabase();42 static DOMWindowIndexedDatabase* from(DOMWindow*);43 44 38 static IDBFactory* webkitIndexedDB(DOMWindow*); 45 39 46 virtual void disconnectFrame() OVERRIDE;47 48 40 private: 49 explicit DOMWindowIndexedDatabase(DOMWindow*); 50 51 IDBFactory* webkitIndexedDB(); 52 53 DOMWindow* m_window; 54 RefPtr<IDBFactory> m_idbFactory; 41 DOMWindowIndexedDatabase(); 42 ~DOMWindowIndexedDatabase(); 55 43 }; 56 44 -
trunk/Source/WebCore/page/DOMWindow.cpp
r109336 r109370 421 421 ASSERT(!m_notifications); 422 422 #endif 423 #if ENABLE(INDEXED_DATABASE) 424 ASSERT(!m_idbFactory); 425 #endif 423 426 #if ENABLE(BLOB) 424 427 ASSERT(!m_domURL); … … 529 532 resetNotifications(); 530 533 #endif 534 #if ENABLE(INDEXED_DATABASE) 535 m_idbFactory = 0; 536 #endif 531 537 #if ENABLE(BLOB) 532 538 m_domURL = 0; … … 732 738 m_notifications->disconnectFrame(); 733 739 m_notifications = 0; 740 } 741 #endif 742 743 #if ENABLE(INDEXED_DATABASE) 744 void DOMWindow::setIDBFactory(PassRefPtr<IDBFactory> idbFactory) 745 { 746 m_idbFactory = idbFactory; 734 747 } 735 748 #endif -
trunk/Source/WebCore/page/DOMWindow.h
r109336 r109370 31 31 #include "FrameDestructionObserver.h" 32 32 #include "KURL.h" 33 #include "Supplementable.h"34 33 35 34 namespace WebCore { … … 82 81 enum SetLocationLocking { LockHistoryBasedOnGestureState, LockHistoryAndBackForwardList }; 83 82 84 class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver , public Supplementable<DOMWindow>{83 class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver { 85 84 public: 86 85 static PassRefPtr<DOMWindow> create(Frame* frame) { return adoptRef(new DOMWindow(frame)); } … … 395 394 bool isCurrentlyDisplayedInFrame() const; 396 395 396 #if ENABLE(INDEXED_DATABASE) 397 IDBFactory* idbFactory() { return m_idbFactory.get(); } 398 void setIDBFactory(PassRefPtr<IDBFactory>); 399 #endif 400 397 401 private: 398 402 explicit DOMWindow(Frame*); … … 442 446 mutable RefPtr<Storage> m_sessionStorage; 443 447 mutable RefPtr<Storage> m_localStorage; 448 449 #if ENABLE(INDEXED_DATABASE) 450 mutable RefPtr<IDBFactory> m_idbFactory; 451 #endif 452 444 453 mutable RefPtr<DOMApplicationCache> m_applicationCache; 445 454
Note:
See TracChangeset
for help on using the changeset viewer.