Title: [181617] trunk/Source/WebCore
Revision
181617
Author
[email protected]
Date
2015-03-16 22:30:46 -0700 (Mon, 16 Mar 2015)

Log Message

Update the debug overlays after layout
https://bugs.webkit.org/show_bug.cgi?id=142768

Reviewed by Zalan Bujtas.

The debug overlays need to be updated after layout, in case elements with wheel event handlers
moved around.

DebugPageOverlays::didLayout() is cheap if there are no overlays.

Call DebugPageOverlays::didLayout() for all frames, not just the main frame, since subframes can contribute
to the main frame's event handler region.

* page/DebugPageOverlays.cpp:
(WebCore::DebugPageOverlays::regionChanged):
* page/DebugPageOverlays.h:
(WebCore::DebugPageOverlays::didLayout):
(WebCore::DebugPageOverlays::didChangeEventHandlers):
* page/FrameView.cpp:
(WebCore::FrameView::layout):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (181616 => 181617)


--- trunk/Source/WebCore/ChangeLog	2015-03-17 05:15:41 UTC (rev 181616)
+++ trunk/Source/WebCore/ChangeLog	2015-03-17 05:30:46 UTC (rev 181617)
@@ -1,3 +1,26 @@
+2015-03-16  Simon Fraser  <[email protected]>
+
+        Update the debug overlays after layout
+        https://bugs.webkit.org/show_bug.cgi?id=142768
+
+        Reviewed by Zalan Bujtas.
+
+        The debug overlays need to be updated after layout, in case elements with wheel event handlers
+        moved around.
+        
+        DebugPageOverlays::didLayout() is cheap if there are no overlays.
+        
+        Call DebugPageOverlays::didLayout() for all frames, not just the main frame, since subframes can contribute
+        to the main frame's event handler region.
+
+        * page/DebugPageOverlays.cpp:
+        (WebCore::DebugPageOverlays::regionChanged):
+        * page/DebugPageOverlays.h:
+        (WebCore::DebugPageOverlays::didLayout):
+        (WebCore::DebugPageOverlays::didChangeEventHandlers):
+        * page/FrameView.cpp:
+        (WebCore::FrameView::layout):
+
 2015-03-16  Jon Lee  <[email protected]>
 
         Unreviewed fix for crash after r181608.

Modified: trunk/Source/WebCore/page/DebugPageOverlays.cpp (181616 => 181617)


--- trunk/Source/WebCore/page/DebugPageOverlays.cpp	2015-03-17 05:15:41 UTC (rev 181616)
+++ trunk/Source/WebCore/page/DebugPageOverlays.cpp	2015-03-17 05:30:46 UTC (rev 181617)
@@ -262,9 +262,9 @@
     }
 }
 
-void DebugPageOverlays::regionChanged(MainFrame& frame, RegionType regionType)
+void DebugPageOverlays::regionChanged(Frame& frame, RegionType regionType)
 {
-    if (RegionOverlay* visualizer = regionOverlayForFrame(frame, regionType))
+    if (RegionOverlay* visualizer = regionOverlayForFrame(frame.mainFrame(), regionType))
         visualizer->recomputeRegion();
 }
 

Modified: trunk/Source/WebCore/page/DebugPageOverlays.h (181616 => 181617)


--- trunk/Source/WebCore/page/DebugPageOverlays.h	2015-03-17 05:15:41 UTC (rev 181616)
+++ trunk/Source/WebCore/page/DebugPageOverlays.h	2015-03-17 05:30:46 UTC (rev 181617)
@@ -26,6 +26,7 @@
 #ifndef DebugPageOverlays_h
 #define DebugPageOverlays_h
 
+#include "Frame.h"
 #include "Settings.h"
 #include <wtf/HashMap.h>
 #include <wtf/Vector.h>
@@ -45,7 +46,9 @@
     };
     static const unsigned NumberOfRegionTypes = NonFastScrollableRegion + 1;
 
-    static void didLayout(MainFrame&);
+    static void didLayout(Frame&);
+    static void didChangeEventHandlers(Frame&);
+
     WEBCORE_EXPORT static void settingsChanged(MainFrame&);
 
 private:
@@ -54,7 +57,7 @@
     void showRegionOverlay(MainFrame&, RegionType);
     void hideRegionOverlay(MainFrame&, RegionType);
 
-    void regionChanged(MainFrame&, RegionType);
+    void regionChanged(Frame&, RegionType);
 
     bool hasOverlaysForFrame(MainFrame& frame) const
     {
@@ -81,14 +84,22 @@
     return sharedDebugOverlays->hasOverlaysForFrame(frame);
 }
 
-inline void DebugPageOverlays::didLayout(MainFrame& frame)
+inline void DebugPageOverlays::didLayout(Frame& frame)
 {
-    FAST_RETURN_IF_NO_OVERLAYS(frame);
+    FAST_RETURN_IF_NO_OVERLAYS(frame.mainFrame());
 
     sharedDebugOverlays->regionChanged(frame, RegionType::WheelEventHandlers);
     sharedDebugOverlays->regionChanged(frame, RegionType::NonFastScrollableRegion);
 }
 
+inline void DebugPageOverlays::didChangeEventHandlers(Frame& frame)
+{
+    FAST_RETURN_IF_NO_OVERLAYS(frame.mainFrame());
+
+    sharedDebugOverlays->regionChanged(frame, RegionType::WheelEventHandlers);
+    sharedDebugOverlays->regionChanged(frame, RegionType::NonFastScrollableRegion);
 }
 
+}
+
 #endif

Modified: trunk/Source/WebCore/page/FrameView.cpp (181616 => 181617)


--- trunk/Source/WebCore/page/FrameView.cpp	2015-03-17 05:15:41 UTC (rev 181616)
+++ trunk/Source/WebCore/page/FrameView.cpp	2015-03-17 05:30:46 UTC (rev 181617)
@@ -1404,8 +1404,7 @@
     }
 
     InspectorInstrumentation::didLayout(cookie, root);
-    if (frame().isMainFrame())
-        DebugPageOverlays::didLayout(frame().mainFrame());
+    DebugPageOverlays::didLayout(frame());
 
     --m_nestedLayoutCount;
 }
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to