New issue
Advanced search Search tips

Issue 631135 link

Starred by 2 users

Issue metadata

Status: WontFix
Owner:
Closed: Dec 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Chrome
Pri: 1
Type: Bug

Blocking:
issue 627926



Sign in to add a comment

OOPIF scroll bubbling seems to violate GestureScrollBegin/End Pairing

Project Member Reported by wjmaclean@chromium.org, Jul 25 2016

Issue description

Chrome Linux: 54.0.2807.0 master@{#407465}
Note: may occur on other builds, I haven't tested yet.

1. Use a DCHECK enabled build.
2. Open chrome with --site-per-process
3. Open a page with a cross-process subframe.
4. Alternate between touchscreen scrolling the subframe and touchscreen scrolling the main frame. When scrolling the subframe, try to hit the end limits so that scroll bubbles

Expected behaviour:

Both frames should scroll (or not scroll) as expected.

What is observed:

Occasionally the scroll on the mainframe hits the following DCHECK:

render_widget_host_impl.cc(1011)] Check failed: !(*is_in_gesture_scroll).

Comments:

I'm currently seeing this on T.o.T. master@{#407465}

Putting in some diagnostic printfs suggests that sometimes the main frame is getting multiple GestureScrollBegins back to back. I've also observed multiple GestureScrollEnds being sent to the same frame.

I'm guessing the logic for inserting extra GestureScrollBegins and Ends in OOPIF scroll bubbling is missing something here?

Not sure yet if this also affects touchpad scroll.
 
Blocking: 627926

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

Cc: -kenrb@chromium.org
Owner: kenrb@chromium.org
Status: Started (was: Untriaged)
Project Member

Comment 3 by bugdroid1@chromium.org, Aug 2 2016

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

commit 7b0c6f8719ccd5a23cf551b9413d7554673cb802
Author: kenrb <kenrb@chromium.org>
Date: Tue Aug 02 20:03:34 2016

Cancel browser process scroll bubbling when new gestures start

There are known issues with scroll bubbling causing a
RenderWidgetHostImpl to receive multiple GestureScrollBegin events
without seeing a GestureScrollEnd in between. This CL tightens up the
conditions during which inter-process scroll bubbling can occur to
prevent that situation.

BUG= 631135 ,  627238 

Review-Url: https://codereview.chromium.org/2193033003
Cr-Commit-Position: refs/heads/master@{#409289}

[modify] https://crrev.com/7b0c6f8719ccd5a23cf551b9413d7554673cb802/content/browser/renderer_host/render_widget_host_input_event_router.cc
[modify] https://crrev.com/7b0c6f8719ccd5a23cf551b9413d7554673cb802/content/browser/site_per_process_browsertest.cc

I was testing again this morning in preparation for landing the gesture pinch work, and found something else. Repro steps:

1) Open page with cross-origin subframe & --site-per-process
2) Touchscreen scroll the subframe, and flick finger at end to induce a fling
3) Then, attempt to touchscreen scroll the main frame.

This pattern seems to induce a DCHECK on RenderWidgetHostInputEventRouter::SendGestureScrollEnd() since the event passed into the function is not a GestureScrollUpdate but rather a FlingStart ...
Oh, and as a side effect, flinging in the sub-frame seems not to be working.

Comment 6 by creis@chromium.org, Nov 18 2017

kenrb@ / wjmaclean@: Does this still repro (either the original report or comment 4)?  I'm curious if this can be closed.

Comment 7 by creis@chromium.org, Dec 6 2017

James and Ken: Friendly ping to see if this still needs attention.  Thanks!
Status: WontFix (was: Started)
This no longer reproduces, I suspect the latching/bubbling work has fixed it.

Sign in to add a comment