LGTM3 - Risk seems manageable even though it's unfortunately hard to measure. That it has worked for such a long time in Gecko without major push towards something else is a good sign. Good luck. We're all counting on you.

/Daniel


On 2025-11-12 10:32, Mike Taylor wrote:

On 11/10/25 7:22 p.m., Rune Lillesveen wrote:

On Sat, Nov 8, 2025 at 12:59 AM Rick Byers <[email protected]> wrote:

    This has some risk of being a breaking change, right? How would
    you characterize that risk? Firefox having this is obviously a
    good sign, but any other data or arguments on the risk? I imagine
    SVG use is fairly rare, and any selector mismatch would most
    likely be a minor formatting issue, right?

That, or some display:none rule that didn't work before, starts working now, which could be a major or minor issue.

An instantiated subtree will no longer be able to do selector matching against the surrounding elements from where it was instantiated from.

In the following case, the use instance of the rect would no longer be red:

<!DOCTYPE html>
<style>
  .original rect { fill: red; }
  rect { fill: green; }
</style>
<svg>
  <defs class="original">
    <rect id="r" x="0" y="0" width="100" height="100" />
  </defs>
  <use href="#r"></use>
</svg>

I think this is unlikely to break real sites.

I spent some time poking through the Firefox bug and its various associated bugs. I think it's a pretty good sign that this landed 8 years ago and the reported regressions were due to implementation bugs that were quickly fixed.

The absence of bugs in Bugzilla isn't a perfect compat signal, but it's at least promising.

In order to use-count this, we would have to run both ways of cascading (or at least selector matching) to detect such cases.
This sounds like a lot of complexity (but feel free to respond telling me it's trivial to implement). So, LGTM2 and hopefully I'm not wrong about the risk here.

The main benefit from this change, I think, is that it fixes https://crbug.com/40663285 which is about :hover and other state selector matching which is currently broken in <use> instances.

    On Fri, Nov 7, 2025 at 1:51 AM Philip Jägenstedt
    <[email protected]> wrote:

        LGTM1

        The WebKit standards position was only filed yesterday, but
        this seems straightforward and aligns with spec+Firefox, so I
        don't think we should wait on it. In the unlikely event there
        is feedback, please ping this thread.

        On Fri, Nov 7, 2025 at 9:44 AM Rune Lillesveen
        <[email protected]> wrote:

            *Contact emails*
            [email protected]

            *Specification*
            https://www.w3.org/TR/SVG2/struct.html#UseElement

            *Summary*
            Align the Blink implementation with the SVG2
            specification for matching CSS rules in <use> element trees.

            Match selectors against the <use> instantiation elements
            instead of the originating element subtree. This means
            selectors will no longer match ancestor and sibling
            elements outside the cloned subtree. More importantly,
            state selectors like :hover will now start matching in
            <use> instances.

            *Blink component*
            Blink>SVG
            
<https://issues.chromium.org/issues?q=customfield1222907:%22Blink%3ESVG%22>

            *Web Feature ID*
            Missing feature

            *Motivation*
            CSS selectors match against the wrong tree for <use>
            instantiations, which means selectors do not match
            correctly for structural relationships and user
            interaction state (see :hover issue that will be fixed
            shipping this feature: https://crbug.com/40663285)

            *Initial public proposal*
            /No information provided/

            *TAG review*
            /No information provided/

            *TAG review status*
            Not applicable

            *Risks*


            *Interoperability and Compatibility*
            Firefox has shipped the SVG2 behavior for years. Bug for
            WebKit: https://bugs.webkit.org/show_bug.cgi?id=249080

            /Gecko/:
            Shipped/Shipping 
(https://bugzilla.mozilla.org/show_bug.cgi?id=265894#c190) Shipped
            in Firefox 56

            /WebKit/: No
            signal (https://github.com/WebKit/standards-positions/issues/571)

            /Web developers/: Positive 44 votes on the crbug issue,
            and additional 5 votes on the :hover bug
            https://crbug.com/40663285

            /Other signals/:

            *WebView application risks*

            Does this intent deprecate or change behavior of existing
            APIs, such that it has potentially high risk for Android
            WebView-based applications?

            /No information provided/


            *Debuggability*
            /No information provided/

            *Will this feature be supported on all six Blink
            platforms (Windows, Mac, Linux, ChromeOS, Android, and
            Android WebView)?*
            Yes

            *Is this feature fully tested by web-platform-tests
            
<https://chromium.googlesource.com/chromium/src/+/main/docs/testing/web_platform_tests.md>?*
            Yes

            
https://wpt.fyi/svg/linking/reftests/use-descendant-combinator-003.html
            https://wpt.fyi/svg/struct/reftests/use-inheritance-001.svg
            https://wpt.fyi/svg/struct/reftests/use-inheritance-nth-child-of.svg
            
https://wpt.fyi/svg/struct/reftests/use-inheritance-nth-last-child-of.svg
            
https://wpt.fyi/svg/styling/use-element-attr-selector-transition.tentative.html
            
https://wpt.fyi/svg/styling/use-element-id-selector-transition.tentative.html

            *Flag name on about://flags*
            #enable-experimental-web-platform-features

            *Finch feature name*
            Svg2Cascade

            *Rollout plan*
            Will ship enabled for all users

            *Requires code in //chrome?*
            False

            *Tracking bug*
            https://crbug.com/40550039

            *Estimated milestones*
            Shipping on desktop         144
            Shipping on Android         144
            Shipping on WebView         144



            *Anticipated spec changes*

            Open questions about a feature may be a source of future
            web compat or interop issues. Please list open issues
            (e.g. links to known github issues in the project for the
            feature specification) whose resolution may introduce web
            compat/interop risk (e.g., changing to naming or
            structure of the API in a non-backward-compatible way).

            /No information provided/

            *Link to entry on the Chrome Platform Status*
            
https://chromestatus.com/feature/5134266027606016?gate=6607474169872384

            This intent message was generated by Chrome Platform
            Status <https://chromestatus.com/>.

-- Rune Lillesveen

-- You received this message because you are subscribed to
            the Google Groups "blink-dev" group.
            To unsubscribe from this group and stop receiving emails
            from it, send an email to [email protected].
            To view this discussion visit
            
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACuPfeQQp_NW%3DnoTwk2jpcjGzMb6wFyqj4KGm%3DqpMVyAM767tg%40mail.gmail.com
            
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACuPfeQQp_NW%3DnoTwk2jpcjGzMb6wFyqj4KGm%3DqpMVyAM767tg%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- You received this message because you are subscribed to the
        Google Groups "blink-dev" group.
        To unsubscribe from this group and stop receiving emails from
        it, send an email to [email protected].
        To view this discussion visit
        
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYcTTt4PNoX7oxUT_bTN2QGhbELKgFK7M_ojnne1NZgTfQ%40mail.gmail.com
        
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAARdPYcTTt4PNoX7oxUT_bTN2QGhbELKgFK7M_ojnne1NZgTfQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.



--
Rune Lillesveen

--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACuPfeR81uK_Rof9VxTX97BtB_QnCxFZ2sjHQDDRoT%2BgrWwsOA%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CACuPfeR81uK_Rof9VxTX97BtB_QnCxFZ2sjHQDDRoT%2BgrWwsOA%40mail.gmail.com?utm_medium=email&utm_source=footer>.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2bb4f387-a3f5-4838-b23c-8e1817ad0499%40chromium.org <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/2bb4f387-a3f5-4838-b23c-8e1817ad0499%40chromium.org?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/82679961-3083-4ff0-9490-f41fb86aa449%40gmail.com.

Reply via email to