New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 780279 link

Starred by 2 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug

Blocked on:
issue 881574
issue 750755

Blocking:
issue 760181



Sign in to add a comment

Event routing for browser to renderer (with oopifs/webview) isn't correct for --mus

Project Member Reported by sky@chromium.org, Oct 31 2017

Issue description

My understanding of how event routing works for browser->renderer is:

. Each frame registers a mapping between FrameSinkId and RenderWidgetHostViewBase (RenderWidgetHostInputEventRouter::AddFrameSinkIdOwner).
. RenderWidgetHostInputEventRouter gets hit test data (RenderWidgetHostInputEventRouter::OnHittestData).
. Events are routed to RenderWidgetHostInputEventRouter, which uses the hit test data and FrameSinkIds to know how to route the event.

Problem is with --mus/--mash we are not correctly registering the mapping. There are early outs in a handful of places (such as RenderWidgetHostViewChildFrame and RenderWidgetHostViewAura). Additionally the browser doesn't necessarily know the real FrameSinkId, so it can't do the mapping.
 

Comment 1 by sky@chromium.org, Oct 31 2017

Blockedon: 750755
I suspect we want to continue using RenderWidgetHostInputEventRouter for mus, but we shouldn't need the hit testing part, just the bubbling/dispatching. This will largely depend upon where Ken goes with 750755.
Components: Internals>MUS

Comment 3 by sky@chromium.org, Oct 31 2017

Ken, is this work you plan on doing?

Comment 4 by kenrb@chromium.org, Nov 1 2017

Cc: -kenrb@chromium.org
Owner: kenrb@chromium.org
Status: Assigned (was: Untriaged)
I have a WIP CL to route hit test regions to the CompositorFrameSinkSupport through the browser process' content layer, and the tentative plan is to have RenderWidgetHostInputEventRouter own a viz::HitTestQuery which it will use to obtain the FrameSinkId for the target RenderWidgetHostView.

I can own this work.

Comment 5 by sky@chromium.org, Nov 1 2017

Thanks Ken!
I suspect you're going to run into a problem mapping FrameSinkIds to windows in --mash (and possibly --mus). I'm happy to help out here once you get far enough along.
Cc: jonr...@chromium.org
Blocking: 760181

Comment 8 by sky@chromium.org, Dec 8 2017

Blocking: -731255
This is no longer a blocker for 731255 as we're going with the browser assigning all FrameSinkIds, and we're going with the classic path for registering RenderWidgetHostInputEventRouter, which means it all just work for --mus now. That isn't the case for --mus=viz (or --mash) though.
Project Member

Comment 9 by bugdroid1@chromium.org, Dec 19 2017

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

commit f1677be12bc5bd2f1445fb3fd82ce3983b677cf9
Author: Ken Buchanan <kenrb@chromium.org>
Date: Tue Dec 19 22:39:26 2017

Allow RenderWidgetHostInputEventRouter to use viz hit testing

Tentative CL for using the alternative browser process hit testing path
when running with --enable-viz.

Bug: 780279
Change-Id: I314808fd8f8264168aff3ee128d7782d37525e9d
Reviewed-on: https://chromium-review.googlesource.com/817621
Commit-Queue: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: kylechar <kylechar@chromium.org>
Reviewed-by: Ria Jiang <riajiang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#525165}
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/browser_compositor_view_mac.h
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/browser_compositor_view_mac.mm
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_input_event_router.cc
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_input_event_router.h
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_aura.cc
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_aura.h
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_base.cc
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_base.h
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_mac.h
[modify] https://crrev.com/f1677be12bc5bd2f1445fb3fd82ce3983b677cf9/content/browser/renderer_host/render_widget_host_view_mac.mm

Blockedon: 805581 732399 806144
Cc: rjkroege@chromium.org
Components: Internals>Sandbox>SiteIsolation
Labels: -Pri-2 M-66 Pri-1
The integration of this and the blocking bugs should be sufficient to use Viz hit testing for M66/M67, in order to get rid of the current performance penalty of 'slow path' hit testing. That would seem to mean this is an appropriate tracking bug for that.
I thought this is specific to mus/mash? We shouldn't need this for M66/67, right? In order to perform better compared to the current scheme, we'll need this 732392 version.
Blockedon: -805581 -732399 -806144
Labels: -Pri-1 -M-66 Pri-2
You might be right. I was thinking it was going to be similar work on the content side, but there is more on this that what we need, such as switching to real FrameSinkIds. I'll file a separate bug for that then.
Components: -Internals>MUS Internals>Services>WindowService
Blockedon: 881574

Sign in to add a comment