New issue
Advanced search Search tips

Issue 700075 link

Starred by 1 user

Issue metadata

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

Blocked on:
issue 841364



Sign in to add a comment

Mousewheel listener on scroller not in scroll chain blocks scrolls for entire page.

Project Member Reported by flackr@chromium.org, Mar 9 2017

Issue description

Chrome Version: 56.0.2924.87
OS: Linux

What steps will reproduce the problem?
(1) Visit http://output.jsbin.com/yawaloq/quiet
(2) Scroll the body.

What is the expected result?
Expect it to scroll smoothly as the body has no mousewheel listeners.

What happens instead?
Instead, it janks up every 500ms because of the wheel event listener added to the #scroller element (and the intentional main thread jank added).

This also reproduces on tip of tree 59.0.3037.0

Please use labels and text to provide additional information.

For graphics-related bugs, please copy/paste the contents of the about:gpu
page at the end of this report.

 
Cc: sahel@chromium.org
Labels: Hotlist-Input-Dev
Owner: sahel@chromium.org
Status: Assigned (was: Untriaged)
The mouse wheel events are tracked per page/frame not per individual scroller. I guess we could try tracking this per layer but I'm not sure this is worth it. flackr@ did this come up in a real world scenario?

Most of this jank will be fixed when we do async wheel events for latched scrollers. It could happen at the beginning but not during a latched scroll.
Cc: bokan@chromium.org
It came up on this nice Edge blog post about asynchronous scrolling (see the second browser comparison table). We already track element specific rects for touches right? Seems like wheel could just add to these rects.

https://blogs.windows.com/msedgedev/2017/03/08/scrolling-on-the-web/#vChtpkLbsj2PJwkr.97
The touch logic is pretty hairy. Thus far, we've been assuming we'll fix this with SPv2.
Well you'd need a separate list. You don't want to block touch start on a wheel listener. Ideally we wanted to get away from those lists and list properties on the layers themselves.

Cc: wjmaclean@chromium.org
wjmaclean@ you were mentioning something a month or so ago about doing something for wheel events for OOPIF? Could this be related?
I don't think so. My change landed March 13th on dev.

https://codereview.chromium.org/2743223003/

This change adds a nonFastScrollableRegion for the entire root-layer of the *iFrame* which does force wheels to go via the main thread, but only within the OOPIF's renderer. It wouldn't affect the remote main-frame in a multi-renderer case.

In a single-renderer case (i.e. no OOPIF) this should have no effect; and as best I can tell the page in the description doesn't create any OOPIFs, even when --site-per-process (or --top-document-isolation) is enabled.

Comment 8 by sunxd@chromium.org, Aug 1 2017

Labels: -Pri-3 Pri-2
Owner: sunxd@chromium.org

Comment 9 by sunxd@chromium.org, May 9 2018

Blockedon: 841364
Project Member

Comment 10 by bugdroid1@chromium.org, Jul 6

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

commit 3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c
Author: sunxd <sunxd@chromium.org>
Date: Fri Jul 06 22:58:43 2018

Add wheel event handler region in cc

Wheel event handlers currently make scrolling block on main thread, this
is also true even if the wheel scroll happens outside the event handler
region.

In order to make scrolling faster when the event is outside the handler,
compositor needs to store information about the regions of handlers.
This CL adds those regions to cc::Layers.

Bug: 700075
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;luci.chromium.try:android_optional_gpu_tests_rel
Change-Id: I67fc2a08dcab7a9d6cc7054f673ed90b79da70e1
Reviewed-on: https://chromium-review.googlesource.com/893432
Commit-Queue: Xianda Sun <sunxd@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Robert Flack <flackr@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#573106}
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/input/input_handler.h
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/layers/layer.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/layers/layer_impl.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/layers/layer_impl.h
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_host.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_host_impl.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_host_impl.h
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/cc/trees/layer_tree_impl.h
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/ui/events/blink/input_handler_proxy.cc
[modify] https://crrev.com/3e3a37a78aa5eb7ff2da5adae3fa44efccf5773c/ui/events/blink/input_handler_proxy_unittest.cc

Sign in to add a comment