OOPIF scroll bubbling seems to violate GestureScrollBegin/End Pairing |
|||
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.
,
Jul 29 2016
,
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
,
Aug 3 2016
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 ...
,
Aug 3 2016
Oh, and as a side effect, flinging in the sub-frame seems not to be working.
,
Nov 18 2017
kenrb@ / wjmaclean@: Does this still repro (either the original report or comment 4)? I'm curious if this can be closed.
,
Dec 6 2017
James and Ken: Friendly ping to see if this still needs attention. Thanks!
,
Dec 6 2017
This no longer reproduces, I suspect the latching/bubbling work has fixed it. |
|||
►
Sign in to add a comment |
|||
Comment 1 by wjmaclean@chromium.org
, Jul 29 2016