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

Issue 640565 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression: Page content of 'madeinmyindia.com' vanishes after scrolling via mouse wheel.

Reported by jshan...@etouch.net, Aug 24 2016

Issue description

Chrome Version: 54.0.2837.0 (Official Build) a29577e8b1ed329373d426e85f679dfeb07a2979-refs/heads/master@{#413618}-32/64 bit
OS: Windows (7,8,8.1,10),Linux (14.04 LTS),Mac OS X(10.10.5, 10.11.4)

URL: http://www.madeinmyindia.com/product/golden-multi-strap-sandal/

Steps:
1. Launch Chrome and navigate to above url.
2. Hover mouse over product description, scroll via mouse wheel and observe.

Actual: Page content i.e Description, Size chart, Add to cart,etc vanishes after scrolling via mouse wheel.

Expected: Page content i.e Description, Size chart, Add to cart,etc should be seen properly after scrolling via mouse wheel.

This is regression issue broken in M-54, below is bisect info:

Good build : 54.0.2827.0
Bad build : 54.0.2828.0

Narrow Bisect:
https://chromium.googlesource.com/chromium/src/+log/3831b72130f11ebac151fd4945719f6d7489e048..f7d24bd8050b6bf21e6280f12103f0c311e18f4f?pretty=fuller&n=100

Suspecting: r411563 ?

Please help to re-assign if your change is not the cause for this issue.

Note:1. This is resolution specific issue, seen on desktop/laptop with resolution 1366x768.
     2. Issue is not seen on other browsers like Firefox and I.E
 
Actual_video.mp4
488 KB View Download
Expected_video.mp4
414 KB View Download
Labels: ReleaseBlock-Beta
Adding Release block label, please undo if not the case.
Cc: -wkorman@chromium.org
Owner: wkorman@chromium.org
I have no CLs in that revision range. I suspect r411560 "Reland "Raster display item lists via a visual rect RTree." which touches compositing (src/cc). To wkorman.

Components: -Blink Blink>Paint
I can repro at ToT, likely due to my patch, will investigate shortly.
Reduced test case attached. Scrolling in righthand side of page demonstrates issue. Hard to reduced the minimized vendor jquery-based js further. Will try to work from this to debug and understand root of issue.
reduced.tar.gz
101 KB Download
Much simpler test case attached that repros in default 800x600 sized content shell.
index.html
548 bytes View Download
Components: -Blink>Paint Blink>Paint>Invalidation
It looks like the issue may be paint invalidation related and present before r411560. That is, r411560 produces a different failure mode that is more visible, but the underlying cause was already present.

Rationale -- syncing to r411559 and selecting text in test case from #5 only paints selection for the first line, and deselecting does not unhighlight anything. Paint flashing in dev tools shows all invalidation rects positioned above the actual text.
Cc: wangxianzhu@chromium.org chrishtr@chromium.org
Capturing notes/theories from research yesterday as I have to shift gears to work on a ClusterFuzz issue --

Modifying the reduced test case in #5 to contain only one line of text (attaching the modification), the scroll content offset of 'inside' element ends up being -20px (roughly height of the text, presumably the 106px we're setting scrollTop to is clamping to max actual scrollable content). That offset then looks to be applied 2x to the paint invalidation rect somehow.

Such that whereas the paint invalidation rect position should be 600, it instead ends up being 560. The paint cull rect is correct, but the invalidation/visual rect is wrong:

{index: 7, client: "0x11d488e186d8 LayoutBlockFlow (positioned) DIV", type: "DrawingBoxDecorationBackground", rect: [0.000000,600.000000 85.000000x17.000000], cacheIsValid: true, visualRect: [-1,560 85x17]},

Note that while the 'inside' container is a composited paint invalidation container, it is not considered explicitly "scrollable". It is neither intrinsic nor having a scrollingLayer(), so it returns false from PaintLayerScrollableArea::usesCompositedScrolling() which propagates to false for LayoutBoxModelObject::usesCompositedScrolling() which has ramifications re: whether scrollContentOffset is applied to the invalidation rect.

+xianzhu and chris just as FYI.
index.html
431 bytes View Download
Owner: chrishtr@chromium.org
Project Member

Comment 9 by bugdroid1@chromium.org, Aug 28 2016

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

commit 537724421c0f5d046e56fb0eba001da3bcea0613
Author: chrishtr <chrishtr@chromium.org>
Date: Sun Aug 28 02:15:49 2016

Don't apply overflow clips in paint invalidation.

Previously, such clips were applied if the paint invalidation container did
not scroll overflow, but this is problematic, because overflow:hidden elements
can be scrolled via script.

BUG= 597902 , 640565 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

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

[modify] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled-expected.txt
[add] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled.html
[modify] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
[modify] https://crrev.com/537724421c0f5d046e56fb0eba001da3bcea0613/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

This missed the M54 branch at r414607. We should merge once we've validated fix on Canary build.
Labels: Merge-Request-54

Comment 13 by dimu@chromium.org, Aug 29 2016

Labels: -Merge-Request-54 Merge-Approved-54 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M54 (branch: 2840)
Project Member

Comment 14 by bugdroid1@chromium.org, Aug 29 2016

Labels: -merge-approved-54 merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/19e275edf518255cc77cf7fe97d501f536ec87b7

commit 19e275edf518255cc77cf7fe97d501f536ec87b7
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Mon Aug 29 21:34:20 2016

Don't apply overflow clips in paint invalidation.

Previously, such clips were applied if the paint invalidation container did
not scroll overflow, but this is problematic, because overflow:hidden elements
can be scrolled via script.

BUG= 597902 , 640565 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2280243002
Cr-Commit-Position: refs/heads/master@{#414951}
(cherry picked from commit 537724421c0f5d046e56fb0eba001da3bcea0613)

Review URL: https://codereview.chromium.org/2295503002 .

Cr-Commit-Position: refs/branch-heads/2840@{#24}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled-expected.txt
[add] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled.html
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

Status: Fixed (was: Assigned)
Project Member

Comment 16 by bugdroid1@chromium.org, Oct 27 2016

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

commit 19e275edf518255cc77cf7fe97d501f536ec87b7
Author: Chris Harrelson <chrishtr@chromium.org>
Date: Mon Aug 29 21:34:20 2016

Don't apply overflow clips in paint invalidation.

Previously, such clips were applied if the paint invalidation container did
not scroll overflow, but this is problematic, because overflow:hidden elements
can be scrolled via script.

BUG= 597902 , 640565 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2280243002
Cr-Commit-Position: refs/heads/master@{#414951}
(cherry picked from commit 537724421c0f5d046e56fb0eba001da3bcea0613)

Review URL: https://codereview.chromium.org/2295503002 .

Cr-Commit-Position: refs/branch-heads/2840@{#24}
Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607}

[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/TestExpectations
[add] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled-expected.txt
[add] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/LayoutTests/paint/invalidation/overflow-hidden-yet-scrolled.html
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp
[modify] https://crrev.com/19e275edf518255cc77cf7fe97d501f536ec87b7/third_party/WebKit/Source/core/layout/VisualRectMappingTest.cpp

Sign in to add a comment