Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 41e6b037fd006ed630cd9114706ef9a803adbe2a
https://github.com/WebKit/WebKit/commit/41e6b037fd006ed630cd9114706ef9a803adbe2a
Author: Said Abou-Hallawa <[email protected]>
Date: 2025-10-13 (Mon, 13 Oct 2025)
Changed paths:
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-filter-filter-units-user-space-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-filter-primitive-units-user-space-ref.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-filter-units-user-space-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-filter-units-user-space.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-primitive-units-user-space-expected.html
A
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-primitive-units-user-space.html
M Source/WebCore/rendering/CSSFilterRenderer.cpp
M Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp
M Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp
M Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp
M Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp
M Source/WebCore/svg/SVGLengthContext.cpp
M Source/WebCore/svg/SVGLengthContext.h
M Source/WebCore/svg/graphics/filters/SVGFilterRenderer.cpp
M Source/WebCore/svg/graphics/filters/SVGFilterRenderer.h
Log Message:
-----------
Images on axton.gallery disappear momentarily when clicking on them
https://bugs.webkit.org/show_bug.cgi?id=298540
rdar://154363710
Reviewed by Simon Fraser.
Currently if primitiveUnits is equal to userSpaceOnUse, primitiveSubRegion is
resolved against the viewport of the <filter> element's ancestor <svg>.
Similarly
if filterUnits is to userSpaceOnUse the filterRegion and the is resolved against
the viewport of the <filter> element's ancestor <svg>.
The specs state that:
[1] Any length values within the filter definitions represent values in the
current
local coordinate system in place at the time when the filter element is
referenced.
[2] The local coordinate system is the coordinate system that is currently
active
and which is used to define how coordinates and lengths are located and
computed,
respectively, on the current canvas.
So the fix is:
1. For an HTML target element, its bounding boxes should be used to resolve
primitiveSubRegion and filterRegion.
2. For an SVG target element, the viewport of its a ancestor <svg> should be
used to resolve primitiveSubRegion and filterRegion.
[1]
https://drafts.fxtf.org/filter-effects/#element-attrdef-filter-primitiveunits
[2] https://drafts.csswg.org/css-transforms-1/#local-coordinate-system
Tests:
imported/w3c/web-platform-tests/css/filter-effects/svg-filter-filter-units-user-space.html
imported/w3c/web-platform-tests/css/filter-effects/svg-filter-primitive-units-user-space.html
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-filter-filter-units-user-space-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/reference/svg-filter-primitive-units-user-space-ref.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-filter-units-user-space-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-filter-units-user-space.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-primitive-units-user-space-expected.html:
Added.
*
LayoutTests/imported/w3c/web-platform-tests/css/filter-effects/svg-filter-primitive-units-user-space.html:
Added.
* Source/WebCore/rendering/CSSFilterRenderer.cpp:
(WebCore::createReferenceFilter):
* Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::resourceBoundingBox):
* Source/WebCore/rendering/svg/RenderSVGResourceMasker.cpp:
(WebCore::RenderSVGResourceMasker::resourceBoundingBox):
* Source/WebCore/rendering/svg/SVGRenderTreeAsText.cpp:
(WebCore::writeSVGResourceContainer):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceFilter.cpp:
(WebCore::LegacyRenderSVGResourceFilter::applyResource):
(WebCore::LegacyRenderSVGResourceFilter::resourceBoundingBox):
* Source/WebCore/rendering/svg/legacy/LegacyRenderSVGResourceMasker.cpp:
(WebCore::LegacyRenderSVGResourceMasker::resourceBoundingBox):
* Source/WebCore/svg/SVGLengthContext.cpp:
(WebCore::SVGLengthContext::SVGLengthContext):
(WebCore::SVGLengthContext::resolveRectangle):
(WebCore::SVGLengthContext::viewportSize const):
* Source/WebCore/svg/SVGLengthContext.h:
(WebCore::SVGLengthContext::resolveRectangle):
* Source/WebCore/svg/graphics/filters/SVGFilterRenderer.cpp:
(WebCore::SVGFilterRenderer::create):
(WebCore::buildFilterEffectGraph):
(WebCore::SVGFilterRenderer::buildExpression):
* Source/WebCore/svg/graphics/filters/SVGFilterRenderer.h:
Canonical link: https://commits.webkit.org/301424@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes