MouseEnter and MouseLeave event handlers do not correctly fire in OOPIFs when the mouse cursor is moved across a cross-process frame boundary. The browser process needs to be plumbed to generate these events when necessary. See discussion here: https://docs.google.com/document/d/16BfnRRzCtd5nEyTp7vTI8qbCBMFAls0EKz5s0nJ5vKc/edit?
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a12ade9d1326ecce585dda08a027d8061e9f06c6 commit a12ade9d1326ecce585dda08a027d8061e9f06c6 Author: kenrb <kenrb@chromium.org> Date: Fri Jul 29 17:06:51 2016 Refactor browser process coordinate transformation code The current Surface-based coordinate transformation methods are only useful for transforming coordinates from a child frame's coordinate space to the root's space. More flexibility is needed for delivering MouseMove events to multiple renderer processes for the sake of MouseEnter and MouseLeave event handlers. This CL reworks the exposed methods in RenderWidgetHostViewBase and DelegatedFrameHost to provide that flexibility. BUG= 632035 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation Review-Url: https://codereview.chromium.org/2184033003 Cr-Commit-Position: refs/heads/master@{#408666} [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/cc/surfaces/surface_hittest.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/cc/surfaces/surface_hittest.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/frame_host/cross_process_frame_connector.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/frame_host/cross_process_frame_connector.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/frame_host/render_widget_host_view_child_frame.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/frame_host/render_widget_host_view_child_frame.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/delegated_frame_host.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/delegated_frame_host.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_aura.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_aura.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_base.cc [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_base.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_mac.h [modify] https://crrev.com/a12ade9d1326ecce585dda08a027d8061e9f06c6/content/browser/renderer_host/render_widget_host_view_mac.mm
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/89ed0412083300318a04a2d4302a77f4d8b76cc9 commit 89ed0412083300318a04a2d4302a77f4d8b76cc9 Author: kenrb <kenrb@chromium.org> Date: Wed Sep 14 19:05:48 2016 Generate MouseEnter/MouseLeave events between processes. As the mouse cursor moves across OOPIF boundaries, elements in other processes that have certain mouse event handlers might require notification in order to fire those handlers. An example is MouseLeave, which is not currently fired when the MouseMove is directed to a parent frame. This CL tracks the last RenderWidgetHostView to receive a mouse event and sends appropriate events to other renderers when that changes. BUG= 632035 Review-Url: https://codereview.chromium.org/2229463004 Cr-Commit-Position: refs/heads/master@{#418629} [modify] https://crrev.com/89ed0412083300318a04a2d4302a77f4d8b76cc9/content/browser/renderer_host/DEPS [modify] https://crrev.com/89ed0412083300318a04a2d4302a77f4d8b76cc9/content/browser/renderer_host/render_widget_host_input_event_router.cc [modify] https://crrev.com/89ed0412083300318a04a2d4302a77f4d8b76cc9/content/browser/renderer_host/render_widget_host_input_event_router.h [modify] https://crrev.com/89ed0412083300318a04a2d4302a77f4d8b76cc9/content/browser/site_per_process_browsertest.cc
Comment 1 by kenrb@chromium.org
, Jul 27 2016