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

Reply via email to