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.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/CAKFBnUp4PiXx57G3-y8BxScG-ecHGSEPQZyZjoYGz8r_ECyipg%40mail.gmail.com.

Reply via email to