Commit dc925dc9 authored by Xianzhu Wang's avatar Xianzhu Wang Committed by Commit Bot

[PE] Invalidate composited scroll corner layer when 'resize' style change

Bug: 781508
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_root_layer_scrolls;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I792d53b913abd981759be2473a3e450889181ff2
Reviewed-on: https://chromium-review.googlesource.com/775034
Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org>
Reviewed-by: default avatarPhilip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#517322}
parent 58965708
...@@ -70,8 +70,6 @@ crbug.com/769942 virtual/spv175/paint/clipath/clip-path-bigger-than-visual-overf ...@@ -70,8 +70,6 @@ crbug.com/769942 virtual/spv175/paint/clipath/clip-path-bigger-than-visual-overf
crbug.com/769942 virtual/spv175/paint/clipath/clip-path-with-background-and-box-behind.html [ Failure ] crbug.com/769942 virtual/spv175/paint/clipath/clip-path-with-background-and-box-behind.html [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/clip/clip-path-constant-repaint.html [ Failure ] crbug.com/769942 virtual/spv175/paint/invalidation/clip/clip-path-constant-repaint.html [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/clip/clip-path-resize.html [ Failure ] crbug.com/769942 virtual/spv175/paint/invalidation/clip/clip-path-resize.html [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child.html [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/reflection/reflection-redraw.html [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-child-changes.svg [ Failure ] crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-child-changes.svg [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-href-changes.svg [ Failure ] crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-href-changes.svg [ Failure ]
crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-id-changes.svg [ Failure ] crbug.com/769942 virtual/spv175/paint/invalidation/svg/clip-path-id-changes.svg [ Failure ]
...@@ -140,6 +138,7 @@ crbug.com/771643 virtual/spv175/paint/invalidation/compositing/newly-composited- ...@@ -140,6 +138,7 @@ crbug.com/771643 virtual/spv175/paint/invalidation/compositing/newly-composited-
crbug.com/771643 virtual/spv175/paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/compositing/resize-squashing-layer-that-needs-full-repaint.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/compositing/should-not-repaint-composited-descendants-on-overflow-change.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/compositing/subpixel-offset-scaled-transform-composited.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/filters/filter-on-html-element-with-fixed-position-child.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/multicol/column-rule-change.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/multicol/column-rule-change.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/multicol/column-rules-fixed-height.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/multicol/column-rules-fixed-height.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/multicol/multicol-as-paint-container.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/multicol/multicol-as-paint-container.html [ Failure ]
...@@ -156,6 +155,8 @@ crbug.com/771643 virtual/spv175/paint/invalidation/overflow/paged-with-overflowi ...@@ -156,6 +155,8 @@ crbug.com/771643 virtual/spv175/paint/invalidation/overflow/paged-with-overflowi
crbug.com/771643 virtual/spv175/paint/invalidation/position/position-change-keeping-geometry.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/position/position-change-keeping-geometry.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/position/transform-absolute-child.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/position/transform-absolute-child.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/reflection/reflection-repaint-test.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/reflection/reflection-repaint-test.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/reflection/reflection-redraw.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/scroll/composited-add-resizer.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/scroll/non-stacking-scroller-with-abspos-descendant-indirect.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/scroll/non-stacking-scroller-with-abspos-descendant-indirect.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/scroll/repaint-during-scroll-with-zoom.html [ Failure ]
crbug.com/771643 virtual/spv175/paint/invalidation/scroll/resize-scrollable-iframe.html [ Failure ] crbug.com/771643 virtual/spv175/paint/invalidation/scroll/resize-scrollable-iframe.html [ Failure ]
......
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF"
},
{
"name": "LayoutBlockFlow DIV id='target'",
"bounds": [100, 100],
"transform": 1
},
{
"name": "LayoutBlockFlow DIV id='target'",
"position": [8, 8],
"bounds": [100, 100],
"paintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"rect": [0, 0, 100, 100],
"reason": "style change"
}
]
}
],
"transforms": [
{
"id": 1,
"transform": [
[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[8, 8, 0, 1]
],
"flattenInheritedTransform": false
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"reason": "style change"
}
]
}
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"backgroundColor": "#FFFFFF"
},
{
"name": "Scrolling Layer",
"bounds": [800, 600],
"drawsContent": false
},
{
"name": "Scrolling Contents Layer",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF"
},
{
"name": "LayoutBlockFlow DIV id='target'",
"position": [8, 8],
"bounds": [100, 100],
"paintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"rect": [0, 0, 100, 100],
"reason": "style change"
}
]
},
{
"name": "Overflow Controls Host Layer",
"position": [8, 8],
"bounds": [100, 100],
"drawsContent": false
},
{
"name": "Horizontal Scrollbar Layer",
"position": [8, 93],
"bounds": [85, 15]
},
{
"name": "Vertical Scrollbar Layer",
"position": [93, 8],
"bounds": [15, 85]
},
{
"name": "Scroll Corner Layer",
"position": [93, 93],
"bounds": [15, 15],
"paintInvalidations": [
{
"object": "Scroll Corner Layer",
"rect": [0, 0, 15, 15],
"reason": "full"
}
]
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"reason": "style change"
}
]
}
<!DOCTYPE html>
<div id='target' style="width: 100px; height: 100px; overflow: scroll; resize: both"></div>
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF"
},
{
"name": "LayoutBlockFlow DIV id='target'",
"position": [8, 8],
"bounds": [100, 100],
"paintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"rect": [0, 0, 100, 100],
"reason": "style change"
}
]
},
{
"name": "Overflow Controls Host Layer",
"position": [8, 8],
"bounds": [100, 100],
"drawsContent": false
},
{
"name": "Horizontal Scrollbar Layer",
"position": [8, 93],
"bounds": [85, 15]
},
{
"name": "Vertical Scrollbar Layer",
"position": [93, 8],
"bounds": [15, 85]
},
{
"name": "Scroll Corner Layer",
"position": [93, 93],
"bounds": [15, 15],
"paintInvalidations": [
{
"object": "Scroll Corner Layer",
"rect": [0, 0, 15, 15],
"reason": "full"
}
]
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"reason": "style change"
}
]
}
<!DOCTYPE html>
<script src=../resources/text-based-repaint.js></script>
<script>
function repaintTest() {
target.style.resize = 'both';
}
onload = runRepaintAndPixelTest;
</script>
<div id='target' style="width: 100px; height: 100px; overflow: scroll; will-change: transform"></div>
{
"layers": [
{
"name": "LayoutView #document",
"bounds": [800, 600],
"contentsOpaque": true,
"backgroundColor": "#FFFFFF"
},
{
"name": "LayoutBlockFlow DIV id='target'",
"position": [8, 8],
"bounds": [100, 100]
},
{
"name": "Overflow Controls Host Layer",
"position": [8, 8],
"bounds": [100, 100],
"drawsContent": false
},
{
"name": "Horizontal Scrollbar Layer",
"position": [8, 93],
"bounds": [85, 15]
},
{
"name": "Vertical Scrollbar Layer",
"position": [93, 8],
"bounds": [15, 85]
},
{
"name": "Scroll Corner Layer",
"position": [93, 93],
"bounds": [15, 15],
"paintInvalidations": [
{
"object": "Scroll Corner Layer",
"rect": [0, 0, 15, 15],
"reason": "full"
}
]
}
],
"objectPaintInvalidations": [
{
"object": "LayoutBlockFlow DIV id='target'",
"reason": "style change"
}
]
}
...@@ -1125,7 +1125,7 @@ void PaintLayerScrollableArea::UpdateAfterStyleChange( ...@@ -1125,7 +1125,7 @@ void PaintLayerScrollableArea::UpdateAfterStyleChange(
UpdateScrollCornerStyle(); UpdateScrollCornerStyle();
UpdateResizerAreaSet(); UpdateResizerAreaSet();
UpdateResizerStyle(); UpdateResizerStyle(old_style);
} }
bool PaintLayerScrollableArea::UpdateAfterCompositingChange() { bool PaintLayerScrollableArea::UpdateAfterCompositingChange() {
...@@ -1673,7 +1673,15 @@ void PaintLayerScrollableArea::UpdateResizerAreaSet() { ...@@ -1673,7 +1673,15 @@ void PaintLayerScrollableArea::UpdateResizerAreaSet() {
frame_view->RemoveResizerArea(Box()); frame_view->RemoveResizerArea(Box());
} }
void PaintLayerScrollableArea::UpdateResizerStyle() { void PaintLayerScrollableArea::UpdateResizerStyle(
const ComputedStyle* old_style) {
if (!RuntimeEnabledFeatures::SlimmingPaintV2Enabled() && old_style &&
old_style->Resize() != Box().StyleRef().Resize()) {
// Invalidate the composited scroll corner layer on resize style change.
if (auto* graphics_layer = LayerForScrollCorner())
graphics_layer->SetNeedsDisplay();
}
if (!resizer_ && !Box().CanResize()) if (!resizer_ && !Box().CanResize())
return; return;
......
...@@ -537,7 +537,7 @@ class CORE_EXPORT PaintLayerScrollableArea final ...@@ -537,7 +537,7 @@ class CORE_EXPORT PaintLayerScrollableArea final
// See comments on isPointInResizeControl. // See comments on isPointInResizeControl.
void UpdateResizerAreaSet(); void UpdateResizerAreaSet();
void UpdateResizerStyle(); void UpdateResizerStyle(const ComputedStyle* old_style);
void UpdateScrollableAreaSet(); void UpdateScrollableAreaSet();
......
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