Title: [149435] trunk/Source/WebCore
Revision
149435
Author
akl...@apple.com
Date
2013-05-01 09:55:59 -0700 (Wed, 01 May 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 Antti Koivisto.

Only send synchronous resize events for the main frame. Subframes change size during layout,
so it never really makes sense for them to use synchronous dispatch anyway.

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

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (149434 => 149435)


--- trunk/Source/WebCore/ChangeLog	2013-05-01 15:47:16 UTC (rev 149434)
+++ trunk/Source/WebCore/ChangeLog	2013-05-01 16:55:59 UTC (rev 149435)
@@ -1,3 +1,17 @@
+2013-05-01  Andreas Kling  <akl...@apple.com>
+
+        REGRESSION(r149287): Assertion failure in fast/frames/flattening/iframe-flattening-crash.html
+        <http://webkit.org/b/115386>
+        <rdar://problem/13769995>
+
+        Reviewed by Antti Koivisto.
+
+        Only send synchronous resize events for the main frame. Subframes change size during layout,
+        so it never really makes sense for them to use synchronous dispatch anyway.
+
+        * page/FrameView.cpp:
+        (WebCore::FrameView::dispatchResizeEvent):
+
 2013-05-01  Csaba Osztrogonác  <o...@webkit.org>
 
         Unreviewed trivial buildfix after r149432.

Modified: trunk/Source/WebCore/page/FrameView.cpp (149434 => 149435)


--- trunk/Source/WebCore/page/FrameView.cpp	2013-05-01 15:47:16 UTC (rev 149434)
+++ trunk/Source/WebCore/page/FrameView.cpp	2013-05-01 16:55:59 UTC (rev 149435)
@@ -2788,21 +2788,21 @@
 {
     ASSERT(m_frame);
 
+    Page* page = m_frame->page();
+    bool isMainFrame = page && page->mainFrame() == m_frame;
+    bool canSendResizeEventSynchronously = isMainFrame && !isInLayout();
+
     // 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())
+    if (canSendResizeEventSynchronously)
+        m_frame->document()->dispatchWindowEvent(resizeEvent.release(), m_frame->document()->domWindow());
+    else
         m_frame->document()->enqueueWindowEvent(resizeEvent.release());
-    else
-        m_frame->document()->dispatchWindowEvent(resizeEvent.release(), m_frame->document()->domWindow());
 
 #if ENABLE(INSPECTOR)
-    if (InspectorInstrumentation::hasFrontends()) {
-        if (Page* page = m_frame->page()) {
-            if (page->mainFrame() == m_frame) {
-                if (InspectorClient* inspectorClient = page->inspectorController()->inspectorClient())
-                    inspectorClient->didResizeMainFrame(m_frame.get());
-            }
-        }
+    if (InspectorInstrumentation::hasFrontends() && isMainFrame) {
+        if (InspectorClient* inspectorClient = page ? page->inspectorController()->inspectorClient() : 0)
+            inspectorClient->didResizeMainFrame(m_frame.get());
     }
 #endif
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to