- 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)