JSDOMWrapper should ASSERT that it has an associated ScriptExecutionContext
authorabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Aug 2012 18:44:02 +0000 (18:44 +0000)
committerabarth@webkit.org <abarth@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 15 Aug 2012 18:44:02 +0000 (18:44 +0000)
https://bugs.webkit.org/show_bug.cgi?id=94053

Reviewed by Sam Weinig.

Previously we were unable have this ASSERT because DOMWindow needed a
Frame to find Document. Now that we can find the Document without a
Frame, we can include the ASSERT and sanity will rein across the land.

* bindings/js/JSDOMWrapper.h:
(WebCore::JSDOMWrapper::globalObject):
(WebCore::JSDOMWrapper::scriptExecutionContext):
(WebCore::JSDOMWrapper::JSDOMWrapper):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@125688 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMWrapper.h

index 1d84659..6af0de2 100644 (file)
@@ -1,3 +1,19 @@
+2012-08-15  Adam Barth  <abarth@webkit.org>
+
+        JSDOMWrapper should ASSERT that it has an associated ScriptExecutionContext
+        https://bugs.webkit.org/show_bug.cgi?id=94053
+
+        Reviewed by Sam Weinig.
+
+        Previously we were unable have this ASSERT because DOMWindow needed a
+        Frame to find Document. Now that we can find the Document without a
+        Frame, we can include the ASSERT and sanity will rein across the land.
+
+        * bindings/js/JSDOMWrapper.h:
+        (WebCore::JSDOMWrapper::globalObject):
+        (WebCore::JSDOMWrapper::scriptExecutionContext):
+        (WebCore::JSDOMWrapper::JSDOMWrapper):
+
 2012-08-14  Mark Hahnenberg  <mhahnenberg@apple.com>
 
         Change behavior of MasqueradesAsUndefined to better accommodate DFG changes
index f0a8a3a..dd47c47 100644 (file)
@@ -31,25 +31,14 @@ class ScriptExecutionContext;
 
 class JSDOMWrapper : public JSC::JSNonFinalObject {
 public:
-    JSDOMGlobalObject* globalObject() const
-    {
-        return JSC::jsCast<JSDOMGlobalObject*>(JSC::JSNonFinalObject::globalObject());
-    }
-
-    ScriptExecutionContext* scriptExecutionContext() const
-    {
-        // FIXME: Should never be 0, but can be due to bug 27640.
-        return globalObject()->scriptExecutionContext();
-    }
+    JSDOMGlobalObject* globalObject() const { return JSC::jsCast<JSDOMGlobalObject*>(JSC::JSNonFinalObject::globalObject()); }
+    ScriptExecutionContext* scriptExecutionContext() const { return globalObject()->scriptExecutionContext(); }
 
 protected:
-    explicit JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject* globalObject) 
+    JSDOMWrapper(JSC::Structure* structure, JSC::JSGlobalObject* globalObject) 
         : JSNonFinalObject(globalObject->globalData(), structure)
     {
-        // FIXME: This ASSERT is valid, but fires in fast/dom/gc-6.html when trying to create
-        // new JavaScript objects on detached windows due to DOMWindow::document()
-        // needing to reach through the frame to get to the Document*.  See bug 27640.
-        // ASSERT(globalObject->scriptExecutionContext());
+        ASSERT(scriptExecutionContext());
     }
 };