Title: [261382] trunk
Revision
261382
Author
[email protected]
Date
2020-05-08 08:02:23 -0700 (Fri, 08 May 2020)

Log Message

Overflow scrollers in iframes don't get mouseMovedInContentArea()
https://bugs.webkit.org/show_bug.cgi?id=211347
<rdar://problem/62784560>

Reviewed by Tim Horton.

Source/WebCore:

We never dispatched mouseMovedInContentArea() on ScrollableAreas in subframes, so overlay scrollbar
interactions there were broken. This is because the code ran from EventHandler::mouseMoved(), which
only runs for the main frame.

Instead, move the mouseMovedInContentArea() dispatch down into updateMouseEventTargetNode() which
is run for each subframe. notifyScrollableAreasOfMouseEvents() takes an event name so we only dispatch
for mouseMove events. There's some complexity here related to whether the old and new ScrollableArea
targets are nested; this code doesn't try to do the right thing with nesting, but does handle the mouse
moving between the scrollable main frame and an overflow region.

enclosingScrollableArea() is fixed to return the FrameView. enclosingScrollableLayer() is flawed, as noted
in the RenderLayer.h comment.

Tests: fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html
       fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html

* page/EventHandler.cpp:
(WebCore::EventHandler::enclosingScrollableArea):
(WebCore::EventHandler::mouseMoved):
(WebCore::EventHandler::handleMouseMoveEvent):
(WebCore::EventHandler::pointerCaptureElementDidChange):
(WebCore::EventHandler::updateMouseEventTargetNode):
(WebCore::EventHandler::notifyScrollableAreasOfMouseEvents):
(WebCore::EventHandler::dispatchMouseEvent):
(WebCore::enclosingScrollableArea): Deleted.
(WebCore::EventHandler::notifyScrollableAreasOfMouseEnterExit): Deleted.
* page/EventHandler.h:
* page/ios/EventHandlerIOS.mm:
(WebCore::EventHandler::dispatchSyntheticMouseOut):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::debugDescription const):
* rendering/RenderLayer.h:

LayoutTests:

The ordering of callbacks in the scroll-animator tests changed, but in ways that don't materially
affect behavior. Two new real overlay scrollbar tests.

* fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered-expected.txt: Added.
* fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html: Added.
* fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal-expected.txt: Added.
* fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html: Added.
* fast/scrolling/scroll-animator-basic-events-expected.txt:
* fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt:
* fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt:
* fast/scrolling/scroll-animator-select-list-events-expected.txt:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (261381 => 261382)


--- trunk/LayoutTests/ChangeLog	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/ChangeLog	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,3 +1,23 @@
+2020-05-08  Simon Fraser  <[email protected]>
+
+        Overflow scrollers in iframes don't get mouseMovedInContentArea()
+        https://bugs.webkit.org/show_bug.cgi?id=211347
+        <rdar://problem/62784560>
+
+        Reviewed by Tim Horton.
+
+        The ordering of callbacks in the scroll-animator tests changed, but in ways that don't materially
+        affect behavior. Two new real overlay scrollbar tests.
+
+        * fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered-expected.txt: Added.
+        * fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html: Added.
+        * fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal-expected.txt: Added.
+        * fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html: Added.
+        * fast/scrolling/scroll-animator-basic-events-expected.txt:
+        * fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt:
+        * fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt:
+        * fast/scrolling/scroll-animator-select-list-events-expected.txt:
+
 2020-05-08  Jason Lawrence  <[email protected]>
 
         Flaky Test: media/track/track-in-band-metadata-display-order.html

Modified: trunk/LayoutTests/fast/scrolling/scroll-animator-basic-events-expected.txt (261381 => 261382)


--- trunk/LayoutTests/fast/scrolling/scroll-animator-basic-events-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/fast/scrolling/scroll-animator-basic-events-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,16 +1,14 @@
 CONSOLE MESSAGE: MainFrameView: mouseEnteredContentArea
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderLayer: mouseEnteredContentArea
-CONSOLE MESSAGE: RenderLayer: mouseMovedInContentArea
+CONSOLE MESSAGE: RenderLayer: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
-CONSOLE MESSAGE: RenderLayer: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: RenderLayer: mouseMovedInContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderLayer: mouseIsDownInVerticalScrollbar
 CONSOLE MESSAGE: RenderLayer: mouseIsUpInVerticalScrollbar
 CONSOLE MESSAGE: RenderLayer: mouseExitedVerticalScrollbar
+CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderLayer: mouseExitedContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 This is a scrollable div.
 
 PASS successfullyParsed is true

Modified: trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt (261381 => 261382)


--- trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-clicked-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,8 +1,7 @@
 CONSOLE MESSAGE: MainFrameView: mouseEnteredContentArea
+CONSOLE MESSAGE: MainFrameView: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
-CONSOLE MESSAGE: MainFrameView: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: FrameView: mouseEnteredContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: MainFrameView: mouseIsDownInVerticalScrollbar
 CONSOLE MESSAGE: MainFrameView: mouseIsUpInVerticalScrollbar
 CONSOLE MESSAGE: MainFrameView: mouseExitedVerticalScrollbar

Modified: trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt (261381 => 261382)


--- trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/fast/scrolling/scroll-animator-overlay-scrollbars-hovered-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -2,7 +2,6 @@
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: FrameView: mouseEnteredHorizontalScrollbar
 CONSOLE MESSAGE: FrameView: mouseEnteredContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: FrameView: mouseExitedHorizontalScrollbar
 CONSOLE MESSAGE: FrameView: mouseExitedContentArea
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea

Modified: trunk/LayoutTests/fast/scrolling/scroll-animator-select-list-events-expected.txt (261381 => 261382)


--- trunk/LayoutTests/fast/scrolling/scroll-animator-select-list-events-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/fast/scrolling/scroll-animator-select-list-events-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,16 +1,14 @@
 CONSOLE MESSAGE: MainFrameView: mouseEnteredContentArea
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderListBox: mouseEnteredContentArea
-CONSOLE MESSAGE: RenderListBox: mouseMovedInContentArea
+CONSOLE MESSAGE: RenderListBox: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
-CONSOLE MESSAGE: RenderListBox: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: RenderListBox: mouseMovedInContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderListBox: mouseIsDownInVerticalScrollbar
 CONSOLE MESSAGE: RenderListBox: mouseIsUpInVerticalScrollbar
 CONSOLE MESSAGE: RenderListBox: mouseExitedVerticalScrollbar
+CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderListBox: mouseExitedContentArea
-CONSOLE MESSAGE: MainFrameView: mouseMovedInContentArea
 Test for https://bugs.webkit.org/show_bug.cgi?id=153398.
 
 

Modified: trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-basic-events-expected.txt (261381 => 261382)


--- trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-basic-events-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-basic-events-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,5 +1,4 @@
 CONSOLE MESSAGE: RenderLayer: mouseEnteredContentArea
-CONSOLE MESSAGE: RenderLayer: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderLayer: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: RenderLayer: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderLayer: mouseIsDownInVerticalScrollbar

Modified: trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-select-list-events-expected.txt (261381 => 261382)


--- trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-select-list-events-expected.txt	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/LayoutTests/platform/mac-wk1/fast/scrolling/scroll-animator-select-list-events-expected.txt	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,5 +1,4 @@
 CONSOLE MESSAGE: RenderListBox: mouseEnteredContentArea
-CONSOLE MESSAGE: RenderListBox: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderListBox: mouseEnteredVerticalScrollbar
 CONSOLE MESSAGE: RenderListBox: mouseMovedInContentArea
 CONSOLE MESSAGE: RenderListBox: mouseIsDownInVerticalScrollbar

Modified: trunk/Source/WebCore/ChangeLog (261381 => 261382)


