New issue
Advanced search Search tips

Issue 736052 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment

Non-integer scaled scrollers do not stay positioned correctly

Project Member Reported by petermayo@chromium.org, Jun 22 2017

Issue description

When a scrollable element is scaled by a non-integer amount the position of the content area moves relative to the scroll bars.

The attached html will demonstrate that one or more of the scrolled areas sticks above the vertical scrollbar.

This happens symmetrically in each direction, even though the attached demo only shows vertical issues.
 
scaled-scroll-test.html
946 bytes View Download
Labels: PaintTeamTriaged-20170622 BugSource-Team
Status: Available (was: Untriaged)

Comment 2 by trchen@chromium.org, Jul 18 2017

Cc: jaydasika@chromium.org ajuma@chromium.org
Components: Internals>Compositing
I believe it is related to scroll snapping in cc. +jaydasika, +ajuma
(Just my hunch. Feel free to re-label once we have more evidence.)
Project Member

Comment 3 by bugdroid1@chromium.org, Jul 21 2017

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

commit b3bb16c205d2e2cb91f7afa6aeada4047ff6542d
Author: Tien-Ren Chen <trchen@chromium.org>
Date: Fri Jul 21 00:03:37 2017

[Blink] Add layout test for composited scroller clip snapping

This test verifies composited scrollers have consistent clip rect
regardless of current scroll offset. The four boxes in the test have
different fractional translations. The test body and reference are
identical except for scroll offset.

BUG=736052

Change-Id: I97257b29e5abf579aa028d0c04463f4c427f8a58
Reviewed-on: https://chromium-review.googlesource.com/578741
Commit-Queue: Tien-Ren Chen <trchen@chromium.org>
Reviewed-by: Peter Mayo <petermayo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#488500}
[modify] https://crrev.com/b3bb16c205d2e2cb91f7afa6aeada4047ff6542d/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/b3bb16c205d2e2cb91f7afa6aeada4047ff6542d/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroll-with-fractional-translation-expected.html
[add] https://crrev.com/b3bb16c205d2e2cb91f7afa6aeada4047ff6542d/third_party/WebKit/LayoutTests/compositing/overflow/composited-scroll-with-fractional-translation.html

Comment 4 by flackr@chromium.org, Jul 21 2017

Re #2 I strongly suspect scroll snapping as well. We can probably verify just by disabling snapping in a local build. My hypothesis is that we either only snap some of the layers of the scroller (i.e. not the scrollbars) and/or we don't apply consistent snapping to all of the layers because we snap based on each layer's position which may lead some to move down/left and others to move up/right.
Cc: -ajuma@chromium.org -jaydasika@chromium.org
This test now passes, suggesting that the issue is resolved. Is that true, or is the reference now broken?
Owner: schenney@chromium.org
Status: Assigned (was: Available)
Ping
Cc: -trchen@chromium.org schenney@chromium.org
Owner: trchen@chromium.org
Nope, the above CL only added a test and marked it as [ Failure ]. Just checked and it is still failing as of today.

I'll spend some time to investigate it next week, though I'm pretty preoccupied with clip-path recently.
I think my PaintLayerClipper CL today might have made it start passing.
Owner: danakj@chromium.org
I'm leaving the team, thus re-assigning.

It still reproducible as of today. I also tried with BGPT it is affected too. I think it is somewhere in cc/viz quad snapping. It feels like the clipped quad_rect is computed in the local space that's prior to snapping, then the draw transform of the quad getting snapped later.
Cc: danakj@chromium.org enne@chromium.org
Owner: bokan@chromium.org
Labels: -Pri-2 Pri-3
Just to confirm, we're talking about physical "pixel snapping" of scrolls, rather than "scroll snap" which is a new CSS feature unused by the above tests.

I can leave this in my queue for now but since it's low-severity and long-standing I'm unlikely to get to it in the near future.

Sign in to add a comment