Title: [109370] trunk/Source/WebCore
Revision
109370
Author
[email protected]
Date
2012-03-01 11:01:14 -0800 (Thu, 01 Mar 2012)

Log Message

Unreviewed, rolling out r109336.
http://trac.webkit.org/changeset/109336
https://bugs.webkit.org/show_bug.cgi?id=80013

It's causing some crashes

* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
(WebCore::DOMWindowIndexedDatabase::webkitIndexedDB):
* Modules/indexeddb/DOMWindowIndexedDatabase.h:
(DOMWindowIndexedDatabase):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::~DOMWindow):
(WebCore::DOMWindow::clear):
(WebCore):
(WebCore::DOMWindow::setIDBFactory):
* page/DOMWindow.h:
(DOMWindow):
(WebCore::DOMWindow::idbFactory):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (109369 => 109370)


--- trunk/Source/WebCore/ChangeLog	2012-03-01 18:57:14 UTC (rev 109369)
+++ trunk/Source/WebCore/ChangeLog	2012-03-01 19:01:14 UTC (rev 109370)
@@ -1,3 +1,25 @@
+2012-03-01  Adam Barth  <[email protected]>
+
+        Unreviewed, rolling out r109336.
+        http://trac.webkit.org/changeset/109336
+        https://bugs.webkit.org/show_bug.cgi?id=80013
+
+        It's causing some crashes
+
+        * Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
+        (WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
+        (WebCore::DOMWindowIndexedDatabase::webkitIndexedDB):
+        * Modules/indexeddb/DOMWindowIndexedDatabase.h:
+        (DOMWindowIndexedDatabase):
+        * page/DOMWindow.cpp:
+        (WebCore::DOMWindow::~DOMWindow):
+        (WebCore::DOMWindow::clear):
+        (WebCore):
+        (WebCore::DOMWindow::setIDBFactory):
+        * page/DOMWindow.h:
+        (DOMWindow):
+        (WebCore::DOMWindow::idbFactory):
+
 2012-03-01  Tom Sepez  <[email protected]>
 
         Move m_frame protector from FrameLoader::changeLocation to FrameLoader::urlSelected

Modified: trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.cpp (109369 => 109370)


--- trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.cpp	2012-03-01 18:57:14 UTC (rev 109369)
+++ trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.cpp	2012-03-01 19:01:14 UTC (rev 109370)
@@ -37,9 +37,7 @@
 
 namespace WebCore {
 
-DOMWindowIndexedDatabase::DOMWindowIndexedDatabase(DOMWindow* window)
-    : DOMWindowProperty(window->frame())
-    , m_window(window)
+DOMWindowIndexedDatabase::DOMWindowIndexedDatabase()
 {
 }
 
@@ -47,30 +45,9 @@
 {
 }
 
-DOMWindowIndexedDatabase* DOMWindowIndexedDatabase::from(DOMWindow* window)
-{
-    DEFINE_STATIC_LOCAL(AtomicString, name, ("DOMWindowIndexedDatabase"));
-    DOMWindowIndexedDatabase* supplement = static_cast<DOMWindowIndexedDatabase*>(Supplement<DOMWindow>::from(window, name));
-    if (!supplement) {
-        supplement = new DOMWindowIndexedDatabase(window);
-        provideTo(window, name, adoptPtr(supplement));
-    }
-    return supplement;
-}
-
-void DOMWindowIndexedDatabase::disconnectFrame()
-{
-    m_idbFactory = 0;
-}
-
 IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB(DOMWindow* window)
 {
-    return from(window)->webkitIndexedDB();
-}
-
-IDBFactory* DOMWindowIndexedDatabase::webkitIndexedDB()
-{
-    Document* document = m_window->document();
+    Document* document = window->document();
     if (!document)
         return 0;
 
@@ -81,9 +58,9 @@
     if (!document->securityOrigin()->canAccessDatabase())
         return 0;
 
-    if (!m_idbFactory && m_window->isCurrentlyDisplayedInFrame())
-        m_idbFactory = IDBFactory::create(page->group().idbFactory());
-    return m_idbFactory.get();
+    if (!window->idbFactory() && window->isCurrentlyDisplayedInFrame())
+        window->setIDBFactory(IDBFactory::create(page->group().idbFactory()));
+    return window->idbFactory();
 }
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.h (109369 => 109370)


--- trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.h	2012-03-01 18:57:14 UTC (rev 109369)
+++ trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.h	2012-03-01 19:01:14 UTC (rev 109370)
@@ -28,30 +28,18 @@
 
 #if ENABLE(INDEXED_DATABASE)
 
-#include "DOMWindowProperty.h"
-#include "Supplementable.h"
-
 namespace WebCore {
 
 class IDBFactory;
 class DOMWindow;
 
-class DOMWindowIndexedDatabase : public DOMWindowProperty, public Supplement<DOMWindow> {
+class DOMWindowIndexedDatabase {
 public:
-    virtual ~DOMWindowIndexedDatabase();
-    static DOMWindowIndexedDatabase* from(DOMWindow*);
-
     static IDBFactory* webkitIndexedDB(DOMWindow*);
 
-    virtual void disconnectFrame() OVERRIDE;
-
 private:
-    explicit DOMWindowIndexedDatabase(DOMWindow*);
-
-    IDBFactory* webkitIndexedDB();
-
-    DOMWindow* m_window;
-    RefPtr<IDBFactory> m_idbFactory;
+    DOMWindowIndexedDatabase();
+    ~DOMWindowIndexedDatabase();
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/page/DOMWindow.cpp (109369 => 109370)


--- trunk/Source/WebCore/page/DOMWindow.cpp	2012-03-01 18:57:14 UTC (rev 109369)
+++ trunk/Source/WebCore/page/DOMWindow.cpp	2012-03-01 19:01:14 UTC (rev 109370)
@@ -420,6 +420,9 @@
 #if ENABLE(NOTIFICATIONS)
     ASSERT(!m_notifications);
 #endif
+#if ENABLE(INDEXED_DATABASE)
+    ASSERT(!m_idbFactory);
+#endif
 #if ENABLE(BLOB)
     ASSERT(!m_domURL);
 #endif
@@ -528,6 +531,9 @@
     // the rest of the DOMWindowProperties.
     resetNotifications();
 #endif
+#if ENABLE(INDEXED_DATABASE)
+    m_idbFactory = 0;
+#endif
 #if ENABLE(BLOB)
     m_domURL = 0;
 #endif
@@ -734,6 +740,13 @@
 }
 #endif
 
+#if ENABLE(INDEXED_DATABASE)
+void DOMWindow::setIDBFactory(PassRefPtr<IDBFactory> idbFactory)
+{
+    m_idbFactory = idbFactory;
+}
+#endif
+
 void DOMWindow::postMessage(PassRefPtr<SerializedScriptValue> message, MessagePort* port, const String& targetOrigin, DOMWindow* source, ExceptionCode& ec)
 {
     MessagePortArray ports;

Modified: trunk/Source/WebCore/page/DOMWindow.h (109369 => 109370)


--- trunk/Source/WebCore/page/DOMWindow.h	2012-03-01 18:57:14 UTC (rev 109369)
+++ trunk/Source/WebCore/page/DOMWindow.h	2012-03-01 19:01:14 UTC (rev 109370)
@@ -30,7 +30,6 @@
 #include "EventTarget.h"
 #include "FrameDestructionObserver.h"
 #include "KURL.h"
-#include "Supplementable.h"
 
 namespace WebCore {
 
@@ -81,7 +80,7 @@
 
     enum SetLocationLocking { LockHistoryBasedOnGestureState, LockHistoryAndBackForwardList };
 
-    class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver, public Supplementable<DOMWindow> {
+    class DOMWindow : public RefCounted<DOMWindow>, public EventTarget, public FrameDestructionObserver {
     public:
         static PassRefPtr<DOMWindow> create(Frame* frame) { return adoptRef(new DOMWindow(frame)); }
         virtual ~DOMWindow();
@@ -394,6 +393,11 @@
         // by the document that is currently active in m_frame.
         bool isCurrentlyDisplayedInFrame() const;
 
+#if ENABLE(INDEXED_DATABASE)
+        IDBFactory* idbFactory() { return m_idbFactory.get(); }
+        void setIDBFactory(PassRefPtr<IDBFactory>);
+#endif
+
     private:
         explicit DOMWindow(Frame*);
 
@@ -441,6 +445,11 @@
 
         mutable RefPtr<Storage> m_sessionStorage;
         mutable RefPtr<Storage> m_localStorage;
+
+#if ENABLE(INDEXED_DATABASE)
+        mutable RefPtr<IDBFactory> m_idbFactory;
+#endif
+
         mutable RefPtr<DOMApplicationCache> m_applicationCache;
 
 #if ENABLE(NOTIFICATIONS)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to