--- trunk/Source/WebCore/ChangeLog	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/ChangeLog	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1,3 +1,44 @@
+2020-05-08  Simon Fraser  <[email protected]>
+
+        Overflow scrollers in iframes don't get mouseMovedInContentArea()
+        https://bugs.webkit.org/show_bug.cgi?id=211347
+        <rdar://problem/62784560>
+
+        Reviewed by Tim Horton.
+
+        We never dispatched mouseMovedInContentArea() on ScrollableAreas in subframes, so overlay scrollbar
+        interactions there were broken. This is because the code ran from EventHandler::mouseMoved(), which
+        only runs for the main frame.
+
+        Instead, move the mouseMovedInContentArea() dispatch down into updateMouseEventTargetNode() which
+        is run for each subframe. notifyScrollableAreasOfMouseEvents() takes an event name so we only dispatch
+        for mouseMove events. There's some complexity here related to whether the old and new ScrollableArea
+        targets are nested; this code doesn't try to do the right thing with nesting, but does handle the mouse
+        moving between the scrollable main frame and an overflow region.
+        
+        enclosingScrollableArea() is fixed to return the FrameView. enclosingScrollableLayer() is flawed, as noted
+        in the RenderLayer.h comment.
+
+        Tests: fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-hovered.html
+               fast/scrolling/mac/scrollbars/overflow-in-iframe-overlay-scrollbar-reveal.html
+
+        * page/EventHandler.cpp:
+        (WebCore::EventHandler::enclosingScrollableArea):
+        (WebCore::EventHandler::mouseMoved):
+        (WebCore::EventHandler::handleMouseMoveEvent):
+        (WebCore::EventHandler::pointerCaptureElementDidChange):
+        (WebCore::EventHandler::updateMouseEventTargetNode):
+        (WebCore::EventHandler::notifyScrollableAreasOfMouseEvents):
+        (WebCore::EventHandler::dispatchMouseEvent):
+        (WebCore::enclosingScrollableArea): Deleted.
+        (WebCore::EventHandler::notifyScrollableAreasOfMouseEnterExit): Deleted.
+        * page/EventHandler.h:
+        * page/ios/EventHandlerIOS.mm:
+        (WebCore::EventHandler::dispatchSyntheticMouseOut):
+        * rendering/RenderLayer.cpp:
+        (WebCore::RenderLayer::debugDescription const):
+        * rendering/RenderLayer.h:
+
 2020-05-08  Zalan Bujtas  <[email protected]>
 
         [LFC][TFC] The fixed logical width should be used as the max width for a cell

Modified: trunk/Source/WebCore/page/EventHandler.cpp (261381 => 261382)


--- trunk/Source/WebCore/page/EventHandler.cpp	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/page/EventHandler.cpp	2020-05-08 15:02:23 UTC (rev 261382)
@@ -1900,12 +1900,15 @@
     return swallowMouseUpEvent || swallowClickEvent || swallowMouseReleaseEvent;
 }
 
-static ScrollableArea* enclosingScrollableArea(Node* node)
+ScrollableArea* EventHandler::enclosingScrollableArea(Node* node)
 {
     for (auto ancestor = node; ancestor; ancestor = ancestor->parentOrShadowHostNode()) {
-        if (is<HTMLIFrameElement>(*ancestor) || is<HTMLHtmlElement>(*ancestor) || is<HTMLDocument>(*ancestor))
+        if (is<HTMLIFrameElement>(*ancestor))
             return nullptr;
 
+        if (is<HTMLHtmlElement>(*ancestor) || is<HTMLDocument>(*ancestor))
+            break;
+
         auto renderer = ancestor->renderer();
         if (!renderer)
             continue;
@@ -1920,10 +1923,13 @@
         if (!layer)
             return nullptr;
 
-        return layer->enclosingScrollableLayer(IncludeSelfOrNot::IncludeSelf, CrossFrameBoundaries::No);
+        if (auto* scrollableLayer = layer->enclosingScrollableLayer(IncludeSelfOrNot::IncludeSelf, CrossFrameBoundaries::No)) {
+            if (!scrollableLayer->isRenderViewLayer())
+                return scrollableLayer;
+        }
     }
 
-    return nullptr;
+    return m_frame.view();
 }
 
 bool EventHandler::mouseMoved(const PlatformMouseEvent& event)
@@ -1942,16 +1948,6 @@
     if (!page)
         return result;
 
-    if (auto scrolledArea = enclosingScrollableArea(hitTestResult.innerNode())) {
-        if (FrameView* frameView = m_frame.view()) {
-            if (frameView->containsScrollableArea(scrolledArea))
-                scrolledArea->mouseMovedInContentArea();
-        }
-    }
-
-    if (FrameView* frameView = m_frame.view())
-        frameView->mouseMovedInContentArea();  
-
     hitTestResult.setToNonUserAgentShadowAncestor();
     page->chrome().mouseDidMoveOverElement(hitTestResult, event.modifierFlags());
     return result;
@@ -2043,7 +2039,7 @@
 #endif
         if (onlyUpdateScrollbars) {
             if (shouldSendMouseEventsToInactiveWindows())
-                updateMouseEventTargetNode(mouseEvent.targetNode(), platformMouseEvent, FireMouseOverOut::Yes);
+                updateMouseEventTargetNode(eventNames().mousemoveEvent, mouseEvent.targetNode(), platformMouseEvent, FireMouseOverOut::Yes);
 
             return true;
         }
@@ -2058,7 +2054,7 @@
 
     if (newSubframe) {
         // Update over/out state before passing the event to the subframe.
-        updateMouseEventTargetNode(mouseEvent.targetNode(), platformMouseEvent, FireMouseOverOut::Yes);
+        updateMouseEventTargetNode(eventNames().mousemoveEvent, mouseEvent.targetNode(), platformMouseEvent, FireMouseOverOut::Yes);
         
         // Event dispatch in updateMouseEventTargetNode may have caused the subframe of the target
         // node to be detached from its FrameView, in which case the event should not be passed.
@@ -2545,7 +2541,7 @@
     setCapturingMouseEventsElement(element);
 
     // Now that we have a new capture element, we need to dispatch boundary mouse events.
-    updateMouseEventTargetNode(element, m_lastPlatformMouseEvent, FireMouseOverOut::Yes);
+    updateMouseEventTargetNode(eventNames().gotpointercaptureEvent, element, m_lastPlatformMouseEvent, FireMouseOverOut::Yes);
 }
 
 MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestRequest& request, const PlatformMouseEvent& mouseEvent)
@@ -2565,7 +2561,7 @@
     return false;
 }
 
-void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMouseEvent& platformMouseEvent, FireMouseOverOut fireMouseOverOut)
+void EventHandler::updateMouseEventTargetNode(const AtomString& eventType, Node* targetNode, const PlatformMouseEvent& platformMouseEvent, FireMouseOverOut fireMouseOverOut)
 {
     Ref<Frame> protectedFrame(m_frame);
     Element* targetElement = nullptr;
@@ -2587,7 +2583,7 @@
 
     // Fire mouseout/mouseover if the mouse has shifted to a different node.
     if (fireMouseOverOut == FireMouseOverOut::Yes) {
-        notifyScrollableAreasOfMouseEnterExit(m_lastElementUnderMouse.get(), m_elementUnderMouse.get());
+        notifyScrollableAreasOfMouseEvents(eventType, m_lastElementUnderMouse.get(), m_elementUnderMouse.get());
 
         if (m_lastElementUnderMouse && &m_lastElementUnderMouse->document() != m_frame.document()) {
             m_lastElementUnderMouse = nullptr;
@@ -2644,7 +2640,7 @@
     }
 }
 
-void EventHandler::notifyScrollableAreasOfMouseEnterExit(Element* lastElementUnderMouse, Element* elementUnderMouse)
+void EventHandler::notifyScrollableAreasOfMouseEvents(const AtomString& eventType, Element* lastElementUnderMouse, Element* elementUnderMouse)
 {
     auto* frameView = m_frame.view();
     if (!frameView)
@@ -2655,24 +2651,41 @@
 
     if (!!lastElementUnderMouse != !!elementUnderMouse) {
         if (elementUnderMouse) {
-            frameView->mouseEnteredContentArea();
+            if (scrollableAreaForNodeUnderMouse != frameView)
+                frameView->mouseEnteredContentArea();
+
             if (scrollableAreaForNodeUnderMouse)
                 scrollableAreaForNodeUnderMouse->mouseEnteredContentArea();
         } else {
             if (scrollableAreaForLastNode)
                 scrollableAreaForLastNode->mouseExitedContentArea();
-            frameView->mouseExitedContentArea();
+
+            if (scrollableAreaForLastNode != frameView)
+                frameView->mouseExitedContentArea();
         }
         return;
     }
-    
-    if ((!scrollableAreaForLastNode && !scrollableAreaForNodeUnderMouse) || scrollableAreaForLastNode == scrollableAreaForNodeUnderMouse)
+
+    if (!scrollableAreaForLastNode && !scrollableAreaForNodeUnderMouse)
         return;
 
-    if (scrollableAreaForLastNode)
+    // FIXME: This does doesn't handle nested ScrollableAreas well. It really needs to know
+    // the hierarchical relationship between scrollableAreaForLastNode and scrollableAreaForNodeUnderMouse.
+    bool movedBetweenScrollableaAreas = scrollableAreaForLastNode && scrollableAreaForNodeUnderMouse && (scrollableAreaForLastNode != scrollableAreaForNodeUnderMouse);
+    if (eventType == eventNames().mousemoveEvent) {
+        frameView->mouseMovedInContentArea();
+
+        if (!movedBetweenScrollableaAreas && scrollableAreaForNodeUnderMouse && scrollableAreaForNodeUnderMouse != frameView)
+            scrollableAreaForNodeUnderMouse->mouseMovedInContentArea();
+    }
+
+    if (!movedBetweenScrollableaAreas)
+        return;
+
+    if (scrollableAreaForLastNode && scrollableAreaForLastNode != frameView)
         scrollableAreaForLastNode->mouseExitedContentArea();
 
-    if (scrollableAreaForNodeUnderMouse)
+    if (scrollableAreaForNodeUnderMouse && scrollableAreaForNodeUnderMouse != frameView)
         scrollableAreaForNodeUnderMouse->mouseEnteredContentArea();
 }
 
@@ -2693,7 +2706,7 @@
 {
     Ref<Frame> protectedFrame(m_frame);
 
-    updateMouseEventTargetNode(targetNode, platformMouseEvent, fireMouseOverOut);
+    updateMouseEventTargetNode(eventType, targetNode, platformMouseEvent, fireMouseOverOut);
 
     if (m_elementUnderMouse && !m_elementUnderMouse->dispatchMouseEvent(platformMouseEvent, eventType, clickCount))
         return false;

Modified: trunk/Source/WebCore/page/EventHandler.h (261381 => 261382)


--- trunk/Source/WebCore/page/EventHandler.h	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/page/EventHandler.h	2020-05-08 15:02:23 UTC (rev 261382)
@@ -404,9 +404,10 @@
     Node* nodeUnderMouse() const;
     
     enum class FireMouseOverOut { No, Yes };
-    void updateMouseEventTargetNode(Node*, const PlatformMouseEvent&, FireMouseOverOut);
+    void updateMouseEventTargetNode(const AtomString& eventType, Node*, const PlatformMouseEvent&, FireMouseOverOut);
 
-    void notifyScrollableAreasOfMouseEnterExit(Element* lastElementUnderMouse, Element* elementUnderMouse);
+    ScrollableArea* enclosingScrollableArea(Node*);
+    void notifyScrollableAreasOfMouseEvents(const AtomString& eventType, Element* lastElementUnderMouse, Element* elementUnderMouse);
 
     MouseEventWithHitTestResults prepareMouseEvent(const HitTestRequest&, const PlatformMouseEvent&);
 

Modified: trunk/Source/WebCore/page/ios/EventHandlerIOS.mm (261381 => 261382)


--- trunk/Source/WebCore/page/ios/EventHandlerIOS.mm	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/page/ios/EventHandlerIOS.mm	2020-05-08 15:02:23 UTC (rev 261382)
@@ -35,6 +35,7 @@
 #import "ContentChangeObserver.h"
 #import "DataTransfer.h"
 #import "DragState.h"
+#import "EventNames.h"
 #import "FocusController.h"
 #import "Frame.h"
 #import "FrameView.h"
@@ -525,7 +526,7 @@
 
 void EventHandler::dispatchSyntheticMouseOut(const PlatformMouseEvent& platformMouseEvent)
 {
-    updateMouseEventTargetNode(nullptr, platformMouseEvent, FireMouseOverOut::Yes);
+    updateMouseEventTargetNode(eventNames().mouseoutEvent, nullptr, platformMouseEvent, FireMouseOverOut::Yes);
 }
 
 void EventHandler::dispatchSyntheticMouseMove(const PlatformMouseEvent& platformMouseEvent)

Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (261381 => 261382)


--- trunk/Source/WebCore/rendering/RenderLayer.cpp	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp	2020-05-08 15:02:23 UTC (rev 261382)
@@ -3639,7 +3639,7 @@
     if (isComposited()) {
         // Oh for better StringBuilder/TextStream integration.
         TextStream stream;
-        stream << *backing();
+        stream << " " << *backing();
         builder.append(stream.release());
     }
 

Modified: trunk/Source/WebCore/rendering/RenderLayer.h (261381 => 261382)


--- trunk/Source/WebCore/rendering/RenderLayer.h	2020-05-08 14:24:45 UTC (rev 261381)
+++ trunk/Source/WebCore/rendering/RenderLayer.h	2020-05-08 15:02:23 UTC (rev 261382)
@@ -462,6 +462,7 @@
     void applyPostLayoutScrollPositionIfNeeded();
 
     // Returns the nearest enclosing layer that is scrollable.
+    // FIXME: This can return the RenderView's layer when callers probably want the FrameView as a ScrollableArea.
     RenderLayer* enclosingScrollableLayer(IncludeSelfOrNot, CrossFrameBoundaries) const;
 
     void availableContentSizeChanged(AvailableSizeChangeReason) final;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to