New issue
Advanced search Search tips

Issue 614540 link

Starred by 2 users

Issue metadata

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

Blocking:
issue 529377
issue 545237



Sign in to add a comment

Coordinate SetCursor updates from multiple renderers

Project Member Reported by kenrb@chromium.org, May 24 2016

Issue description

In a discussion with rbyers@, he observed that we could receive cursor updates from different renderers out of order as a mouse cursor is dragged across frames in different processes. This could result in the 'new' cursor update being discarded as the 'old' one supersedes it. To fix this, the browser process needs to track cursor state between different renderers, similar to what is currently being done for text input state.
 

Comment 1 by kenrb@chromium.org, Jun 1 2016

Blocking: 529377

Comment 2 by kenrb@chromium.org, Jul 19 2016

Blocking: 545237

Comment 3 by creis@chromium.org, Mar 21 2017

Labels: Proj-TopDocumentIsolation-BlockingLaunch
ekaramad@ - This looks like it may have a solution similar to your IME work ... would you be able to take a look at it?
I might be able to take a look at this later. I am trying to refactor the TextInputManager to use frame focus for tracking. Maybe the result of that could be used here as well.
Project Member

Comment 6 by bugdroid1@chromium.org, Jul 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/520f29cc67770a30264d53943e52629850c32244

commit 520f29cc67770a30264d53943e52629850c32244
Author: Ken Buchanan <kenrb@chromium.org>
Date: Thu Jul 13 23:29:51 2017

Coordinate cursor updates from multiple renderers on a single page

Currently each RenderWidget sends cursor update messages independently
based on its last seen mouse position, with no awareness of other
RenderWidgets overriding the mouse cursor. This causes problem due to
race conditions where RenderWidgets in multiple renderer processes are
changing the cursor graphic as the user moves the mouse, and also
creates inconsistency because a RenderWidget does not know that a
different RenderWidget has modified the cursor.

This CL adds a CursorManager class to content, which tracks the last
cursor update received by each RenderWidgetHostView, and signals the
root RWHV to show the correct cursor for the view that the mouse is
currently over.

Bug:  614540 ,  545237 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_site_isolation
Change-Id: Id7355b69f13f9e13a5113b5f63228ddf067352ed
Reviewed-on: https://chromium-review.googlesource.com/558271
Commit-Queue: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Alex Moshchuk <alexmos@chromium.org>
Cr-Commit-Position: refs/heads/master@{#486528}
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/BUILD.gn
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/frame_host/cross_process_frame_connector.cc
[add] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/cursor_manager.cc
[add] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/cursor_manager.h
[add] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/cursor_manager_unittest.cc
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_input_event_router.cc
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_base.cc
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_base.h
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_mac.h
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/renderer_host/render_widget_host_view_mac.mm
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/browser/site_per_process_browsertest.cc
[modify] https://crrev.com/520f29cc67770a30264d53943e52629850c32244/content/test/BUILD.gn

Comment 7 by kenrb@chromium.org, Jul 14 2017

Status: Fixed (was: Assigned)

Sign in to add a comment