[webkit-changes] [WebKit/WebKit] 34cb73: Invalidate SVG filter results in SVGResourcesCache...
Commit Queue
noreply at github.com
Thu Mar 28 16:07:41 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 34cb73b0f69df082842d0ab58ae7a05a530afba7
https://github.com/WebKit/WebKit/commit/34cb73b0f69df082842d0ab58ae7a05a530afba7
Author: Ahmad Saleem <ahmad.saleem792 at gmail.com>
Date: 2024-03-28 (Thu, 28 Mar 2024)
Changed paths:
A LayoutTests/svg/foreignObject/filter-repaint-expected.svg
A LayoutTests/svg/foreignObject/filter-repaint.svg
M Source/WebCore/rendering/svg/SVGResourcesCache.cpp
Log Message:
-----------
Invalidate SVG filter results in SVGResourcesCache::clientLayoutChanged()
https://bugs.webkit.org/show_bug.cgi?id=271449
Reviewed by Simon Fraser.
This patch is to align WebKit with Gecko / Firefox and Blink / Chromium.
Merge: https://chromium.googlesource.com/chromium/blink/+/25d72ebd50bec9a4caa426e735e5ee7292c4da69
^ Also import `skipped` test from Blink / Chromium upstream.
This patch effectively fix regression introduced by 91851 at main.
For the SVG tree, filter result invalidation is handled by LegacyRenderSVGResource::markForLayoutAndParentResourceInvalidation.
But non-SVG content (such as a <foreignObject> HTML subtree) does not call markForLayoutAndParentResourceInvalidation
and instead uses the regular setNeedsLayout() invalidation path.
Hence, changes in the HTML subtree do not invalidate cached results for filters applied on
ancestor SVG elements. In order to cover this case, clientLayoutChanged() needs to
invalidate filter results even if the SVG element itself does not need a re-layout. Note
that prior to 91851 at main the method used to do exactly that, but the branch was removed on
the assumption that markForLayoutAndParentResourceInvalidation() is already taking care of
it. Obviously, the assumption doesn't hold for non-SVG content.
* Source/WebCore/rendering/svg/SVGResourcesCache.cpp:
(SVGResourcesCache::clientLayoutChanged():
* LayoutTests/svg/foreignObject/filter-repaint.svg: Add Test Case
* LayoutTests/svg/foreignObject/filter-repaint-expected.svg: Add Test Case Expectation
Canonical link: https://commits.webkit.org/276808@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