New issue
Advanced search Search tips

Issue 722701 link

Starred by 3 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 2
Type: Bug-Regression

Blocked on: View detail
issue 125223
issue 476553



Sign in to add a comment

Page Up/Down scrolling stops when a composited scroller is demoted

Reported by thescott...@gmail.com, May 16 2017

Issue description

UserAgent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

Example URL:
https://jsfiddle.net/eurcus92/1/

Steps to reproduce the problem:
(See the JSFiddle attached)
1. Create a scrollable container with a z-index, position absolute or relative, and a solid background color.
2. Make the scrollable container change color to an rgba color partway down.

What is the expected behavior?
When pushing page down it's supposed to scroll the box all the way.

What went wrong?
In the JSFiddle you can observe when pushing page down inside the scrollable box it'll start smooth-scrolling down, but it'll get stuck where the solid color changes to a background color. You can also notice that repeated pushes to the page down key won't make it scroll any farther even though there's more room to scroll.

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? N/A 

Does this work in other browsers? Yes

Chrome version: 58.0.3029.110  Channel: stable
OS Version: Fedora  25
Flash Version: 

If you disable the smooth scrolling flag in chrome and it will work as expected.

This has been tested on linux(fedora) and on windows 10, in both cases the problem occurs. In firefox the problem does not occur.
 
Labels: Needs-Triage-M58

Comment 2 by bokan@chromium.org, May 16 2017

Components: -Blink Blink>Scroll
Components: Blink>Compositing
Labels: -Type-Bug -Pri-2 -Needs-Triage-M58 hasbisect-per-revision M-60 OS-Mac OS-Windows Pri-1 Type-Bug-Regression
Owner: schenney@chromium.org
Status: Assigned (was: Unconfirmed)
Able to reproduce the issue on Windows 10, mac 10.12.4 and Ubuntu 14.04 using chrome reported version #58.0.3029.110 and latest canary #60.0.3101.0 .

Bisect Information:
=====================
Good build: 55.0.2872.0  Revision(420859)
Bad Build : 55.0.2873.0  Revision(421052)

Change Log URL: 
https://chromium.googlesource.com/chromium/src/+log/38d12538c8af0b8afbf9c5b586b10902b9ba1303..ef06887f125941e96ab19fba834d9027d36d4c88

From the above change log suspecting below change
Review url: https://codereview.chromium.org/2358203002

schenney@ - Could you please check whether this is caused with respect to your change, if not please help us in assigning it to the right owner.

Thanks...!!
Cc: schenney@chromium.org
Components: -Blink>Compositing
Labels: -Pri-1 RegressionFound-58 BugSource-User PaintTeamTriaged-20170517 RegressedIn-55 Pri-2
Owner: ----
Status: Untriaged (was: Assigned)
Summary: Page Up/Down scrolling stops when a composited scroller is demoted (was: Smooth scrolling gets jammed under specific conditions)
This is probably due to my change, but revealing a bug that pre-existed.

Mouse scrolling works fine as does up/down arrow based keyboard scrolling. It is only Page Up/Down that breaks.

The background color changes to something transparent, so we stop compositing the scrolling div, and the root layer starts painting everything related to the scroller. For some reason, machinery necessary for handling Page Up/Down is not being associated with the demoted content - there is not even a layer there.

Over to the scroll team, or threaded rendering since this is a bug with layer status changes.

Labels: Hotlist-ThreadedRendering
Actually, the up/down keys can break it to, it's just hard to see in the jsfiddle I gave. Here's a different one that's tweaked to make it easier to see the up/down key breaking the functionality. Just push down and you'll see it get's stuck one pixel down from the top where the color changes.

https://jsfiddle.net/o9pL959u/

Comment 7 by bokan@chromium.org, May 18 2017

Cc: bokan@chromium.org
Owner: skobes@chromium.org
Assigning to skobes@ for triage. Steve, I know we support handing off animations between main and CC, but that's for when scrolling is forced to one or the other - did we ever support the case where an animation starts on a CC layer which gets subsequently demoted? I have a feeling we just delete the animation in that case rather than handing it off to the main thread...

Comment 8 by bokan@chromium.org, May 18 2017

Status: Assigned (was: Untriaged)

Comment 9 by skobes@chromium.org, May 18 2017

I think you're right.  The cc -> main takeover is triggered by adding main-thread scrolling reasons to the layer.  We don't do anything to handle the case of the layer going away.
Cc: skobes@chromium.org
Owner: ----
Status: Available (was: Assigned)
Owner: bokan@chromium.org
Status: Assigned (was: Available)
I'm not sure why skobes unassigned this bug, but assigning to bokan@ to triage.
Owner: ----
Status: Untriaged (was: Assigned)
Marking untriaged so I remember to take a look at triage meeting tomorrow
Blockedon: 476553
This is a consequence of the fact that scrolling is so heavily tied to compositing. I think the approach for Scroll Unification should make this solvable in a satisfying way - since CC will be able to simply update the Node on the ScrollTree which wont go away and whether or not that causes an update to a "Layer" or just a reraster wont matter.

It's long term but I'm going to block on that.
Status: Available (was: Untriaged)
Labels: -Hotlist-ThreadedRendering
Going on the description of cc-> main handover, and main scrolling blocking on unification it sounds like shorter fix would be main side too.  So: I'm removing this from cc hotlist.

Comment 16 by bokan@chromium.org, Jan 11 2018

Blockedon: 125223
Owner: sahel@chromium.org
Status: Assigned (was: Available)
Blocked on keyboard gesture scrolling

Sign in to add a comment