Title: [149382] trunk
Revision
149382
Author
[email protected]
Date
2013-04-30 11:09:52 -0700 (Tue, 30 Apr 2013)

Log Message

REGRESSION(r149287): Assertion failure in fast/frames/flattening/iframe-flattening-crash.html
<http://webkit.org/b/115386>
<rdar://problem/13769995>

Reviewed by Darin Adler.

Source/WebCore:

Put the resize event on the Document's event queue if it happens while layout is in progress.
This avoids re-entering layout while laying out flattened subframes.

Also move the little logic for the resize event from EventHandler to FrameView (the only client.)

* page/EventHandler.cpp:
* page/EventHandler.h:
* page/FrameView.cpp:
(WebCore::FrameView::dispatchResizeEvent):

LayoutTests:

* platform/mac/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (149381 => 149382)


--- trunk/LayoutTests/ChangeLog	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/LayoutTests/ChangeLog	2013-04-30 18:09:52 UTC (rev 149382)
@@ -1,3 +1,13 @@
+2013-04-30  Andreas Kling  <[email protected]>
+
+        REGRESSION(r149287): Assertion failure in fast/frames/flattening/iframe-flattening-crash.html
+        <http://webkit.org/b/115386>
+        <rdar://problem/13769995>
+
+        Reviewed by Darin Adler.
+
+        * platform/mac/TestExpectations:
+
 2013-04-30  Glenn Adams  <[email protected]>
 
         The bison grammar for @supports should return 0 in case of an error

Modified: trunk/LayoutTests/platform/mac/TestExpectations (149381 => 149382)


--- trunk/LayoutTests/platform/mac/TestExpectations	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2013-04-30 18:09:52 UTC (rev 149382)
@@ -1547,6 +1547,3 @@
 webkit.org/b/115292 fast/writing-mode/japanese-ruby-vertical-rl.html
 webkit.org/b/115292 fast/writing-mode/vertical-baseline-alignment.html
 webkit.org/b/115292 fast/writing-mode/vertical-font-fallback.html
-
-# REGRESSION (r149287?): Assertion failure in fast/frames/flattening/iframe-flattening-crash.html
-webkit.org/b/115386 [ Debug ] fast/frames/flattening/iframe-flattening-crash.html [ Skip ]

Modified: trunk/Source/WebCore/ChangeLog (149381 => 149382)


--- trunk/Source/WebCore/ChangeLog	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/Source/WebCore/ChangeLog	2013-04-30 18:09:52 UTC (rev 149382)
@@ -1,3 +1,21 @@
+2013-04-30  Andreas Kling  <[email protected]>
+
+        REGRESSION(r149287): Assertion failure in fast/frames/flattening/iframe-flattening-crash.html
+        <http://webkit.org/b/115386>
+        <rdar://problem/13769995>
+
+        Reviewed by Darin Adler.
+
+        Put the resize event on the Document's event queue if it happens while layout is in progress.
+        This avoids re-entering layout while laying out flattened subframes.
+
+        Also move the little logic for the resize event from EventHandler to FrameView (the only client.)
+
+        * page/EventHandler.cpp:
+        * page/EventHandler.h:
+        * page/FrameView.cpp:
+        (WebCore::FrameView::dispatchResizeEvent):
+
 2013-04-30  Anders Carlsson  <[email protected]>
 
         Fix build.

Modified: trunk/Source/WebCore/page/EventHandler.cpp (149381 => 149382)


--- trunk/Source/WebCore/page/EventHandler.cpp	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/Source/WebCore/page/EventHandler.cpp	2013-04-30 18:09:52 UTC (rev 149382)
@@ -3784,12 +3784,6 @@
     }
 }
 
-void EventHandler::dispatchResizeEvent()
-{
-    RefPtr<Event> resizeEvent = Event::create(eventNames().resizeEvent, false, false);
-    m_frame->document()->dispatchWindowEvent(resizeEvent.release(), m_frame->document()->domWindow());
-}
-
 void EventHandler::sendScrollEvent()
 {
     setFrameWasScrolledByUser();

Modified: trunk/Source/WebCore/page/EventHandler.h (149381 => 149382)


--- trunk/Source/WebCore/page/EventHandler.h	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/Source/WebCore/page/EventHandler.h	2013-04-30 18:09:52 UTC (rev 149382)
@@ -230,7 +230,6 @@
 
     void capsLockStateMayHaveChanged(); // Only called by FrameSelection
     
-    void dispatchResizeEvent(); // Only called in FrameView
     void sendScrollEvent(); // Ditto
 
 #if PLATFORM(MAC) && defined(__OBJC__)

Modified: trunk/Source/WebCore/page/FrameView.cpp (149381 => 149382)


--- trunk/Source/WebCore/page/FrameView.cpp	2013-04-30 18:07:15 UTC (rev 149381)
+++ trunk/Source/WebCore/page/FrameView.cpp	2013-04-30 18:09:52 UTC (rev 149382)
@@ -34,6 +34,7 @@
 #include "CachedResourceLoader.h"
 #include "Chrome.h"
 #include "ChromeClient.h"
+#include "DOMWindow.h"
 #include "DocumentMarkerController.h"
 #include "EventHandler.h"
 #include "FloatRect.h"
@@ -2787,7 +2788,12 @@
 {
     ASSERT(m_frame);
 
-    m_frame->eventHandler()->dispatchResizeEvent();
+    // If we resized during layout, queue up a resize event for later, otherwise fire it right away.
+    RefPtr<Event> resizeEvent = Event::create(eventNames().resizeEvent, false, false);
+    if (isInLayout())
+        m_frame->document()->enqueueWindowEvent(resizeEvent.release());
+    else
+        m_frame->document()->dispatchWindowEvent(resizeEvent.release(), m_frame->document()->domWindow());
 
 #if ENABLE(INSPECTOR)
     if (InspectorInstrumentation::hasFrontends()) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to