On Mon, Apr 11, 2022 at 1:40 PM Anders Hartvoll Ruud <andr...@chromium.org> wrote:
> Contact emails > > > *andr...@chromium.org <andr...@chromium.org>kbabb...@microsoft.com > <kbabb...@microsoft.com>*Explainer > > > > *NoneThis article by Bramus > <https://www.bram.us/2021/10/26/media-queries-level-4-media-query-range-contexts/> > may be helpful.*Specification > > > *https://www.w3.org/TR/mediaqueries-4/#mq-range-context > <https://www.w3.org/TR/mediaqueries-4/#mq-range-context>*Summary > > > > > *Allows writing media queries using ordinary mathematical comparison > operators <https://drafts.csswg.org/mediaqueries-4/#typedef-mf-range>, and > adds support for or > <https://drafts.csswg.org/mediaqueries-4/#typedef-media-or>, not > <https://drafts.csswg.org/mediaqueries-4/#typedef-media-not>, nesting > <https://drafts.csswg.org/mediaqueries-4/#typedef-media-in-parens>, and the > special evaluation of “unknown” > <https://drafts.csswg.org/mediaqueries-4/#:~:text=The%20result%20is%20unknown> > features.Tiny example:Without this feature: @media (min-width: 100px)With > this feature: @media (width >= 100px)*Blink component > > > *Blink>CSS > <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3ECSS>*TAG > review > > > *Probably not needed(?)*TAG review status > > > *Not applicable*Risks > > Interoperability and Compatibility > > > > > *Gecko: Shipped/Shipping > (https://bugzilla.mozilla.org/show_bug.cgi?id=1422225 > <https://bugzilla.mozilla.org/show_bug.cgi?id=1422225>) Except: - Support > for `<general-enclosed>`, due to concerns that are discussed below.- The > `<mf-value> <mf-comparison> <mf-name>` form, due to Issue 2791 > <https://github.com/w3c/csswg-drafts/issues/2791>, which was resolved as > no-change.WebKit: I sent an e-mail to webkit-dev just now. I’ll update > if/when I get a response. Related info: @container, which is implemented in > Safari TP, uses an almost identical syntax, so there appears to be no > fundamental objections, at least.* > Update: support from Webkit: https://www.mail-archive.com/webkit-dev@lists.webkit.org/msg30451.html > > > *Web developers: No signalsOther 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?One > significant concern (raised by Emilio) is regarding the > “unknown”/<general-enclosed> evaluation. Currently, a media query like > @media (unknown: 500kg) will parse to (and serialize as) “@media not all”. > (In mediaqueries-3, a media query with unknown parts doesn't fail parsing > in the normal sense, but instead becomes “not all” > <https://drafts.csswg.org/mediaqueries-3/#:~:text=when%20one%20of%20the%20specified%20media%20features%20is%20not%20known.>). > The concern is that authors compare the parsed result of a media query > condition against “not all” in order to detect features. For example:let > prefersContrastSupported = matchMedia("(prefers-contrast)").media != "not > all";With this I2S, prefers-contrast (and any other unknown feature > matching <general-enclosed>) will appear to parse successfully, and won’t > be converted to “not all” anymore.To understand the impact of this, I added > some use-counters for various APIs which count whenever a media query that > would contain <general-enclosed> is serialized:Window.matchMedia | ~0.1% > <https://chromestatus.com/metrics/feature/timeline/popularity/4082>MediaList::mediaText > | ~0.1% > <https://chromestatus.com/metrics/feature/timeline/popularity/4083>CSSConditionRule.conditionText > | ~0.007% > <https://chromestatus.com/metrics/feature/timeline/popularity/4084>Note: > Chromestatus has a bug where the name does not show up for these counters.I > then queried HTTP Archive for response bodies containing `not all` (in > quotes) from sites that hit one of the above use-counters, and the results > show that it’s almost entirely coming from the following two scripts [full > data > <https://docs.google.com/spreadsheets/d/1z6HaTSgV1jVpJvQbTvYObUlaMYpgbvfzqmy-NESuHKw/edit?usp=sharing>]: > - https://mc.yandex.ru/metrika/tag.js > <https://mc.yandex.ru/metrika/tag.js>- > https://mc.yandex.ru/metrika/watch.js > <http://mc.yandex.ru/metrika/watch.js>However, looking at the live version > of those files in Chrome (Desktop), I can’t find “not all”. It would appear > that they don’t use this technique anymore. (Or I’m not using the right > headers/User-Agent in the request).This research is not perfect, e.g. there > could be other ways of doing feature detection that does not involve “not > all”, or people could be using .cssText, and I assume not the entire web is > in the HTTP Archive. But overall I’m fairly confident that it’s not an > exceedingly common practice. The risk seems worth the gain of avoiding > future-proofing mistakes > <https://wiki.csswg.org/ideas/mistakes#:~:text=Selectors%20have%20terrible%20future%2Dproofing> > for media queries.*Debuggability > > > > *The new syntax is automatically visible in devtools.*Is this feature > fully tested by web-platform-tests > <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md> > ? > > > > *NoThe existing WPTs are not sufficient at the moment - I will complete > the coverage before shipping. Also some changes to existing tests will be > required in relation to the <general-enclosed> handling: tests that verify > that some MQ parsed (or didn’t) will now (likely) always appear to have > parsed correctly due to <general-enclosed>. These tests probably need to be > changed to instead detect whether or not the result is “unknown” > <https://drafts.csswg.org/mediaqueries-4/#:~:text=The%20result%20is%20unknown>.*Flag > name > > > *CSSMediaQueries4*Requires code in //chrome? > > > *False*Tracking bug > > > *https://bugs.chromium.org/p/chromium/issues/detail?id=962417 > <https://bugs.chromium.org/p/chromium/issues/detail?id=962417>*Estimated > milestones > > > > *No milestones specified*Link to entry on the Chrome Platform Status > > https://chromestatus.com/feature/5203042742829056 > > This intent message was generated by Chrome Platform Status > <https://chromestatus.com/> (more or less). > > -- 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/CAKFBnUooymNwgbatr3fBmXHe9RA8atBQFLkPVCMxBC9wtYhhOA%40mail.gmail.com.