Title: [126090] trunk/Source/WebCore
Revision
126090
Author
[email protected]
Date
2012-08-20 16:43:14 -0700 (Mon, 20 Aug 2012)

Log Message

Assertion going back to results.html page from an image diff result
https://bugs.webkit.org/show_bug.cgi?id=94143

Reviewed by Adam Barth.

Avoid redundantly setting the DOMWindow on a JSDOMWindow shell in
ScriptCachedFrameData::restore(), as we may have already done this
in ScriptController::clearWindowShell(). This avoids an assertion
on some platforms when going Back to the test results page from
a diff image.

* bindings/js/ScriptCachedFrameData.cpp:
(WebCore::ScriptCachedFrameData::restore):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (126089 => 126090)


--- trunk/Source/WebCore/ChangeLog	2012-08-20 23:39:39 UTC (rev 126089)
+++ trunk/Source/WebCore/ChangeLog	2012-08-20 23:43:14 UTC (rev 126090)
@@ -1,3 +1,19 @@
+2012-08-20  Simon Fraser  <[email protected]>
+
+        Assertion going back to results.html page from an image diff result
+        https://bugs.webkit.org/show_bug.cgi?id=94143
+
+        Reviewed by Adam Barth.
+
+        Avoid redundantly setting the DOMWindow on a JSDOMWindow shell in
+        ScriptCachedFrameData::restore(), as we may have already done this
+        in ScriptController::clearWindowShell(). This avoids an assertion
+        on some platforms when going Back to the test results page from
+        a diff image.
+
+        * bindings/js/ScriptCachedFrameData.cpp:
+        (WebCore::ScriptCachedFrameData::restore):
+
 2012-08-20  Dean Jackson  <[email protected]>
 
         [WebGL] OES_vertex_array_object is not correctly un/binding or deleting

Modified: trunk/Source/WebCore/bindings/js/ScriptCachedFrameData.cpp (126089 => 126090)


--- trunk/Source/WebCore/bindings/js/ScriptCachedFrameData.cpp	2012-08-20 23:39:39 UTC (rev 126089)
+++ trunk/Source/WebCore/bindings/js/ScriptCachedFrameData.cpp	2012-08-20 23:43:14 UTC (rev 126090)
@@ -80,8 +80,12 @@
         if (JSDOMWindow* window = m_windows.get(world).get())
             windowShell->setWindow(window->globalData(), window);
         else {
-            windowShell->setWindow(frame->document()->domWindow());
+            DOMWindow* domWindow = frame->document()->domWindow();
+            if (windowShell->window()->impl() == domWindow)
+                continue;
 
+            windowShell->setWindow(domWindow);
+
             if (Page* page = frame->page()) {
                 scriptController->attachDebugger(windowShell, page->debugger());
                 windowShell->window()->setProfileGroup(page->group().identifier());
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to