New issue
Advanced search Search tips

Issue 771409 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows , Mac
Pri: 2
Type: Bug



Sign in to add a comment

Wheel scroll latching breaks some virtual list implementation

Reported by albertx...@slack-corp.com, Oct 3 2017

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3231.0 Safari/537.36

Example URL:
http://jsfiddle.net/TXZJY/6/

Steps to reproduce the problem:
1. Open the JSFiddle linked above
2. Fling scroll on the pink elements

What is the expected behavior?
Inertial scrolling should activate, and scrolling should be smooth

What went wrong?
Scrolling stops abruptly when latched element is removed from the DOM

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? Yes Before 62.0.3197.0

Does this work in other browsers? Yes

Chrome version: 63.0.3231.0  Channel: canary
OS Version: OS X 10.12.6
Flash Version: 

I believe this is an unintended side effect from: r497483 "Wheel scroll latching and async wheel events flags enabled in testing config"

Please see related issues  770678  (recent, also related to scroll latching) and 312427 (old, for which mousewheel scroll latching was originally removed)
 
Labels: Needs-Triage-M63 Needs-Bisect
Cc: sahel@chromium.org pnangunoori@chromium.org
Components: Blink>Scroll
Labels: -Needs-Bisect OS-Windows
Status: Untriaged (was: Unconfirmed)
Able to reproduce this issue on Mac 10.12.6 and Windows-10 using chrome latest canary #63.0.3232.0 and reported #63.0.3231.0 by following test case provided in the comment #0, but unable to reproduce the same on equivalent signed build #63.0.3232.0. Attached the screencast for reference.

sahel@ As it seems to be similar to the  Issue 770678 , could you please take a look into this issue? If it's not related to your change please feel free to reassign to the concerned dev.

Note: Unable to reproduce on Ubuntu 14.04.

Thanks! 
771409.mov
14.2 MB Download

Comment 3 by sahel@chromium.org, Oct 4 2017

Cc: bokan@chromium.org
Cc: dtapu...@chromium.org
Labels: Hotlist-Input-Dev
Owner: sahel@chromium.org
Status: Assigned (was: Untriaged)
Components: -Blink

Comment 6 by sahel@chromium.org, Oct 5 2017

Status: Started (was: Assigned)
 I couldn't reproduce the bug locally, pnangunoori@, could you please send the variation list of the canary build? and/or please try to reproduce it by --disable-features=TouchpadAndWheelScrollLatching,AsyncWheelEvents for disabling both latching and async and disable-features=AsyncWheelEvents for disabling async only.
@sahel -- Earlier Canary builds will not be available to us. So, we try to use equivalent signed builds. But, the issue is observed only on Canary builds but not on equivalent signed builds.

Tested again on latest Canary #63.0.3233.0 and able to reproduce the issue. Other observations are:
By disabling both latching and async - Issue is not reproduced.
By disabling async - Issue is reproduced.

Please refer the attached screencasts.

Thanks!
771409-AsyncDisable.mp4
1.2 MB View Download
771409-Latching&AsyncDisable.mp4
3.6 MB View Download
Hi, actually it is started on :
Version 61.0.3163.100 (Official Build) (64-bit)

Project Member

Comment 10 by bugdroid1@chromium.org, Oct 20 2017

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

commit 209d2454442b33a913b53a902c0646062fa25bcc
Author: Sahel Sharify <sahel@chromium.org>
Date: Fri Oct 20 16:56:50 2017

Scrolling a new node when the latched node is removed.

When the currently scrolling element gets removed, scrolling should
continue with scrolling the next element even when scroll latching is
enabled. This behavior is consistent with what both Safari and Firefox
browsers do.

This cl fixes the issue for both wheel and touch scrolling:
When the latched element gets deleted in the middle of a scrolling
sequence on main thread side, handling a synthetic GSB causes a new
hittest to continue scrolling on a different element. Scrolling on the
compositor side was already working for non-animated wheel scrolling
since deleting the scrolling node forces the rest of the scrolling to
be handled on main thread side. Before handling the rest of the GSUs
in main thread side,a GSB gets sent to the main thread side to cause
a hittesting. This cl adds transferring to the main thread side for
touch scrolling as well.
ScrollAnimation path for wheel scrolling is also changed to re-latch
when the latched scrolling node gets deleted in the middle of scrolling. 

InputHandlerProxyTest.(Wheel/Touch)ScrollHandlingSwitchedToMainThread,
WheelScrollLatchingBrowserTest.WheelScrollingRelatchWhenLatchedScrollerRemoved

Bug:  771409 , 773986 
Test: virtual/wheelscrolllatching/latched-scroll-node-removed.html,
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I24630a101a184fcd6a8480c553074808ffea6a35
Reviewed-on: https://chromium-review.googlesource.com/709658
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: weiliangc <weiliangc@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Commit-Queue: Sahel Sharifymoghaddam <sahel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510468}
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/content/browser/renderer_host/input/wheel_scroll_latching_browsertest.cc
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/third_party/WebKit/LayoutTests/fast/events/wheel/latched-scroll-node-removed.html
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/third_party/WebKit/Source/core/input/ScrollManager.cpp
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/third_party/WebKit/Source/core/input/ScrollManager.h
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/209d2454442b33a913b53a902c0646062fa25bcc/ui/events/blink/input_handler_proxy_unittest.cc

Comment 11 by sahel@chromium.org, Oct 20 2017

Status: Fixed (was: Started)

Sign in to add a comment