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

Issue 597902 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Mar 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug



Sign in to add a comment

LayoutObject::mapToVisibleRectInAncestorSpace() slow path misses clip of the non-composited-scrolling ancestor

Project Member Reported by wangxianzhu@chromium.org, Mar 25 2016

Issue description

<div id="container" style="overflow: hidden">
  <div id="child"></div>
</div>

When mapping child's rect to container, we don't apply container's clip to the rect.

We do apply the clip in fast path of mapping using PaintInvalidationState.

 
Does it really? What about overflow:scroll? Paint invalidation would be wrong then if it clipped paint invalidation rects inside of a composited scroller, right?
Look at the result for fast/clip/014.html in https://storage.googleapis.com/chromium-layout-test-archives/linux_chromium_rel_ng/201167/layout-test-results/results.html

Seems like a related problem, as we apparently don't clip the scrollbars on the now-composited content. Could be totally unrelated, of course.
Re comment 2: there are some "corner-case" bugs in composited clipping, this could be one of those. I think it is likely not the same issue.
Summary: LayoutObject::mapToVisibleRectInAncestorSpace() slow path misses clip of the non-composited-scrolling ancestor (was: LayoutObject::mapToVisibleRectInAncestorSpace() misses clip of the ancestor)
To clarify: the bug applies to the slow path only. This will apply to the whole LayoutObject::mapToVisibleRectInAncestorSpace() after my change which moves fast-path mapping out of the function.

This also applies to non-composited-scrolling ancestors only. We don't need to clip in a composited-scrolling ancestor.

Owner: wangxianzhu@chromium.org
Status: Started (was: Available)
Status: WontFix (was: Started)
We decided not to apply the outer-most clip in mapToVisualRectInAncestorSpace().
Project Member

Comment 8 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

Project Member

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

Labels: 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

Project Member

Comment 10 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