On Tue, Oct 3, 2023 at 8:46 PM Anders Hartvoll Ruud <andr...@chromium.org> wrote:
> On Tue, Oct 3, 2023 at 3:14 PM Yoav Weiss <yoavwe...@chromium.org> wrote: > >> LGTM1 >> >> Thanks for evaluating the compat risk for this. While non-zero, it seems >> manageable given Mozilla already shipping this, with Safari likely to >> follow, given the landed implementation. >> > > Clarification: Mozilla is shipping the main part of the feature (retrying > a failed declaration as a nested style rule), but they are not (yet) > shipping the tweaks to css-syntax described as risk (1) and (2). (1) is a > recent resolution (~three weeks), so no mystery there. (2) has been part of > this all along - I assume it was seen as something that could be done > separately (and it is). > Just to make sure it wasn't *deliberately* omitted for whatever reason, I checked with Emilio and they do intend to implement (1) and (2) once it's specified. > > So in this case "Mozilla: Shipping" should only be interpreted as a > positive signal for the overall change, not as a way to manage compat risk. > :-) > > I'll emphasize again though, that in both (1) and (2), we're just > changing from one kind of invalid/has-no-effect to a *slightly* different > kind of invalid/has-no-effect. > > >> On Mon, Oct 2, 2023 at 1:30 PM Anders Hartvoll Ruud <andr...@chromium.org> >> wrote: >> >>> Contact emails >>> >>> andr...@chromium.org >>> >>> Specification >>> >>> https://drafts.csswg.org/css-syntax/#consume-block-contents >>> >>> Summary >>> >>> Allows nested style rules >>> <https://drafts.csswg.org/css-nesting-1/#nested-style-rule> to begin >>> with an identifier. For example, the following will now be possible: >>> >>> p { >>> >>> span { color: green; } >>> >>> } >>> >>> <p> >>> >>> <span>I am green</span> >>> >>> </p> >>> >>> Before this change, the inner span selector had to be “escaped” using >>> :is() or similar, due to restrictions in css-syntax. These restrictions >>> have now been lifted by giving the parser the ability to restart >>> <https://drafts.csswg.org/css-syntax/#token-stream-restore-a-mark>. >>> >>> Blink component >>> >>> Blink>CSS >>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS> >>> >>> TAG review >>> >>> None >>> >>> TAG review status >>> >>> Not applicable >>> >>> Risks >>> >>> Interoperability and Compatibility >>> >>> To address some problematic parsing edge cases, the CSSWG has made two >>> additional changes to css-syntax that have theoretical web-facing impact. >>> These changes will ship in this intent as well: >>> >>> >>> 1. >>> >>> Braces ({}) are now fundamentally invalid in standard properties, >>> unless they span the whole value. No property grammar allows {} in >>> any part of the value currently, so this is already invalid, but when >>> var() is used in combination with {}, this intent changes when it >>> becomes invalid. With this intent, e.g. color: var(--x) {}; becomes >>> invalid parse-time instead of at computed-value time >>> <https://drafts.csswg.org/css-variables/#invalid-at-computed-value-time>. >>> This is an observable difference, but there’s no known reason for >>> this to occur in practice outside of mistakes. Nevertheless, I have >>> tried to estimate the number of possibly-impacted sites: ~0.0011% (Web >>> Compat Analysis: Relaxed Nesting >>> >>> <https://docs.google.com/document/d/1WxIAXWFy3q9XJrFK8k2J5my71jn8Cvdxq6Z8NAg99Q0/edit#bookmark=id.ufp2erlyto93> >>> [@chromium.org]). >>> 2. >>> >>> A style rule prelude (i.e. the selector list) can no longer start >>> with --ident:. Again, this is in a sense already “invalid”, since >>> HTML elements never start with -- (including custom elements, which must >>> start with a letter), so such rules can never match anything. This intent >>> makes the situation a parse error instead. Estimated impact: ~0.0007% >>> (Web >>> Compat Analysis: Relaxed Nesting >>> >>> <https://docs.google.com/document/d/1WxIAXWFy3q9XJrFK8k2J5my71jn8Cvdxq6Z8NAg99Q0/edit#bookmark=id.geo17wxm8bwh> >>> [@chromium.org]). >>> >>> >>> Gecko: Shipped/Shipping ( >>> https://www.mozilla.org/en-US/firefox/117.0/releasenotes) >>> >>> WebKit: In development (https://github.com/WebKit/WebKit/pull/17189) >>> >>> Web developers: No signals >>> >>> 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? >>> >>> None >>> >>> >>> Debuggability >>> >>> Nested style rules that start with identifiers appear in the inspector >>> like other nested style rules. >>> >>> >>> Will this feature be supported on all six Blink platforms (Windows, Mac, >>> Linux, Chrome OS, 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 >>> >>> The tests exist in wpt_internal/css/css-nesting/ident at the time of >>> writing, but will be upstreamed when the feature is turned on. >>> >>> Flag name on chrome://flags >>> >>> CSSNestingIdent >>> >>> Finch feature name >>> >>> I’m not sure what a “Finch feature name” is. There have been no Finch >>> trials related to this, but the feature is guarded by the Blink runtime >>> flag “CSSNestingIdent” with “base_feature” unset, which automatically >>> generates a corresponding base::Feature. >>> >>> Non-finch justification >>> >>> None >>> >>> Requires code in //chrome? >>> >>> False >>> >>> Estimated milestones >>> >>> Shipping on desktop >>> >>> 120 >>> >>> Shipping on Android >>> >>> 120 >>> >>> Shipping on WebView >>> >>> 120 >>> >>> >>> >>> Anticipated spec changes >>> >>> These issues need to be resolved and/or edited into the spec before >>> shipping. >>> >>> >>> - >>> >>> https://github.com/w3c/csswg-drafts/issues/9317 >>> The behavior that braces are invalid in standard properties (unless >>> it’s the whole value) was resolved at TPAC 2023, but css-syntax has not >>> been updated yet. >>> - >>> >>> https://github.com/w3c/csswg-drafts/issues/9336 >>> This is a tweak to the error recovery of the --ident: case. This >>> needs a resolution, and an edit. >>> >>> >>> There are no anticipated spec changes after shipping. >>> >>> Link to entry on the Chrome Platform Status >>> >>> https://chromestatus.com/feature/5070369895743488 >>> >>> This intent message was generated by Chrome Platform Status >>> <https://chromestatus.com/>. >>> >>> -- >>> 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 blink-dev+unsubscr...@chromium.org. >>> To view this discussion on the web visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUpW7rNg%3DUMe34ERTnaFug2W1FPzmYEypOKqLN1Kk1OE2Q%40mail.gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUpW7rNg%3DUMe34ERTnaFug2W1FPzmYEypOKqLN1Kk1OE2Q%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 blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKFBnUq-dMRuTD8wdLusDxat6wEUwHBD55kw0fJHf5TwHabZRw%40mail.gmail.com.