New issue
Advanced search Search tips

Issue 632035 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug

Blocking:
issue 529377
issue 638364



Sign in to add a comment

Implement MouseEnter/MouseLeave events for OOPIF

Project Member Reported by kenrb@chromium.org, Jul 27 2016

Issue description

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?
 

Comment 1 by kenrb@chromium.org, Jul 27 2016

Blocking: 529377
Project Member

Comment 2 by bugdroid1@chromium.org, Jul 29 2016

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

Comment 3 by kenrb@chromium.org, Aug 16 2016

Blocking: 638364
Project Member

Comment 4 by bugdroid1@chromium.org, Sep 14 2016

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 5 by kenrb@chromium.org, Sep 26 2016

Status: Fixed (was: Started)

Sign in to add a comment