[webkit-changes] [WebKit/WebKit] af30a9: [LBSE] Errorous/unnecessary repainting when viewBo...
Nikolas Zimmermann
noreply at github.com
Sat Oct 7 00:32:33 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: af30a9bb6eef26b7e5f32b8311ecc0d9ac7df8c1
https://github.com/WebKit/WebKit/commit/af30a9bb6eef26b7e5f32b8311ecc0d9ac7df8c1
Author: Nikolas Zimmermann <nzimmermann at igalia.com>
Date: 2023-10-07 (Sat, 07 Oct 2023)
Changed paths:
A LayoutTests/platform/ios/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints-expected.txt
A LayoutTests/platform/mac-wk1/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt
A LayoutTests/platform/mac-wk1/svg/compositing/transform-change-repainting-viewBox-repaintRects-expected.txt
A LayoutTests/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints-expected.txt
A LayoutTests/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints.html
A LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-expected.html
A LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt
A LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-repaintRects.html
A LayoutTests/svg/compositing/transform-change-repainting-no-viewBox.html
A LayoutTests/svg/compositing/transform-change-repainting-viewBox-expected.html
A LayoutTests/svg/compositing/transform-change-repainting-viewBox-repaintRects-expected.txt
A LayoutTests/svg/compositing/transform-change-repainting-viewBox-repaintRects.html
A LayoutTests/svg/compositing/transform-change-repainting-viewBox.html
M Source/WebCore/rendering/RenderLayer.cpp
Log Message:
-----------
[LBSE] Errorous/unnecessary repainting when viewBox is used on <svg> elements
https://bugs.webkit.org/show_bug.cgi?id=258351
Reviewed by Rob Buis.
The anonymous RenderSVGViewportContainer, that encloses the entire SVG render tree,
caused errorous repaints whenever the outermost <svg> specified a viewBox attribute.
RenderLayerBacking::isSimpleContainerCompositingLayer() returned 'false' for the
anyonmous RenderSVGViewportContainer, as it advertized itself as 'paintsContents()=true',
which is incorrect, since it does not paint on its own.
Alter RenderLayer::computeHasVisibleContent() to return false for the anonymous
RenderSVGViewportContainer, similar to the existing condition, that prevents
repaints for layers that have a 'RenderSVGHiddenContainer' ancestor in the render
tree hierarchy.
Covered by new tests (graphics layer tree dump will showed 'drawsContent 1' before and
'contentsVisible 0' after this change for the anonymous RenderSVGViewportContainer layer).
* LayoutTests/platform/ios/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints-expected.txt: Added.
Taken from iOS 16 Simulator EWS build -- scrollbars on iOS influence the GraphicsLayer tree dump, so this needs
a platform specific result.
* LayoutTests/platform/mac-wk1/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt: Added.
* LayoutTests/platform/mac-wk1/svg/compositing/transform-change-repainting-viewBox-repaintRects-expected.txt: Added.
Legacy WK1 exposes individual repainting bugs -- add an exception instead of skipping to document this.
* LayoutTests/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints-expected.txt: Added.
* LayoutTests/svg/compositing/anonymous-RenderSVGViewportContainer-no-repaints.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-expected.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-repaintRects-expected.txt: Added.
* LayoutTests/svg/compositing/transform-change-repainting-no-viewBox-repaintRects.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-no-viewBox.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-viewBox-expected.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-viewBox-repaintRects-expected.txt: Added.
* LayoutTests/svg/compositing/transform-change-repainting-viewBox-repaintRects.html: Added.
* LayoutTests/svg/compositing/transform-change-repainting-viewBox.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::computeHasVisibleContent const):
Canonical link: https://commits.webkit.org/269034@main
More information about the webkit-changes
mailing list