Commit 19f7cb8a authored by Philip Rogers's avatar Philip Rogers Committed by Commit Bot

Ensure nested scrollers clip contents.

When painting composited overflow, kPaintLayerPaintingOverflowContents
is set to paint all content. When painting a nested, transformed
scroller, we need to ensure this flag is unset so the contents
are clipped.

Because root layer scrolling (RLS) paints the root layer as a regular
overflow scroller, this bug affected more tests with RLS. With this
patch, 5 more tests pass with root layer scrolling.

Bug: 779885
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I311cfa9e3244192b24ec3dd566aa2c65e9dba851
Reviewed-on: https://chromium-review.googlesource.com/748081
Commit-Queue: Philip Rogers <pdr@chromium.org>
Reviewed-by: default avatarTien-Ren Chen <trchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513045}
parent 99779b65
...@@ -30,11 +30,9 @@ crbug.com/417782 compositing/squashing/squash-above-fixed-1.html [ Failure ] ...@@ -30,11 +30,9 @@ crbug.com/417782 compositing/squashing/squash-above-fixed-1.html [ Failure ]
crbug.com/417782 compositing/squashing/squash-above-fixed-3.html [ Failure ] crbug.com/417782 compositing/squashing/squash-above-fixed-3.html [ Failure ]
crbug.com/417782 compositing/squashing/squashing-print.html [ Failure ] crbug.com/417782 compositing/squashing/squashing-print.html [ Failure ]
crbug.com/417782 compositing/visibility/visibility-image-layers-dynamic.html [ Failure ] crbug.com/417782 compositing/visibility/visibility-image-layers-dynamic.html [ Failure ]
crbug.com/417782 css3/filters/nested-filter.html [ Failure ]
crbug.com/417782 editing/input/scroll-viewport-page-up-down.html [ Failure ] crbug.com/417782 editing/input/scroll-viewport-page-up-down.html [ Failure ]
crbug.com/417782 external/wpt/css/css-position-3/position-sticky-root-scroller.html [ Failure ] crbug.com/417782 external/wpt/css/css-position-3/position-sticky-root-scroller.html [ Failure ]
crbug.com/417782 [ Mac ] fast/body-propagation/background-image/007.html [ Failure ] crbug.com/417782 [ Mac ] fast/body-propagation/background-image/007.html [ Failure ]
crbug.com/417782 fast/css/resize-corner-tracking-transformed.html [ Failure ]
crbug.com/417782 fast/css/sticky/replaced-sticky.html [ Failure ] crbug.com/417782 fast/css/sticky/replaced-sticky.html [ Failure ]
crbug.com/417782 fast/css/sticky/sticky-style-change.html [ Failure ] crbug.com/417782 fast/css/sticky/sticky-style-change.html [ Failure ]
crbug.com/417782 fast/css/zoom-body-scroll.html [ Failure ] crbug.com/417782 fast/css/zoom-body-scroll.html [ Failure ]
...@@ -61,7 +59,6 @@ crbug.com/417782 [ Linux Win ] fast/forms/placeholder-position.html [ Failure ] ...@@ -61,7 +59,6 @@ crbug.com/417782 [ Linux Win ] fast/forms/placeholder-position.html [ Failure ]
crbug.com/417782 [ Linux Win ] fast/forms/select-popup/popup-menu-appearance-transform.html [ Failure ] crbug.com/417782 [ Linux Win ] fast/forms/select-popup/popup-menu-appearance-transform.html [ Failure ]
crbug.com/417782 fast/frames/iframe-scaling-with-scroll.html [ Failure ] crbug.com/417782 fast/frames/iframe-scaling-with-scroll.html [ Failure ]
crbug.com/417782 fast/layers/scroll-rect-to-visible.html [ Failure ] crbug.com/417782 fast/layers/scroll-rect-to-visible.html [ Failure ]
crbug.com/417782 fast/layers/scroll-with-transform-layer.html [ Failure ]
crbug.com/417782 fast/layout/scroll-anchoring/history-restore-anchors.html [ Failure ] crbug.com/417782 fast/layout/scroll-anchoring/history-restore-anchors.html [ Failure ]
crbug.com/417782 fast/loader/scroll-position-restoration-without-premature-clamping.html [ Failure ] crbug.com/417782 fast/loader/scroll-position-restoration-without-premature-clamping.html [ Failure ]
crbug.com/417782 fast/loader/scroll-position-restored-on-back-at-load-event.html [ Failure ] crbug.com/417782 fast/loader/scroll-position-restored-on-back-at-load-event.html [ Failure ]
...@@ -105,7 +102,6 @@ crbug.com/417782 paint/invalidation/media-audio-no-spurious-repaints.html [ Fail ...@@ -105,7 +102,6 @@ crbug.com/417782 paint/invalidation/media-audio-no-spurious-repaints.html [ Fail
crbug.com/417782 paint/invalidation/overflow-scroll-body-appear.html [ Failure ] crbug.com/417782 paint/invalidation/overflow-scroll-body-appear.html [ Failure ]
crbug.com/417782 paint/invalidation/positioned-document-element.html [ Crash ] crbug.com/417782 paint/invalidation/positioned-document-element.html [ Crash ]
crbug.com/417782 paint/invalidation/resize-iframe-text.html [ Failure ] crbug.com/417782 paint/invalidation/resize-iframe-text.html [ Failure ]
crbug.com/417782 paint/invalidation/scroll-in-transformed-layer.html [ Failure ]
crbug.com/417782 paint/invalidation/subpixel-shadow-included-in-invalidation.html [ Failure ] crbug.com/417782 paint/invalidation/subpixel-shadow-included-in-invalidation.html [ Failure ]
crbug.com/417782 paint/invalidation/svg/absolute-sized-document-no-scrollbars.svg [ Failure ] crbug.com/417782 paint/invalidation/svg/absolute-sized-document-no-scrollbars.svg [ Failure ]
crbug.com/417782 paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ] crbug.com/417782 paint/invalidation/svg/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html [ Failure ]
...@@ -140,7 +136,6 @@ crbug.com/417782 printing/thead-repeats-at-top-of-each-page.html [ Failure ] ...@@ -140,7 +136,6 @@ crbug.com/417782 printing/thead-repeats-at-top-of-each-page.html [ Failure ]
crbug.com/417782 svg/W3C-SVG-1.1/masking-path-04-b.svg [ Failure ] crbug.com/417782 svg/W3C-SVG-1.1/masking-path-04-b.svg [ Failure ]
crbug.com/417782 svg/custom/mask-with-default-value.svg [ Failure ] crbug.com/417782 svg/custom/mask-with-default-value.svg [ Failure ]
crbug.com/417782 [ Mac ] svg/custom/masking-clipping-hidpi.svg [ Failure ] crbug.com/417782 [ Mac ] svg/custom/masking-clipping-hidpi.svg [ Failure ]
crbug.com/417782 transforms/overflow-with-transform.html [ Failure ]
crbug.com/417782 transforms/selection-bounds-in-transformed-view.html [ Failure ] crbug.com/417782 transforms/selection-bounds-in-transformed-view.html [ Failure ]
crbug.com/417782 [ Linux ] virtual/android/fast/rootscroller/browser-controls-background-iframe.html [ Failure ] crbug.com/417782 [ Linux ] virtual/android/fast/rootscroller/browser-controls-background-iframe.html [ Failure ]
crbug.com/417782 [ Linux ] virtual/android/fast/rootscroller/browser-controls-gradient-background-iframe-scroller.html [ Failure ] crbug.com/417782 [ Linux ] virtual/android/fast/rootscroller/browser-controls-gradient-background-iframe-scroller.html [ Failure ]
......
<!doctype html>
<style>
::-webkit-scrollbar {
display: none;
}
</style>
This test passes if there is no red.
<div id="scroller" style="position: absolute; width: 400px; height: 400px; overflow-y: scroll; will-change: transform;">
<div id="transformed" style="width: 100px; height: 100px; top: 100px; left: 50px; position: absolute; overflow: hidden; transform: rotate(45deg);">
<!-- This rect should be entirely clipped out. -->
<div style="width: 100px; height: 100px; top: 100px; left: 50px; position: absolute; background: red;"></div>
</div>
<div id="forcescroll" style="height: 1000px;"></div>
</div>
...@@ -853,9 +853,12 @@ PaintResult PaintLayerPainter::PaintFragmentByApplyingTransform( ...@@ -853,9 +853,12 @@ PaintResult PaintLayerPainter::PaintFragmentByApplyingTransform(
transformed_painting_info.ancestor_has_clip_path_clipping = transformed_painting_info.ancestor_has_clip_path_clipping =
painting_info.ancestor_has_clip_path_clipping; painting_info.ancestor_has_clip_path_clipping;
// Remove skip root background flag when we're painting with a new root. if (&paint_layer_ != painting_info.root_layer) {
if (&paint_layer_ != painting_info.root_layer) // Remove skip root background flag when we're painting with a new root.
paint_flags &= ~kPaintLayerPaintingSkipRootBackground; paint_flags &= ~kPaintLayerPaintingSkipRootBackground;
// When painting a new root we are no longer painting overflow contents.
paint_flags &= ~kPaintLayerPaintingOverflowContents;
}
return PaintLayerContentsCompositingAllPhases( return PaintLayerContentsCompositingAllPhases(
context, transformed_painting_info, paint_flags, kForceSingleFragment); context, transformed_painting_info, paint_flags, kForceSingleFragment);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment