[webkit-changes] [WebKit/WebKit] afd161: REGRESSION(268173 at main) Safari rendered bdiusa.com...

mattwoodrow noreply at github.com
Mon Mar 18 14:02:46 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: afd16103076c8029ee4527728da0ff1926fc7483
      https://github.com/WebKit/WebKit/commit/afd16103076c8029ee4527728da0ff1926fc7483
  Author: Matt Woodrow <mattwoodrow at apple.com>
  Date:   2024-03-18 (Mon, 18 Mar 2024)

  Changed paths:
    A LayoutTests/fast/clip/offscreen-transparency-clip-expected.html
    A LayoutTests/fast/clip/offscreen-transparency-clip.html
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  REGRESSION(268173 at main) Safari rendered bdiusa.com as all white.
https://bugs.webkit.org/show_bug.cgi?id=270926
<rdar://123983879>

Reviewed by Simon Fraser.

We're using transparencyClipBox to determine the size of the transparency layer to push,
and it's returning an empty rectangle.

It recurses through descendants, and finds a child layer positioned way off to the left
of the screen (at -33553151).

Due to limits of int32, adding the bounds of that child into the original rect
(0,0) width=1686 height=18933.45, results in (-33554430,0) width=33554432 height=18933.45
which no longer includes the visible area of the screen (except for the very left edge).

This fix moves the intersection with the dirty rect down to happen per-layer, so that
we clip before unioning the descendants in, and avoid this problem.

As the existing code comment mentions, it would still be preferable to take CSS clips
into account when computing these rectangles.

* LayoutTests/fast/clip/offscreen-transparency-clip-expected.html: Added.
* LayoutTests/fast/clip/offscreen-transparency-clip.html: Added.
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::transparencyClipBox):
(WebCore::expandClipRectForDescendantsAndReflection):
(WebCore::RenderLayer::beginTransparencyLayers):
(WebCore::paintingExtent): Deleted.

Canonical link: https://commits.webkit.org/276294@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list