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

Issue 641226 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Bug



Sign in to add a comment

Touch pad scrolling becomes stuck when scrolling filtered layer

Project Member Reported by esprehn@chromium.org, Aug 26 2016

Issue description

Google Chrome	54.0.2839.0 (Official Build) canary (64-bit)
Revision	911ba12253b14bfe874a321c57031f5ac534ce31-refs/heads/master@{#414243}
OS	Mac OS X 

This is on my Retina MBP.

What steps will reproduce the problem?
(1) Put your mouse anywhere in the red box.
(2) Fling downward.
(3) Notice you're stuck only a little bit scrolled down.
(4) Fling up or down, notice the page bounces and you can't scroll.
(5) Grab the scroll thumb on the right and scroll up and down.

What is the expected output?

Scroll position should not get trapped.
 
scroll-stuck.html
566 bytes View Download

Comment 1 by skobes@chromium.org, Aug 26 2016

Cc: -skobes@chromium.org
Owner: skobes@chromium.org
Status: Started (was: Untriaged)
Notes:

- affects any platform with high DPI or --enable-prefer-compositing-to-lcd-text
- not touchpad-specific, repros with mouse wheel too
- goes away if you set will-change: transform on .container
- goes away with --disable-threaded-scrolling

Possibly some inconsistent compositing state or incorrect cc::Layer::Inputs::non_fast_scrollable_region.

Comment 2 by skobes@chromium.org, Sep 23 2016

Cc: vollick@chromium.org ajuma@chromium.org
Better repro attached.  This has something to do with the way we set LayerImpl::scrolls_drawn_descendant_.

When the filtered box is no longer visible, we clear this bit on the scrolling contents layer, so LayerTreeImpl::FindLayerThatIsHitByPoint skips it incorrectly.

I'm not sure if we should change the logic in FindLayerThatIsHitByPoint, or change the meaning of this bit.  CC'ing ajuma and vollick in case they have ideas.
scroll-stuck.html
565 bytes View Download

Comment 3 by ajuma@chromium.org, Sep 23 2016

Cc: sunxd@chromium.org
Adding sunxd who's investigated similar bugs before.

Comment 4 by ajuma@chromium.org, Sep 23 2016

Cc: majidvp@chromium.org
I wonder if the drawn_descendant condition is really needed (rather than just checking scrollability). Adding majidvp who considered making such a change in patch set 1 of https://codereview.chromium.org/868363004, but ultimately went with another approach there.
Project Member

Comment 5 by bugdroid1@chromium.org, Nov 15 2016

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

commit eec54e30707389a2e9e0335f432ca2cd4396f869
Author: skobes <skobes@chromium.org>
Date: Tue Nov 15 01:58:12 2016

Make all scrollable layers visible to hit testing.

Scrollers should remain scrollable even if their descendants are all offscreen.
An offscreen descendant with a render surface was causing num_drawn_descendants
to be decremented to 0 in ClearIsDrawnRenderSurfaceLayerListMember.

This patch removes num_drawn_descendants and scrolls_drawn_descendant in favor
of simply checking LayerImpl::scrollable().

BUG= 641226 

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

[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/layers/layer_impl.cc
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/layers/layer_impl.h
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/trees/layer_tree_host_common.cc
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/trees/layer_tree_host_impl_unittest.cc
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/trees/layer_tree_impl.cc
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/trees/scroll_node.cc
[modify] https://crrev.com/eec54e30707389a2e9e0335f432ca2cd4396f869/cc/trees/scroll_node.h

Comment 6 by skobes@chromium.org, Nov 15 2016

Status: Fixed (was: Started)
Verified in canary (56.0.2920.0).

Sign in to add a comment