Thanks for the analysis. I think the compat risk here is low. Since we know of at least 3 instances that are likely to break, or at least to have a different behavior, I'd ask that we try to reach out to those sites as an FYI about this change.
Other than that, LGTM1 On Wed, Dec 11, 2024 at 12:42 PM Munira Tursunova <moon...@google.com> wrote: > Thank you for your replies. > > I notice that we're failing all the tests on >> https://wpt.fyi/results/css/css-values?label=master&label=experimental&aligned&q=attr >> , >> probably because this feature is not available behind the >> experimental-web-platform-features flag. >> >> Can you confirm that we're passing all the tests with the >> feature-specific flag enabled? Or are there interesting failures left that >> are worth highlighting? >> > > Yes, the attr() tests should pass once the runtime flag is enabled. > > Regarding potential open spec issues, I found 6 >> <https://github.com/w3c/csswg-drafts/issues?q=is%3Aopen+label%3Acss-values-5+attr+in%3Atitle>, >> including two that the TAG highlighted in their review plus one tagged as >> "Agenda+" implying it's still an active topic for discussion. If you think >> we don't need to resolve those issues before shipping, can you explain why >> in more detail? > > > I have looked at the issues, most of them are not relevant anymore with > the new attr() syntax. This also applies to the open issue mentioned in TAG > review (issue 5079 <https://github.com/w3c/csswg-drafts/issues/5079>), I > don't think this is relevant anymore since according to CSS Values and > Units Module Level 5: > <https://drafts.csswg.org/css-values-5/#attr-security> > > Using an attr()-tainted value as or in a <url> makes a declaration invalid >> at computed-value time. > > > There is one issue that might be still relevant (issue 10503 > <https://github.com/w3c/csswg-drafts/issues/10503>), but I don't think it > should block the shipping since it's a serialization issue and the spec > might already be interpreted that way. > > Beyond what Vlad and Dominic has mentioned, we're also missing formal >> signals from other vendors. They have requested that we not use generic >> opinions from staff as official signals. You can find how to get formals >> vendor signals by following the link "signals on their opinion of the API" >> in https://www.chromium.org/blink/launching-features/ > > > Thanks, filed https://github.com/mozilla/standards-positions/issues/1143 > and https://github.com/WebKit/standards-positions/issues/435 > <https://github.com/WebKit/standards-positions/issues/435>. > > The second example ( >> https://github.com/tursunova/web-platform-explainer/blob/main/advanced-attr-explainer.md#example-2 >> ) >> seems plausible in that it may be a valid way to organize information on a >> parent in data attributes and use that in children to display. I have found >> examples where a similar pattern happens on the element itself (var is set >> on an element via attr, and then used in element::before's content). I >> assume that this case will be fine in that the behavior change won't affect >> it right? > > > Yes, that should work fine, the only dangerous scenarios are when the > attr() function is used on the parent element, but the attribute is defined > on the child element. > > Regarding compatibility, the scenarios you outlined >> <https://github.com/tursunova/web-platform-explainer/blob/main/advanced-attr-explainer.md#backwards-compatibility> >> as >> changing behavior seem rare enough that I hope they don't cause problems. >> However, have you made any attempt to quantify them, e.g. via use counter? >> (It's OK if not.) > > > Is the plan to roll this out via finch and monitor for breakages? >> > > >> Is there some data you could reasonably collect (UMA and/or a cluster >> telemetry run perhaps) to try to put an upper bound on the breaking change >> risk? I think we all expect that the risk is low, but is it extremely low >> and so something we should just launch with a finch killswitch ready to use >> at the first sign of issue, or is it only very low meaning we need to go >> further - especially for our enterprise change guidelines >> <https://www.chromium.org/developers/enterprise-changes/>? > > > Manually checked the content of the websites from httparchieve query > results, most of the pages use body, attr() and var() on the same pseudo > element, which shouldn’t cause the breakages. The upper bound percentage > for breakages is *~0.005%*. Summed up the analysis for gathered data from > httparchieve in the doc > <https://docs.google.com/document/d/15pi0QVsZkOIbxDY6p8tH5v1E-UabMC8aR4YXfYb9C1Q/edit?usp=sharing> > . > > > > Thank you, > Munira > > On Wed, Dec 4, 2024 at 5:41 PM Rick Byers <rby...@chromium.org> wrote: > >> Discussed in API owners meeting today that we don't really understand the >> compat risk here. Vlad makes a compelling argument that the risk in example >> #2 may be non-trivial (especially when considering inheritance scenarios >> beyond just custom properties). Also you'll need to request enterprise >> review and they're going to want to know what the extent of the compat risk >> is (do we need a policy opt-out and 3-release heads up in the release >> notes?). >> >> Is there some data you could reasonably collect (UMA and/or a cluster >> telemetry run perhaps) to try to put an upper bound on the breaking change >> risk? I think we all expect that the risk is low, but is it extremely low >> and so something we should just launch with a finch killswitch ready to use >> at the first sign of issue, or is it only very low meaning we need to go >> further - especially for our enterprise change guidelines >> <https://www.chromium.org/developers/enterprise-changes/>? >> >> Thanks, >> Rick >> >> On Wed, Dec 4, 2024 at 9:43 AM Daniel Bratell <bratel...@gmail.com> >> wrote: >> >>> Beyond what Vlad and Dominic has mentioned, we're also missing formal >>> signals from other vendors. They have requested that we not use generic >>> opinions from staff as official signals. You can find how to get formals >>> vendor signals by following the link "signals on their opinion of the API" >>> in https://www.chromium.org/blink/launching-features/ >>> >>> /Daniel >>> On 2024-12-04 03:29, Vladimir Levin wrote: >>> >>> >>> >>> On Mon, Dec 2, 2024 at 10:47 PM Domenic Denicola <dome...@chromium.org> >>> wrote: >>> >>>> Thank you, that explainer is very helpful! >>>> >>>> I notice that we're failing all the tests on >>>> https://wpt.fyi/results/css/css-values?label=master&label=experimental&aligned&q=attr >>>> , probably because this feature is not available behind the >>>> experimental-web-platform-features flag. >>>> >>>> Can you confirm that we're passing all the tests with the >>>> feature-specific flag enabled? Or are there interesting failures left that >>>> are worth highlighting? >>>> >>>> Regarding compatibility, the scenarios you outlined >>>> <https://github.com/tursunova/web-platform-explainer/blob/main/advanced-attr-explainer.md#backwards-compatibility> >>>> as changing behavior seem rare enough that I hope they don't cause >>>> problems. However, have you made any attempt to quantify them, e.g. via use >>>> counter? (It's OK if not.) >>>> >>> >>> The second example ( >>> https://github.com/tursunova/web-platform-explainer/blob/main/advanced-attr-explainer.md#example-2 >>> ) seems plausible in that it may be a valid way to organize information on >>> a parent in data attributes and use that in children to display. I have >>> found examples where a similar pattern happens on the element itself (var >>> is set on an element via attr, and then used in element::before's content). >>> I assume that this case will be fine in that the behavior change won't >>> affect it right? I couldn't find any examples of parent to child var >>> transfer (the breaking case), but that of course doesn't mean that it >>> doesn't exist. >>> >>> Is the plan to roll this out via finch and monitor for breakages? >>> >>> Thanks, >>> Vlad >>> >>> >>>> Regarding potential open spec issues, I found 6 >>>> <https://github.com/w3c/csswg-drafts/issues?q=is%3Aopen+label%3Acss-values-5+attr+in%3Atitle>, >>>> including two that the TAG highlighted in their review plus one tagged as >>>> "Agenda+" implying it's still an active topic for discussion. If you think >>>> we don't need to resolve those issues before shipping, can you explain why >>>> in more detail? >>>> >>>> >>>> On Tue, Dec 3, 2024 at 12:31 AM Munira Tursunova <moon...@google.com> >>>> wrote: >>>> >>>>> Thank you, Domenic! >>>>> >>>>> I uploaded explainer here: >>>>> https://github.com/tursunova/web-platform-explainer/blob/main/advanced-attr-explainer.md >>>>> . >>>>> >>>>> On Wed, Nov 27, 2024 at 3:02 AM Domenic Denicola <dome...@chromium.org> >>>>> wrote: >>>>> >>>>>> >>>>>> >>>>>> On Tue, Nov 26, 2024 at 8:07 PM Chromestatus < >>>>>> ad...@cr-status.appspotmail.com> wrote: >>>>>> >>>>>>> Contact emails moon...@google.com, chris...@chromium.org >>>>>>> >>>>>>> Explainer None >>>>>> >>>>>> >>>>>> Some sort of explainer would be appreciated for this change, >>>>>> especially given the security complexity. >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> Specification https://drafts.csswg.org/css-values-5/#attr-notation >>>>>>> >>>>>>> Summary >>>>>>> >>>>>>> Implement the augmentation to attr() specified in CSS Level 5, which >>>>>>> allows types besides <string> and usage in all CSS properties (besides >>>>>>> pseudo-element 'content'). Example: <style> div { background-color: >>>>>>> attr(data-foo type(<color>), red); } </style> <div >>>>>>> data-foo="blue">test</div> >>>>>>> >>>>>>> >>>>>>> Blink component Blink>CSS >>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS> >>>>>>> >>>>>>> Search tags css <http:///features#tags:css>, css-values >>>>>>> <http:///features#tags:css-values>, attr >>>>>>> <http:///features#tags:attr> >>>>>>> >>>>>>> TAG review https://github.com/w3ctag/design-reviews/issues/513 >>>>>>> >>>>>>> TAG review status Pending >>>>>>> >>>>>>> Risks >>>>>>> >>>>>>> >>>>>>> Interoperability and Compatibility >>>>>>> >>>>>>> No browser has implemented this feature yet. Even though there's no >>>>>>> negative signals from other browsers, there's still a minimal >>>>>>> interoperability risk that we end up the only implementation. There are >>>>>>> also a few known cases where this advanced version behaves differently >>>>>>> from >>>>>>> the basic version in pseudo-element content property, which is a >>>>>>> compatibility risk: - https://bit.ly/2XDhHtg - >>>>>>> https://bit.ly/3grF3ur >>>>>>> >>>>>>> >>>>>>> *Gecko*: No signal ( >>>>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=435426) >>>>>>> >>>>>>> *WebKit*: No signal (https://bugs.webkit.org/show_bug.cgi?id=26609) >>>>>>> >>>>>>> *Web developers*: No signals >>>>>>> >>>>>>> *Other signals*: >>>>>>> >>>>>>> Security >>>>>>> >>>>>>> attr() can be used by injected CSS for data exfiltration. >>>>>>> https://github.com/w3c/csswg-drafts/issues/5092 >>>>>>> >>>>>> >>>>>> How have you resolved these security issues? (A writeup as part of an >>>>>> explainer, perhaps with an alternatives considered section, would help >>>>>> here.) >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> 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 >>>>>>> >>>>>>> No additional DevTools support is needed. attr() function is >>>>>>> inspectable in DevTools same way as any other CSS substitution function. >>>>>>> >>>>>>> >>>>>>> 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/results/css/css-values?label=master&label=experimental&aligned&q=attr >>>>>>> >>>>>>> >>>>>>> Flag name on about://flags CSSAdvancedAttrFunction >>>>>>> >>>>>>> Finch feature name CSSAdvancedAttrFunction >>>>>>> >>>>>>> Requires code in //chrome? False >>>>>>> >>>>>>> Tracking bug >>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=246571 >>>>>>> >>>>>>> Estimated milestones >>>>>>> Shipping on desktop 133 >>>>>>> Shipping on Android 133 >>>>>>> Shipping on WebView 133 >>>>>>> >>>>>>> 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). >>>>>>> None >>>>>>> >>>>>>> Link to entry on the Chrome Platform Status >>>>>>> https://chromestatus.com/feature/4680129030651904?gate=5932337540366336 >>>>>>> >>>>>>> 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 visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6745abd8.2b0a0220.19a388.0324.GAE%40google.com >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6745abd8.2b0a0220.19a388.0324.GAE%40google.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 visit >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra8-8CgACPS80AmMh2p8kMBW0LtCBrRDARbY%3Di_EWzdfpw%40mail.gmail.com >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAM0wra8-8CgACPS80AmMh2p8kMBW0LtCBrRDARbY%3Di_EWzdfpw%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 visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2NVy6Lvzwz1ifRBm4yfBwYsPO21V3vvAvvQsD2K8b2HaA%40mail.gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2NVy6Lvzwz1ifRBm4yfBwYsPO21V3vvAvvQsD2K8b2HaA%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 visit >>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7ada5371-84d5-40d8-8a6f-82fc15e9c49c%40gmail.com >>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7ada5371-84d5-40d8-8a6f-82fc15e9c49c%40gmail.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 visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CADsXd2MN2s83Vg2qjKy%2BpfVBRmbgY8UKsmXnAK3TkcgsPA_bhg%40mail.gmail.com.