[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