Title: [277071] trunk
Revision
277071
Author
[email protected]
Date
2021-05-06 00:36:29 -0700 (Thu, 06 May 2021)

Log Message

[mediaqueries] Remove "on-demand" value for any-hover/hover & "forced" value for prefers-contrast
https://bugs.webkit.org/show_bug.cgi?id=225400

Reviewed by Antti Koivisto.

These were both removed from the spec and currently never evaluate to true. They also won't eval to true after this change.
Only change is serialization, since the values will become invalid.

Also:
- Re-synced css/mediaqueries WPTs
- Adjusted any-hover/hover parsing tests accordingly.

LayoutTests/imported/w3c:

* web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt: Added.
* web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html: Added.
* web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt: Added.
* web-platform-tests/css/mediaqueries/prefers-contrast.html: Added.
* web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:
* web-platform-tests/css/mediaqueries/test_media_queries.html:
* web-platform-tests/css/mediaqueries/w3c-import.log:

Source/WebCore:

* css/CSSValueKeywords.in:
* css/MediaQueryEvaluator.cpp:
(WebCore::prefersContrastEvaluate):
* css/MediaQueryExpression.cpp:
(WebCore::isValidValueForIdentMediaFeature):

LayoutTests:

* fast/media/mq-any-hover-cssom.html:
* fast/media/mq-any-hover-cssom-expected.txt:
* fast/media/mq-hover-cssom.html:
* fast/media/mq-hover-cssom-expected.txt:

Modified Paths

Added Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (277070 => 277071)


--- trunk/LayoutTests/ChangeLog	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/ChangeLog	2021-05-06 07:36:29 UTC (rev 277071)
@@ -1,3 +1,22 @@
+2021-05-06  Tim Nguyen  <[email protected]>
+
+        [mediaqueries] Remove "on-demand" value for any-hover/hover & "forced" value for prefers-contrast
+        https://bugs.webkit.org/show_bug.cgi?id=225400
+
+        Reviewed by Antti Koivisto.
+
+        These were both removed from the spec and currently never evaluate to true. They also won't eval to true after this change.
+        Only change is serialization, since the values will become invalid.
+
+        Also:
+        - Re-synced css/mediaqueries WPTs
+        - Adjusted any-hover/hover parsing tests accordingly.
+
+        * fast/media/mq-any-hover-cssom.html:
+        * fast/media/mq-any-hover-cssom-expected.txt:
+        * fast/media/mq-hover-cssom.html:
+        * fast/media/mq-hover-cssom-expected.txt:
+
 2021-05-05  Robert Jenner  <[email protected]>
 
         [ BigSur wk2 arm64 ] http/tests/inspector/network/resource-sizes-network.html is a flakey text failure

Modified: trunk/LayoutTests/fast/media/mq-any-hover-cssom-expected.txt (277070 => 277071)


--- trunk/LayoutTests/fast/media/mq-any-hover-cssom-expected.txt	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/fast/media/mq-any-hover-cssom-expected.txt	2021-05-06 07:36:29 UTC (rev 277071)
@@ -13,8 +13,6 @@
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
-PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: on-demand)"
-PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: on-demand)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: none)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: none)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
@@ -23,6 +21,8 @@
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(any-hover: hover)"
+PASS document.styleSheets[1].cssRules[0].media.mediaText is "not all"
+PASS document.styleSheets[1].cssRules[0].media.mediaText is "not all"
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/fast/media/mq-any-hover-cssom.html (277070 => 277071)


--- trunk/LayoutTests/fast/media/mq-any-hover-cssom.html	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/fast/media/mq-any-hover-cssom.html	2021-05-06 07:36:29 UTC (rev 277071)
@@ -19,8 +19,6 @@
         ["(Any-Hover: hover)", "(any-hover: hover)"],
         ["(ANY-HOVER: hover)", "(any-hover: hover)"],
         ["(Any-Hover: Hover)", "(any-hover: hover)"],
-        ["(any-hover: ON-DEMAND)", "(any-hover: on-demand)"],
-        ["(Any-Hover: On-demand)", "(any-hover: on-demand)"],
         ["(any-hover: NONE)", "(any-hover: none)"],
         ["(Any-Hover: None)", "(any-hover: none)"],
 
@@ -31,6 +29,10 @@
         ["(any-hover : hover)", "(any-hover: hover)"],
         ["(     any-hover    : hover     )", "(any-hover: hover)"],
         ["(any-hover\t:\thover)", "(any-hover: hover)"],
+
+        // Obsolete values.
+        ["(any-hover: ON-DEMAND)", "not all"],
+        ["(Any-Hover: On-demand)", "not all"],
     ];
 
     var targetStyle = document.getElementById('target-style');

Modified: trunk/LayoutTests/fast/media/mq-hover-cssom-expected.txt (277070 => 277071)


--- trunk/LayoutTests/fast/media/mq-hover-cssom-expected.txt	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/fast/media/mq-hover-cssom-expected.txt	2021-05-06 07:36:29 UTC (rev 277071)
@@ -13,8 +13,6 @@
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
-PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: on-demand)"
-PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: on-demand)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: none)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: none)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
@@ -23,6 +21,8 @@
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
 PASS document.styleSheets[1].cssRules[0].media.mediaText is "(hover: hover)"
+PASS document.styleSheets[1].cssRules[0].media.mediaText is "not all"
+PASS document.styleSheets[1].cssRules[0].media.mediaText is "not all"
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/LayoutTests/fast/media/mq-hover-cssom.html (277070 => 277071)


--- trunk/LayoutTests/fast/media/mq-hover-cssom.html	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/fast/media/mq-hover-cssom.html	2021-05-06 07:36:29 UTC (rev 277071)
@@ -19,8 +19,6 @@
         ["(Hover: hover)", "(hover: hover)"],
         ["(HOVER: hover)", "(hover: hover)"],
         ["(Hover: Hover)", "(hover: hover)"],
-        ["(hover: ON-DEMAND)", "(hover: on-demand)"],
-        ["(Hover: On-demand)", "(hover: on-demand)"],
         ["(hover: NONE)", "(hover: none)"],
         ["(Hover: None)", "(hover: none)"],
 
@@ -31,6 +29,10 @@
         ["(hover : hover)", "(hover: hover)"],
         ["(     hover    : hover     )", "(hover: hover)"],
         ["(hover\t:\thover)", "(hover: hover)"],
+
+        // Obsolete values.
+        ["(hover: ON-DEMAND)", "not all"],
+        ["(Hover: On-demand)", "not all"],
     ];
 
     var targetStyle = document.getElementById('target-style');

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (277070 => 277071)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2021-05-06 07:36:29 UTC (rev 277071)
@@ -1,5 +1,27 @@
 2021-05-06  Tim Nguyen  <[email protected]>
 
+        [mediaqueries] Remove "on-demand" value for any-hover/hover & "forced" value for prefers-contrast
+        https://bugs.webkit.org/show_bug.cgi?id=225400
+
+        Reviewed by Antti Koivisto.
+
+        These were both removed from the spec and currently never evaluate to true. They also won't eval to true after this change.
+        Only change is serialization, since the values will become invalid.
+
+        Also:
+        - Re-synced css/mediaqueries WPTs
+        - Adjusted any-hover/hover parsing tests accordingly.
+
+        * web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt: Added.
+        * web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html: Added.
+        * web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt: Added.
+        * web-platform-tests/css/mediaqueries/prefers-contrast.html: Added.
+        * web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:
+        * web-platform-tests/css/mediaqueries/test_media_queries.html:
+        * web-platform-tests/css/mediaqueries/w3c-import.log:
+
+2021-05-06  Tim Nguyen  <[email protected]>
+
         Re-sync css/css-box/parsing/padding-valid.html WPT
 
         Unreviewed. Trivial WPT sync on one single test.

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt (0 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children-expected.txt	2021-05-06 07:36:29 UTC (rev 277071)
@@ -0,0 +1,4 @@
+
+
+PASS Dynamic evaluation of media queries works fine in presence of empty media rule
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html (0 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html	2021-05-06 07:36:29 UTC (rev 277071)
@@ -0,0 +1,40 @@
+<!doctype html>
+<title>Dynamic evaluation of media queries works fine in presence of empty media rule</title>
+<link rel="author" href="" title="Emilio Cobos Álvarez">
+<link rel="author" href="" title="Mozilla">
+<link rel="help" href=""
+<link rel="help" href=""
+<script src=""
+<script src=""
+<iframe width=500 height=300 frameborder=0></iframe>
+<script>
+let iframe = document.querySelector("iframe");
+promise_test(async function (t) {
+  await new Promise(resolve => {
+    window.addEventListener("load", resolve);
+  });
+  let frameLoaded = new Promise(resolve => {
+    iframe.addEventListener("load", resolve);
+  });
+  iframe.srcdoc = `
+    <style>
+      :root { background-color: red; }
+      /* This one should never apply */
+      @media (min-width: 1500px) {}
+      /* This one should change and start matching */
+      @media (max-width: 400px) {
+        :root { background-color: lime; }
+      }
+    </style>
+  `;
+  await frameLoaded;
+
+  function getColor() {
+    return iframe.contentWindow.getComputedStyle(iframe.contentDocument.documentElement).backgroundColor;
+  }
+
+  assert_equals(getColor(), "rgb(255, 0, 0)", "Should start red");
+  iframe.width = 400;
+  assert_equals(getColor(), "rgb(0, 255, 0)", "Should turn green");
+});
+</script>

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt (0 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast-expected.txt	2021-05-06 07:36:29 UTC (rev 277071)
@@ -0,0 +1,31 @@
+
+PASS Should be parseable in a CSS stylesheet: '(prefers-contrast)'
+PASS Should be parseable in a CSS stylesheet: '(prefers-contrast: no-preference)'
+PASS Should be parseable in a CSS stylesheet: '(prefers-contrast: more)'
+PASS Should be parseable in a CSS stylesheet: '(prefers-contrast: less)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: increase)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: none)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: forced high)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: forced low)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast > increase)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-increased-contrast)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-decreased-contrast)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: high)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: low)'
+PASS Should not be parseable in a CSS stylesheet: '(prefers-contrast: forced)'
+PASS Should be parseable in JS: '(prefers-contrast)'
+PASS Should be parseable in JS: '(prefers-contrast: no-preference)'
+PASS Should be parseable in JS: '(prefers-contrast: more)'
+PASS Should be parseable in JS: '(prefers-contrast: less)'
+PASS Should not be parseable in JS: '(prefers-contrast: increase)'
+PASS Should not be parseable in JS: '(prefers-contrast: none)'
+PASS Should not be parseable in JS: '(prefers-contrast: forced high)'
+PASS Should not be parseable in JS: '(prefers-contrast: forced low)'
+PASS Should not be parseable in JS: '(prefers-contrast > increase)'
+PASS Should not be parseable in JS: '(prefers-increased-contrast)'
+PASS Should not be parseable in JS: '(prefers-decreased-contrast)'
+PASS Should not be parseable in JS: '(prefers-contrast: high)'
+PASS Should not be parseable in JS: '(prefers-contrast: low)'
+PASS Should not be parseable in JS: '(prefers-contrast: forced)'
+PASS Check boolean context evaluation.
+

Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast.html (0 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast.html	                        (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast.html	2021-05-06 07:36:29 UTC (rev 277071)
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<link rel="help" href="" />
+<script type="text/_javascript_" src=""
+<script type="text/_javascript_" src=""
+
+<script type="text/_javascript_" src=""
+<script>
+query_should_be_css_parseable("(prefers-contrast)");
+query_should_be_css_parseable("(prefers-contrast: no-preference)");
+query_should_be_css_parseable("(prefers-contrast: more)");
+query_should_be_css_parseable("(prefers-contrast: less)");
+
+query_should_not_be_css_parseable("(prefers-contrast: increase)");
+query_should_not_be_css_parseable("(prefers-contrast: none)");
+query_should_not_be_css_parseable("(prefers-contrast: forced high)");
+query_should_not_be_css_parseable("(prefers-contrast: forced low)");
+query_should_not_be_css_parseable("(prefers-contrast > increase)");
+query_should_not_be_css_parseable("(prefers-increased-contrast)");
+query_should_not_be_css_parseable("(prefers-decreased-contrast)");
+query_should_not_be_css_parseable("(prefers-contrast: high)");
+query_should_not_be_css_parseable("(prefers-contrast: low)");
+query_should_not_be_css_parseable("(prefers-contrast: forced)");
+
+query_should_be_js_parseable("(prefers-contrast)");
+query_should_be_js_parseable("(prefers-contrast: no-preference)");
+query_should_be_js_parseable("(prefers-contrast: more)");
+query_should_be_js_parseable("(prefers-contrast: less)");
+
+query_should_not_be_js_parseable("(prefers-contrast: increase)");
+query_should_not_be_js_parseable("(prefers-contrast: none)");
+query_should_not_be_js_parseable("(prefers-contrast: forced high)");
+query_should_not_be_js_parseable("(prefers-contrast: forced low)");
+query_should_not_be_js_parseable("(prefers-contrast > increase)");
+query_should_not_be_js_parseable("(prefers-increased-contrast)");
+query_should_not_be_js_parseable("(prefers-decreased-contrast)");
+query_should_not_be_js_parseable("(prefers-contrast: high)");
+query_should_not_be_js_parseable("(prefers-contrast: low)");
+query_should_not_be_js_parseable("(prefers-contrast: forced)");
+
+test(() => {
+  // no-preference is the default and all other values evaluate to
+  // true in the boolean context. If no-preference matches, then
+  // boolean context should be false. If no-preference does not match
+  // then boolean context should be true. Therefore, these two values
+  // should always be each others inverse irrespective of OS level
+  // settings.
+  let booleanContext = window.matchMedia("(prefers-contrast)");
+  let noPref = window.matchMedia("(prefers-contrast: no-preference)");
+  assert_equals(noPref.matches, !booleanContext.matches);
+}, "Check boolean context evaluation.");
+</script>

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt (277070 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt	2021-05-06 07:36:29 UTC (rev 277071)
@@ -64,7 +64,7 @@
 PASS subtest_60
 PASS subtest_61
 PASS subtest_62
-FAIL subtest_63 assert_true: expected true got false
+PASS subtest_63
 FAIL subtest_64 assert_true: expected true got false
 FAIL subtest_65 assert_true: expected true got false
 FAIL subtest_66 assert_true: expected true got false
@@ -72,7 +72,7 @@
 FAIL subtest_68 assert_true: expected true got false
 FAIL subtest_69 assert_true: expected true got false
 FAIL subtest_70 assert_true: expected true got false
-PASS subtest_71
+FAIL subtest_71 assert_true: expected true got false
 PASS subtest_72
 PASS subtest_73
 PASS subtest_74
@@ -79,7 +79,7 @@
 PASS subtest_75
 PASS subtest_76
 PASS subtest_77
-FAIL subtest_78 assert_true: expected true got false
+PASS subtest_78
 FAIL subtest_79 assert_true: expected true got false
 FAIL subtest_80 assert_true: expected true got false
 FAIL subtest_81 assert_true: expected true got false
@@ -87,7 +87,7 @@
 FAIL subtest_83 assert_true: expected true got false
 FAIL subtest_84 assert_true: expected true got false
 FAIL subtest_85 assert_true: expected true got false
-PASS subtest_86
+FAIL subtest_86 assert_true: expected true got false
 PASS subtest_87
 PASS subtest_88
 PASS subtest_89
@@ -94,8 +94,8 @@
 PASS subtest_90
 PASS subtest_91
 PASS subtest_92
-FAIL subtest_93 assert_true: expected true got false
-FAIL subtest_94 assert_true: expected true got false
+PASS subtest_93
+PASS subtest_94
 FAIL subtest_95 assert_true: expected true got false
 FAIL subtest_96 assert_true: expected true got false
 FAIL subtest_97 assert_true: expected true got false
@@ -102,8 +102,8 @@
 FAIL subtest_98 assert_true: expected true got false
 FAIL subtest_99 assert_true: expected true got false
 FAIL subtest_100 assert_true: expected true got false
-PASS subtest_101
-PASS subtest_102
+FAIL subtest_101 assert_true: expected true got false
+FAIL subtest_102 assert_true: expected true got false
 PASS subtest_103
 PASS subtest_104
 PASS subtest_105
@@ -127,8 +127,8 @@
 PASS subtest_123
 PASS subtest_124
 PASS subtest_125
-FAIL subtest_126 assert_true: expected true got false
-FAIL subtest_127 assert_true: expected true got false
+PASS subtest_126
+PASS subtest_127
 FAIL subtest_128 assert_true: expected true got false
 FAIL subtest_129 assert_true: expected true got false
 FAIL subtest_130 assert_true: expected true got false
@@ -135,15 +135,15 @@
 FAIL subtest_131 assert_true: expected true got false
 FAIL subtest_132 assert_true: expected true got false
 FAIL subtest_133 assert_true: expected true got false
-PASS subtest_134
-PASS subtest_135
+FAIL subtest_134 assert_true: expected true got false
+FAIL subtest_135 assert_true: expected true got false
 PASS subtest_136
 PASS subtest_137
 PASS subtest_138
 PASS subtest_139
 PASS subtest_140
-FAIL subtest_141 assert_true: expected true got false
-FAIL subtest_142 assert_true: expected true got false
+PASS subtest_141
+PASS subtest_142
 FAIL subtest_143 assert_true: expected true got false
 FAIL subtest_144 assert_true: expected true got false
 FAIL subtest_145 assert_true: expected true got false
@@ -150,55 +150,55 @@
 FAIL subtest_146 assert_true: expected true got false
 FAIL subtest_147 assert_true: expected true got false
 FAIL subtest_148 assert_true: expected true got false
-PASS subtest_149
-PASS subtest_150
+FAIL subtest_149 assert_true: expected true got false
+FAIL subtest_150 assert_true: expected true got false
 PASS subtest_151
 PASS subtest_152
 PASS subtest_153
 PASS subtest_154
 PASS subtest_155
-FAIL subtest_156 assert_true: expected true got false
-FAIL subtest_157 assert_true: expected true got false
-FAIL subtest_158 assert_true: expected true got false
+PASS subtest_156
+PASS subtest_157
+PASS subtest_158
 FAIL subtest_159 assert_true: expected true got false
 FAIL subtest_160 assert_true: expected true got false
 FAIL subtest_161 assert_true: expected true got false
 FAIL subtest_162 assert_true: expected true got false
 FAIL subtest_163 assert_true: expected true got false
-PASS subtest_164
-PASS subtest_165
-PASS subtest_166
+FAIL subtest_164 assert_true: expected true got false
+FAIL subtest_165 assert_true: expected true got false
+FAIL subtest_166 assert_true: expected true got false
 PASS subtest_167
 PASS subtest_168
 PASS subtest_169
 PASS subtest_170
-FAIL subtest_171 assert_true: expected true got false
-FAIL subtest_172 assert_true: expected true got false
-FAIL subtest_173 assert_true: expected true got false
+PASS subtest_171
+PASS subtest_172
+PASS subtest_173
 FAIL subtest_174 assert_true: expected true got false
 FAIL subtest_175 assert_true: expected true got false
 FAIL subtest_176 assert_true: expected true got false
 FAIL subtest_177 assert_true: expected true got false
 FAIL subtest_178 assert_true: expected true got false
-PASS subtest_179
-PASS subtest_180
-PASS subtest_181
+FAIL subtest_179 assert_true: expected true got false
+FAIL subtest_180 assert_true: expected true got false
+FAIL subtest_181 assert_true: expected true got false
 PASS subtest_182
 PASS subtest_183
 PASS subtest_184
 PASS subtest_185
-FAIL subtest_186 assert_true: expected true got false
-FAIL subtest_187 assert_true: expected true got false
-FAIL subtest_188 assert_true: expected true got false
-FAIL subtest_189 assert_true: expected true got false
+PASS subtest_186
+PASS subtest_187
+PASS subtest_188
+PASS subtest_189
 FAIL subtest_190 assert_true: expected true got false
 FAIL subtest_191 assert_true: expected true got false
 FAIL subtest_192 assert_true: expected true got false
 FAIL subtest_193 assert_true: expected true got false
-PASS subtest_194
-PASS subtest_195
-PASS subtest_196
-PASS subtest_197
+FAIL subtest_194 assert_true: expected true got false
+FAIL subtest_195 assert_true: expected true got false
+FAIL subtest_196 assert_true: expected true got false
+FAIL subtest_197 assert_true: expected true got false
 PASS subtest_198
 PASS subtest_199
 PASS subtest_200
@@ -220,80 +220,80 @@
 PASS subtest_216
 PASS subtest_217
 PASS subtest_218
-FAIL subtest_219 assert_true: expected true got false
-FAIL subtest_220 assert_true: expected true got false
-FAIL subtest_221 assert_true: expected true got false
-FAIL subtest_222 assert_true: expected true got false
+PASS subtest_219
+PASS subtest_220
+PASS subtest_221
+PASS subtest_222
 FAIL subtest_223 assert_true: expected true got false
 FAIL subtest_224 assert_true: expected true got false
 FAIL subtest_225 assert_true: expected true got false
 FAIL subtest_226 assert_true: expected true got false
-PASS subtest_227
-PASS subtest_228
-PASS subtest_229
-PASS subtest_230
+FAIL subtest_227 assert_true: expected true got false
+FAIL subtest_228 assert_true: expected true got false
+FAIL subtest_229 assert_true: expected true got false
+FAIL subtest_230 assert_true: expected true got false
 PASS subtest_231
 PASS subtest_232
 PASS subtest_233
-FAIL subtest_234 assert_true: expected true got false
-FAIL subtest_235 assert_true: expected true got false
-FAIL subtest_236 assert_true: expected true got false
-FAIL subtest_237 assert_true: expected true got false
+PASS subtest_234
+PASS subtest_235
+PASS subtest_236
+PASS subtest_237
 FAIL subtest_238 assert_true: expected true got false
 FAIL subtest_239 assert_true: expected true got false
 FAIL subtest_240 assert_true: expected true got false
 FAIL subtest_241 assert_true: expected true got false
-PASS subtest_242
-PASS subtest_243
-PASS subtest_244
-PASS subtest_245
+FAIL subtest_242 assert_true: expected true got false
+FAIL subtest_243 assert_true: expected true got false
+FAIL subtest_244 assert_true: expected true got false
+FAIL subtest_245 assert_true: expected true got false
 PASS subtest_246
 PASS subtest_247
 PASS subtest_248
-FAIL subtest_249 assert_true: expected true got false
-FAIL subtest_250 assert_true: expected true got false
-FAIL subtest_251 assert_true: expected true got false
-FAIL subtest_252 assert_true: expected true got false
-FAIL subtest_253 assert_true: expected true got false
+PASS subtest_249
+PASS subtest_250
+PASS subtest_251
+PASS subtest_252
+PASS subtest_253
 FAIL subtest_254 assert_true: expected true got false
 FAIL subtest_255 assert_true: expected true got false
 FAIL subtest_256 assert_true: expected true got false
-PASS subtest_257
-PASS subtest_258
-PASS subtest_259
-PASS subtest_260
-PASS subtest_261
+FAIL subtest_257 assert_true: expected true got false
+FAIL subtest_258 assert_true: expected true got false
+FAIL subtest_259 assert_true: expected true got false
+FAIL subtest_260 assert_true: expected true got false
+FAIL subtest_261 assert_true: expected true got false
 PASS subtest_262
 PASS subtest_263
-FAIL subtest_264 assert_true: expected true got false
-FAIL subtest_265 assert_true: expected true got false
-FAIL subtest_266 assert_true: expected true got false
-FAIL subtest_267 assert_true: expected true got false
-FAIL subtest_268 assert_true: expected true got false
+PASS subtest_264
+PASS subtest_265
+PASS subtest_266
+PASS subtest_267
+PASS subtest_268
 FAIL subtest_269 assert_true: expected true got false
 FAIL subtest_270 assert_true: expected true got false
 FAIL subtest_271 assert_true: expected true got false
-PASS subtest_272
-PASS subtest_273
-PASS subtest_274
-PASS subtest_275
-PASS subtest_276
+FAIL subtest_272 assert_true: expected true got false
+FAIL subtest_273 assert_true: expected true got false
+FAIL subtest_274 assert_true: expected true got false
+FAIL subtest_275 assert_true: expected true got false
+FAIL subtest_276 assert_true: expected true got false
 PASS subtest_277
 PASS subtest_278
-FAIL subtest_279 assert_true: expected true got false
-FAIL subtest_280 assert_true: expected true got false
-FAIL subtest_281 assert_true: expected true got false
-FAIL subtest_282 assert_true: expected true got false
-FAIL subtest_283 assert_true: expected true got false
-FAIL subtest_284 assert_true: expected true got false
+PASS subtest_279
+PASS subtest_280
+PASS subtest_281
+PASS subtest_282
+PASS subtest_283
+PASS subtest_284
 FAIL subtest_285 assert_true: expected true got false
 FAIL subtest_286 assert_true: expected true got false
-PASS subtest_287
-PASS subtest_288
-PASS subtest_289
-PASS subtest_290
-PASS subtest_291
-PASS subtest_292
+FAIL subtest_287 assert_true: expected true got false
+FAIL subtest_288 assert_true: expected true got false
+FAIL subtest_289 assert_true: expected true got false
+FAIL subtest_290 assert_true: expected true got false
+FAIL subtest_291 assert_true: expected true got false
+FAIL subtest_292 assert_true: expected true got false
 PASS subtest_293
 PASS subtest_294
 PASS subtest_295
@@ -313,83 +313,83 @@
 PASS subtest_309
 PASS subtest_310
 PASS subtest_311
-FAIL subtest_312 assert_true: expected true got false
-FAIL subtest_313 assert_true: expected true got false
-FAIL subtest_314 assert_true: expected true got false
-FAIL subtest_315 assert_true: expected true got false
-FAIL subtest_316 assert_true: expected true got false
-FAIL subtest_317 assert_true: expected true got false
+PASS subtest_312
+PASS subtest_313
+PASS subtest_314
+PASS subtest_315
+PASS subtest_316
+PASS subtest_317
 FAIL subtest_318 assert_true: expected true got false
 FAIL subtest_319 assert_true: expected true got false
-PASS subtest_320
-PASS subtest_321
-PASS subtest_322
-PASS subtest_323
-PASS subtest_324
-PASS subtest_325
+FAIL subtest_320 assert_true: expected true got false
+FAIL subtest_321 assert_true: expected true got false
+FAIL subtest_322 assert_true: expected true got false
+FAIL subtest_323 assert_true: expected true got false
+FAIL subtest_324 assert_true: expected true got false
+FAIL subtest_325 assert_true: expected true got false
 PASS subtest_326
-FAIL subtest_327 assert_true: expected true got false
-FAIL subtest_328 assert_true: expected true got false
-FAIL subtest_329 assert_true: expected true got false
-FAIL subtest_330 assert_true: expected true got false
-FAIL subtest_331 assert_true: expected true got false
-FAIL subtest_332 assert_true: expected true got false
+PASS subtest_327
+PASS subtest_328
+PASS subtest_329
+PASS subtest_330
+PASS subtest_331
+PASS subtest_332
 FAIL subtest_333 assert_true: expected true got false
 FAIL subtest_334 assert_true: expected true got false
-PASS subtest_335
-PASS subtest_336
-PASS subtest_337
-PASS subtest_338
-PASS subtest_339
-PASS subtest_340
+FAIL subtest_335 assert_true: expected true got false
+FAIL subtest_336 assert_true: expected true got false
+FAIL subtest_337 assert_true: expected true got false
+FAIL subtest_338 assert_true: expected true got false
+FAIL subtest_339 assert_true: expected true got false
+FAIL subtest_340 assert_true: expected true got false
 PASS subtest_341
-FAIL subtest_342 assert_true: expected true got false
-FAIL subtest_343 assert_true: expected true got false
-FAIL subtest_344 assert_true: expected true got false
-FAIL subtest_345 assert_true: expected true got false
-FAIL subtest_346 assert_true: expected true got false
-FAIL subtest_347 assert_true: expected true got false
-FAIL subtest_348 assert_true: expected true got false
+PASS subtest_342
+PASS subtest_343
+PASS subtest_344
+PASS subtest_345
+PASS subtest_346
+PASS subtest_347
+PASS subtest_348
 FAIL subtest_349 assert_true: expected true got false
-PASS subtest_350
-PASS subtest_351
-PASS subtest_352
-PASS subtest_353
-PASS subtest_354
-PASS subtest_355
-PASS subtest_356
-FAIL subtest_357 assert_true: expected true got false
-FAIL subtest_358 assert_true: expected true got false
-FAIL subtest_359 assert_true: expected true got false
-FAIL subtest_360 assert_true: expected true got false
-FAIL subtest_361 assert_true: expected true got false
-FAIL subtest_362 assert_true: expected true got false
-FAIL subtest_363 assert_true: expected true got false
+FAIL subtest_350 assert_true: expected true got false
+FAIL subtest_351 assert_true: expected true got false
+FAIL subtest_352 assert_true: expected true got false
+FAIL subtest_353 assert_true: expected true got false
+FAIL subtest_354 assert_true: expected true got false
+FAIL subtest_355 assert_true: expected true got false
+FAIL subtest_356 assert_true: expected true got false
+PASS subtest_357
+PASS subtest_358
+PASS subtest_359
+PASS subtest_360
+PASS subtest_361
+PASS subtest_362
+PASS subtest_363
 FAIL subtest_364 assert_true: expected true got false
-PASS subtest_365
-PASS subtest_366
-PASS subtest_367
-PASS subtest_368
-PASS subtest_369
-PASS subtest_370
-PASS subtest_371
-FAIL subtest_372 assert_true: expected true got false
-FAIL subtest_373 assert_true: expected true got false
-FAIL subtest_374 assert_true: expected true got false
-FAIL subtest_375 assert_true: expected true got false
-FAIL subtest_376 assert_true: expected true got false
-FAIL subtest_377 assert_true: expected true got false
-FAIL subtest_378 assert_true: expected true got false
-FAIL subtest_379 assert_true: expected true got false
-PASS subtest_380
-PASS subtest_381
-PASS subtest_382
-PASS subtest_383
-PASS subtest_384
-PASS subtest_385
-PASS subtest_386
-PASS subtest_387
-FAIL subtest_388 assert_true: expected true got false
+FAIL subtest_365 assert_true: expected true got false
+FAIL subtest_366 assert_true: expected true got false
+FAIL subtest_367 assert_true: expected true got false
+FAIL subtest_368 assert_true: expected true got false
+FAIL subtest_369 assert_true: expected true got false
+FAIL subtest_370 assert_true: expected true got false
+FAIL subtest_371 assert_true: expected true got false
+PASS subtest_372
+PASS subtest_373
+PASS subtest_374
+PASS subtest_375
+PASS subtest_376
+PASS subtest_377
+PASS subtest_378
+PASS subtest_379
+FAIL subtest_380 assert_true: expected true got false
+FAIL subtest_381 assert_true: expected true got false
+FAIL subtest_382 assert_true: expected true got false
+FAIL subtest_383 assert_true: expected true got false
+FAIL subtest_384 assert_true: expected true got false
+FAIL subtest_385 assert_true: expected true got false
+FAIL subtest_386 assert_true: expected true got false
+FAIL subtest_387 assert_true: expected true got false
+PASS subtest_388
 PASS subtest_389
 PASS subtest_390
 PASS subtest_391
@@ -396,128 +396,128 @@
 PASS subtest_392
 PASS subtest_393
 PASS subtest_394
-PASS subtest_395
-PASS subtest_396
-PASS subtest_397
-PASS subtest_398
-PASS subtest_399
-PASS subtest_400
-PASS subtest_401
-PASS subtest_402
-FAIL subtest_403 assert_true: expected true got false
-FAIL subtest_404 assert_true: expected true got false
-PASS subtest_405
-PASS subtest_406
-FAIL subtest_407 assert_true: expected true got false
-FAIL subtest_408 assert_true: expected true got false
-PASS subtest_409
-PASS subtest_410
-FAIL subtest_411 assert_true: expected true got false
-FAIL subtest_412 assert_true: expected true got false
-PASS subtest_413
-PASS subtest_414
-PASS subtest_415
-FAIL subtest_416 assert_true: expected true got false
-PASS subtest_417
-PASS subtest_418
-PASS subtest_419
-PASS subtest_420
-PASS subtest_421
-PASS subtest_422
-PASS subtest_423
-PASS subtest_424
-PASS subtest_425
-PASS subtest_426
-PASS subtest_427
-PASS subtest_428
-PASS subtest_429
-PASS subtest_430
-FAIL subtest_431 assert_true: expected true got false
-FAIL subtest_432 assert_true: expected true got false
-PASS subtest_433
-PASS subtest_434
-FAIL subtest_435 assert_true: expected true got false
-FAIL subtest_436 assert_true: expected true got false
-PASS subtest_437
-PASS subtest_438
-FAIL subtest_439 assert_true: expected true got false
-FAIL subtest_440 assert_true: expected true got false
-PASS subtest_441
-PASS subtest_442
-PASS subtest_443
-FAIL subtest_444 assert_true: expected true got false
-PASS subtest_445
-PASS subtest_446
-PASS subtest_447
-PASS subtest_448
-PASS subtest_449
-PASS subtest_450
-PASS subtest_451
-PASS subtest_452
-PASS subtest_453
-PASS subtest_454
-PASS subtest_455
-PASS subtest_456
-PASS subtest_457
-PASS subtest_458
-FAIL subtest_459 assert_true: expected true got false
-FAIL subtest_460 assert_true: expected true got false
-PASS subtest_461
-PASS subtest_462
-FAIL subtest_463 assert_true: expected true got false
-FAIL subtest_464 assert_true: expected true got false
-PASS subtest_465
-PASS subtest_466
-FAIL subtest_467 assert_true: expected true got false
-FAIL subtest_468 assert_true: expected true got false
-PASS subtest_469
-PASS subtest_470
-PASS subtest_471
-FAIL subtest_472 assert_true: expected true got false
-PASS subtest_473
-PASS subtest_474
-PASS subtest_475
-PASS subtest_476
-PASS subtest_477
-PASS subtest_478
-PASS subtest_479
-PASS subtest_480
-PASS subtest_481
-PASS subtest_482
-PASS subtest_483
-PASS subtest_484
-PASS subtest_485
-PASS subtest_486
-FAIL subtest_487 assert_true: expected true got false
-FAIL subtest_488 assert_true: expected true got false
-PASS subtest_489
-PASS subtest_490
-FAIL subtest_491 assert_true: expected true got false
-FAIL subtest_492 assert_true: expected true got false
-PASS subtest_493
-PASS subtest_494
-FAIL subtest_495 assert_true: expected true got false
-FAIL subtest_496 assert_true: expected true got false
-PASS subtest_497
-PASS subtest_498
-PASS subtest_499
-PASS subtest_500
-PASS subtest_501
-PASS subtest_502
-PASS subtest_503
-PASS subtest_504
-PASS subtest_505
-PASS subtest_506
-PASS subtest_507
-PASS subtest_508
-PASS subtest_509
-PASS subtest_510
-PASS subtest_511
-PASS subtest_512
-PASS subtest_513
-PASS subtest_514
-PASS subtest_515
-PASS subtest_516
+PASS subtest_395: all and (width: 117px) should apply
+FAIL subtest_396: all and (width = 117px) should apply assert_true: expected true got false
+PASS subtest_397: all and (width: 118px) should not apply
+PASS subtest_398: all and (width: 116px) should not apply
+PASS subtest_399: all and (width = 118px) should not apply
+PASS subtest_400: all and (width = 116px) should not apply
+PASS subtest_401: all and (min-width: 117px) should apply
+PASS subtest_402: all and (min-width: 118px) should not apply
+PASS subtest_403: all and (min-width: 116px) should apply
+PASS subtest_404: all and (max-width: 117px) should apply
+PASS subtest_405: all and (max-width: 118px) should apply
+PASS subtest_406: all and (max-width: 116px) should not apply
+PASS subtest_407: all and (min-width: 9em) should not apply
+PASS subtest_408: all and (min-width: 6em) should apply
+PASS subtest_409: all and (max-width: 9em) should apply
+PASS subtest_410: all and (max-width: 6em) should not apply
+FAIL subtest_411: (width <= 117px) should apply assert_true: expected true got false
+FAIL subtest_412: (width >= 117px) should apply assert_true: expected true got false
+PASS subtest_413: (width < 117px) should not apply
+PASS subtest_414: (width > 117px) should not apply
+FAIL subtest_415: (width < 118px) should apply assert_true: expected true got false
+FAIL subtest_416: (width <= 118px) should apply assert_true: expected true got false
+PASS subtest_417: (width > 118px) should not apply
+PASS subtest_418: (width >= 118px) should not apply
+FAIL subtest_419: (width > 116px) should apply assert_true: expected true got false
+FAIL subtest_420: (width >= 116px) should apply assert_true: expected true got false
+PASS subtest_421: (width < 116px) should not apply
+PASS subtest_422: (width <= 116px) should not apply
+PASS subtest_423: all and (height: 76px) should apply
+FAIL subtest_424: all and (height = 76px) should apply assert_true: expected true got false
+PASS subtest_425: all and (height: 77px) should not apply
+PASS subtest_426: all and (height: 75px) should not apply
+PASS subtest_427: all and (height = 77px) should not apply
+PASS subtest_428: all and (height = 75px) should not apply
+PASS subtest_429: all and (min-height: 76px) should apply
+PASS subtest_430: all and (min-height: 77px) should not apply
+PASS subtest_431: all and (min-height: 75px) should apply
+PASS subtest_432: all and (max-height: 76px) should apply
+PASS subtest_433: all and (max-height: 77px) should apply
+PASS subtest_434: all and (max-height: 75px) should not apply
+PASS subtest_435: all and (min-height: 6em) should not apply
+PASS subtest_436: all and (min-height: 3em) should apply
+PASS subtest_437: all and (max-height: 6em) should apply
+PASS subtest_438: all and (max-height: 3em) should not apply
+FAIL subtest_439: (height <= 76px) should apply assert_true: expected true got false
+FAIL subtest_440: (height >= 76px) should apply assert_true: expected true got false
+PASS subtest_441: (height < 76px) should not apply
+PASS subtest_442: (height > 76px) should not apply
+FAIL subtest_443: (height < 77px) should apply assert_true: expected true got false
+FAIL subtest_444: (height <= 77px) should apply assert_true: expected true got false
+PASS subtest_445: (height > 77px) should not apply
+PASS subtest_446: (height >= 77px) should not apply
+FAIL subtest_447: (height > 75px) should apply assert_true: expected true got false
+FAIL subtest_448: (height >= 75px) should apply assert_true: expected true got false
+PASS subtest_449: (height < 75px) should not apply
+PASS subtest_450: (height <= 75px) should not apply
+PASS subtest_451: all and (device-width: 1920px) should apply
+FAIL subtest_452: all and (device-width = 1920px) should apply assert_true: expected true got false
+PASS subtest_453: all and (device-width: 1921px) should not apply
+PASS subtest_454: all and (device-width: 1919px) should not apply
+PASS subtest_455: all and (device-width = 1921px) should not apply
+PASS subtest_456: all and (device-width = 1919px) should not apply
+PASS subtest_457: all and (min-device-width: 1920px) should apply
+PASS subtest_458: all and (min-device-width: 1921px) should not apply
+PASS subtest_459: all and (min-device-width: 1919px) should apply
+PASS subtest_460: all and (max-device-width: 1920px) should apply
+PASS subtest_461: all and (max-device-width: 1921px) should apply
+PASS subtest_462: all and (max-device-width: 1919px) should not apply
+PASS subtest_463: all and (min-device-width: 121em) should not apply
+PASS subtest_464: all and (min-device-width: 119em) should apply
+PASS subtest_465: all and (max-device-width: 121em) should apply
+PASS subtest_466: all and (max-device-width: 119em) should not apply
+FAIL subtest_467: (device-width <= 1920px) should apply assert_true: expected true got false
+FAIL subtest_468: (device-width >= 1920px) should apply assert_true: expected true got false
+PASS subtest_469: (device-width < 1920px) should not apply
+PASS subtest_470: (device-width > 1920px) should not apply
+FAIL subtest_471: (device-width < 1921px) should apply assert_true: expected true got false
+FAIL subtest_472: (device-width <= 1921px) should apply assert_true: expected true got false
+PASS subtest_473: (device-width > 1921px) should not apply
+PASS subtest_474: (device-width >= 1921px) should not apply
+FAIL subtest_475: (device-width > 1919px) should apply assert_true: expected true got false
+FAIL subtest_476: (device-width >= 1919px) should apply assert_true: expected true got false
+PASS subtest_477: (device-width < 1919px) should not apply
+PASS subtest_478: (device-width <= 1919px) should not apply
+PASS subtest_479: all and (device-height: 1080px) should apply
+FAIL subtest_480: all and (device-height = 1080px) should apply assert_true: expected true got false
+PASS subtest_481: all and (device-height: 1081px) should not apply
+PASS subtest_482: all and (device-height: 1079px) should not apply
+PASS subtest_483: all and (device-height = 1081px) should not apply
+PASS subtest_484: all and (device-height = 1079px) should not apply
+PASS subtest_485: all and (min-device-height: 1080px) should apply
+PASS subtest_486: all and (min-device-height: 1081px) should not apply
+PASS subtest_487: all and (min-device-height: 1079px) should apply
+PASS subtest_488: all and (max-device-height: 1080px) should apply
+PASS subtest_489: all and (max-device-height: 1081px) should apply
+PASS subtest_490: all and (max-device-height: 1079px) should not apply
+PASS subtest_491: all and (min-device-height: 69em) should not apply
+PASS subtest_492: all and (min-device-height: 66em) should apply
+PASS subtest_493: all and (max-device-height: 69em) should apply
+PASS subtest_494: all and (max-device-height: 66em) should not apply
+FAIL subtest_495: (device-height <= 1080px) should apply assert_true: expected true got false
+FAIL subtest_496: (device-height >= 1080px) should apply assert_true: expected true got false
+PASS subtest_497: (device-height < 1080px) should not apply
+PASS subtest_498: (device-height > 1080px) should not apply
+FAIL subtest_499: (device-height < 1081px) should apply assert_true: expected true got false
+FAIL subtest_500: (device-height <= 1081px) should apply assert_true: expected true got false
+PASS subtest_501: (device-height > 1081px) should not apply
+PASS subtest_502: (device-height >= 1081px) should not apply
+FAIL subtest_503: (device-height > 1079px) should apply assert_true: expected true got false
+FAIL subtest_504: (device-height >= 1079px) should apply assert_true: expected true got false
+PASS subtest_505: (device-height < 1079px) should not apply
+PASS subtest_506: (device-height <= 1079px) should not apply
+PASS subtest_507: all and (height) should apply
+PASS subtest_508: all and (width) should not apply
+PASS subtest_509: all and (height) should not apply
+PASS subtest_510: all and (width) should not apply
+PASS subtest_511: all and (device-height) should apply
+PASS subtest_512: all and (device-width) should apply
+PASS subtest_513: all and (height) should not apply
+PASS subtest_514: all and (width) should apply
+PASS subtest_515: all and (height) should apply
+PASS subtest_516: all and (width) should apply
 PASS subtest_517
 PASS subtest_518
 PASS subtest_519
@@ -527,91 +527,89 @@
 PASS subtest_523
 PASS subtest_524
 PASS subtest_525
-PASS subtest_526
-PASS subtest_527
-PASS subtest_528
-PASS subtest_529
-PASS subtest_530
-PASS subtest_531
-PASS subtest_532
-PASS subtest_533
-PASS subtest_534
-PASS subtest_535
-PASS subtest_536
-PASS subtest_537
-PASS subtest_538
-PASS subtest_539
-PASS subtest_540
-PASS subtest_541
-PASS subtest_542
-PASS subtest_543
-PASS subtest_544
-PASS subtest_545
-PASS subtest_546
-PASS subtest_547
-PASS subtest_548
-PASS subtest_549
-PASS subtest_550
-PASS subtest_551
+PASS subtest_526: (orientation) should apply
+PASS subtest_527: (orientation: landscape) should apply
+PASS subtest_528: (orientation: portrait) should not apply
+PASS subtest_529: not all and (orientation: portrait) should apply
+PASS subtest_530: (orientation) should apply
+PASS subtest_531: (orientation: landscape) should not apply
+PASS subtest_532: not all and (orientation: landscape) should apply
+PASS subtest_533: (orientation: portrait) should apply
+PASS subtest_534: (aspect-ratio: 59/80) should apply
+PASS subtest_535: (aspect-ratio: 58/80) should not apply
+PASS subtest_536: (aspect-ratio: 59/81) should not apply
+PASS subtest_537: (aspect-ratio: 60/80) should not apply
+PASS subtest_538: (aspect-ratio: 59/79) should not apply
+PASS subtest_539: (aspect-ratio: 177/240) should apply
+PASS subtest_540: (aspect-ratio: 413/560) should apply
+PASS subtest_541: (aspect-ratio: 5900/8000) should apply
+PASS subtest_542: (aspect-ratio: 5901/8000) should not apply
+PASS subtest_543: (aspect-ratio: 5899/8000) should not apply
+PASS subtest_544: (aspect-ratio: 5900/8001) should not apply
+PASS subtest_545: (aspect-ratio: 5900/7999) should not apply
+PASS subtest_546: (aspect-ratio) should apply
+PASS subtest_547: (min-aspect-ratio: 59/80) should apply
+PASS subtest_548: (min-aspect-ratio: 58/80) should apply
+PASS subtest_549: (min-aspect-ratio: 59/81) should apply
+PASS subtest_550: (min-aspect-ratio: 60/80) should not apply
+PASS subtest_551: (min-aspect-ratio: 59/79) should not apply
 PASS subtest_552
-PASS subtest_553
-PASS subtest_554
-PASS subtest_555
-PASS subtest_556
-PASS subtest_557
+PASS subtest_553: (max-aspect-ratio: 59/80) should apply
+PASS subtest_554: (max-aspect-ratio: 58/80) should not apply
+PASS subtest_555: (max-aspect-ratio: 59/81) should not apply
+PASS subtest_556: (max-aspect-ratio: 60/80) should apply
+PASS subtest_557: (max-aspect-ratio: 59/79) should apply
 PASS subtest_558
-PASS subtest_559
-PASS subtest_560
-PASS subtest_561
-PASS subtest_562
-PASS subtest_563
-PASS subtest_564
-PASS subtest_565
-PASS subtest_566
-PASS subtest_567
-PASS subtest_568
-PASS subtest_569
+PASS subtest_559: (device-aspect-ratio: 1920/1080) should apply
+PASS subtest_560: not all and (device-aspect-ratio: 1921/1080) should apply
+PASS subtest_561: all and (device-aspect-ratio: 1920/1079) should not apply
+PASS subtest_562: all and (device-aspect-ratio: 1919/1080) should not apply
+PASS subtest_563: not all and (device-aspect-ratio: 1920/1081) should apply
+PASS subtest_564: (device-aspect-ratio) should apply
+PASS subtest_565: (min-device-aspect-ratio: 1920/1080) should apply
+PASS subtest_566: all and (min-device-aspect-ratio: 1921/1080) should not apply
+PASS subtest_567: not all and (min-device-aspect-ratio: 1920/1079) should apply
+PASS subtest_568: not all and (min-device-aspect-ratio: 1919/1080) should not apply
+PASS subtest_569: all and (min-device-aspect-ratio: 1920/1081) should apply
 PASS subtest_570
-PASS subtest_571
-PASS subtest_572
-FAIL subtest_573 assert_true: expected true got false
-FAIL subtest_574 assert_true: expected true got false
-FAIL subtest_575 assert_true: expected true got false
-FAIL subtest_576 assert_true: expected true got false
-FAIL subtest_577 assert_true: expected true got false
-FAIL subtest_578 assert_true: expected true got false
-FAIL subtest_579 assert_true: expected true got false
-FAIL subtest_580 assert_true: expected true got false
-PASS subtest_581
-PASS subtest_582
-PASS subtest_583
-PASS subtest_584
-PASS subtest_585
-PASS subtest_586
-PASS subtest_587
-PASS subtest_588
+PASS subtest_571: all and (max-device-aspect-ratio: 1920/1080) should apply
+PASS subtest_572: (max-device-aspect-ratio: 1921/1080) should apply
+PASS subtest_573: (max-device-aspect-ratio: 1920/1079) should apply
+PASS subtest_574: all and (max-device-aspect-ratio: 1919/1080) should not apply
+PASS subtest_575: not all and (max-device-aspect-ratio: 1920/1081) should apply
+PASS subtest_576
+PASS subtest_577
+PASS subtest_578
+PASS subtest_579
+PASS subtest_580
+FAIL subtest_581 assert_true: expected true got false
+FAIL subtest_582 assert_true: expected true got false
+FAIL subtest_583 assert_true: expected true got false
+FAIL subtest_584 assert_true: expected true got false
+FAIL subtest_585 assert_true: expected true got false
+FAIL subtest_586 assert_true: expected true got false
+FAIL subtest_587 assert_true: expected true got false
+FAIL subtest_588 assert_true: expected true got false
 PASS subtest_589
 PASS subtest_590
 PASS subtest_591
 PASS subtest_592
-FAIL subtest_593 assert_true: expected true got false
-FAIL subtest_594 assert_true: expected true got false
-FAIL subtest_595 assert_true: expected true got false
-FAIL subtest_596 assert_true: expected true got false
-FAIL subtest_597 assert_true: expected true got false
-FAIL subtest_598 assert_true: expected true got false
-FAIL subtest_599 assert_true: expected true got false
-FAIL subtest_600 assert_true: expected true got false
-PASS subtest_601
-PASS subtest_602
-PASS subtest_603
-PASS subtest_604
-PASS subtest_605
-PASS subtest_606
-PASS subtest_607
-PASS subtest_608
-PASS monochrome_and_color
-PASS find_depth
+PASS subtest_593
+PASS subtest_594
+PASS subtest_595
+PASS subtest_596
+PASS subtest_597
+PASS subtest_598
+PASS subtest_599
+PASS subtest_600
+FAIL subtest_601 assert_true: expected true got false
+FAIL subtest_602 assert_true: expected true got false
+FAIL subtest_603 assert_true: expected true got false
+FAIL subtest_604 assert_true: expected true got false
+FAIL subtest_605 assert_true: expected true got false
+FAIL subtest_606 assert_true: expected true got false
+FAIL subtest_607 assert_true: expected true got false
+FAIL subtest_608 assert_true: expected true got false
 PASS subtest_609
 PASS subtest_610
 PASS subtest_611
@@ -620,22 +618,24 @@
 PASS subtest_614
 PASS subtest_615
 PASS subtest_616
-PASS subtest_617
-PASS subtest_618
-PASS subtest_619
-PASS subtest_620
-PASS subtest_621
-PASS subtest_622
-PASS subtest_623
+PASS monochrome_and_color
+PASS find_depth
+PASS subtest_617: all and (color:8) should apply
+PASS subtest_618: all and (color:7) should not apply
+PASS subtest_619: all and (color:9) should not apply
+PASS subtest_620: all and (max-color:8) should apply
+PASS subtest_621: all and (max-color:7) should not apply
+PASS subtest_622: all and (max-color:9) should apply
+PASS subtest_623: all and (color) should apply
 PASS subtest_624
 PASS subtest_625
-PASS subtest_626
+PASS subtest_626: all and (monochrome) should not apply
 PASS subtest_627
 PASS subtest_628
-PASS subtest_629
-PASS subtest_630
-PASS subtest_631
-PASS subtest_632
+PASS subtest_629: not all and (monochrome) should apply
+PASS subtest_630: not all and (color) should not apply
+PASS subtest_631: only all and (color) should apply
+PASS subtest_632: only all and (monochrome) should not apply
 PASS subtest_633
 PASS subtest_634
 PASS subtest_635
@@ -654,79 +654,79 @@
 PASS subtest_648
 PASS subtest_649
 PASS subtest_650
-PASS subtest_651
-PASS subtest_652
-PASS subtest_653
-PASS subtest_654
-PASS subtest_655
-FAIL subtest_656 assert_true: expected true got false
-PASS subtest_657
-FAIL subtest_658 assert_true: expected true got false
+PASS subtest_651: (color-index: 0) should apply
+PASS subtest_652: (color-index: 1) should not apply
+PASS subtest_653: (min-color-index: 0) should apply
+PASS subtest_654: (min-color-index: 1) should not apply
+PASS subtest_655: (max-color-index: 0) should apply
+PASS subtest_656: (max-color-index: 1) should apply
+PASS subtest_657: (max-color-index: 157) should apply
+PASS subtest_658
 PASS subtest_659
 PASS subtest_660
 PASS subtest_661
 PASS subtest_662
 PASS subtest_663
-PASS subtest_664
+FAIL subtest_664 assert_true: expected true got false
 PASS subtest_665
-PASS subtest_666
+FAIL subtest_666 assert_true: expected true got false
 PASS subtest_667
 PASS subtest_668
 PASS subtest_669
-FAIL subtest_670 assert_true: expected true got false
+PASS subtest_670
 PASS subtest_671
-FAIL subtest_672 assert_true: expected true got false
+PASS subtest_672
 PASS subtest_673
 PASS subtest_674
 PASS subtest_675
 PASS subtest_676
 PASS subtest_677
-PASS subtest_678
+FAIL subtest_678 assert_true: expected true got false
 PASS subtest_679
-PASS subtest_680
+FAIL subtest_680 assert_true: expected true got false
 PASS subtest_681
 PASS subtest_682
 PASS subtest_683
-FAIL subtest_684 assert_true: expected true got false
+PASS subtest_684
 PASS subtest_685
-FAIL subtest_686 assert_true: expected true got false
+PASS subtest_686
 PASS subtest_687
 PASS subtest_688
 PASS subtest_689
 PASS subtest_690
 PASS subtest_691
-FAIL find_resolution assert_false: expected false got true
-PASS subtest_692
+FAIL subtest_692 assert_true: expected true got false
 PASS subtest_693
 FAIL subtest_694 assert_true: expected true got false
-FAIL subtest_695 assert_false: expected false got true
+PASS subtest_695
 PASS subtest_696
 PASS subtest_697
-FAIL subtest_698 assert_true: expected true got false
-FAIL subtest_699 assert_true: expected true got false
-PASS subtest_700
-PASS subtest_701
-FAIL subtest_702 assert_true: expected true got false
-FAIL subtest_703 assert_true: expected true got false
-FAIL subtest_704 assert_true: expected true got false
-PASS subtest_705
-PASS subtest_706
-PASS subtest_707
-PASS subtest_708
-PASS subtest_709
-PASS subtest_710
-PASS subtest_711
+PASS subtest_698
+PASS subtest_699
+FAIL find_resolution assert_false: expected false got true
+PASS subtest_700: (resolution: 10001dpi) should not apply
+PASS subtest_701: (resolution: 10000dpi) should not apply
+FAIL subtest_702: (min-resolution: 10000dpi) should apply assert_true: expected true got false
+FAIL subtest_703: not all and (min-resolution: 10000dpi) should not apply assert_false: expected false got true
+PASS subtest_704: not all and (min-resolution: 10001dpi) should apply
+PASS subtest_705: all and (min-resolution: 10001dpi) should not apply
+FAIL subtest_706: (min-resolution: 3937dpcm) should apply assert_true: expected true got false
+FAIL subtest_707: (max-resolution: 3938dpcm) should apply assert_true: expected true got false
+PASS subtest_708: (max-resolution: 3937dpcm) should not apply
+PASS subtest_709: not all and (min-resolution: 3938dpcm) should apply
+FAIL subtest_710 assert_true: expected true got false
+FAIL subtest_711 assert_true: expected true got false
 FAIL subtest_712 assert_true: expected true got false
-FAIL subtest_713 assert_true: expected true got false
-FAIL subtest_714 assert_true: expected true got false
+PASS subtest_713
+PASS subtest_714
 PASS subtest_715
 PASS subtest_716
-PASS subtest_717
-PASS subtest_718
-PASS subtest_719
-PASS subtest_720
-PASS subtest_721
-PASS subtest_722
+PASS subtest_717: (scan) should not apply
+PASS subtest_718: (scan: progressive) should not apply
+PASS subtest_719: (scan: interlace) should not apply
+FAIL subtest_720: not all and (scan) should apply assert_true: expected true got false
+FAIL subtest_721: not all and (scan: progressive) should apply assert_true: expected true got false
+FAIL subtest_722: not all and (scan: interlace) should apply assert_true: expected true got false
 PASS subtest_723
 PASS subtest_724
 PASS subtest_725
@@ -733,42 +733,50 @@
 PASS subtest_726
 PASS subtest_727
 PASS subtest_728
-FAIL subtest_729 assert_true: expected true got false
+PASS subtest_729
 PASS subtest_730
 PASS subtest_731
-PASS subtest_732
-PASS subtest_733
-PASS subtest_734
-PASS subtest_735
-FAIL subtest_736 assert_true: expected true got false
-PASS subtest_737
-PASS subtest_738
-PASS subtest_739
-PASS subtest_740
-PASS subtest_741
-PASS subtest_742
-PASS subtest_743
-PASS subtest_744
-PASS subtest_745
-PASS subtest_746
-PASS subtest_747
-PASS subtest_748
-PASS subtest_749
-PASS subtest_750
-PASS subtest_751
-PASS subtest_752
-PASS subtest_753
-PASS subtest_754
-PASS subtest_755
-PASS subtest_756
-PASS subtest_757
-PASS subtest_758
-PASS subtest_759
-PASS subtest_760
-FAIL subtest_761 assert_true: expected true got false
-FAIL subtest_762 assert_true: expected true got false
-FAIL subtest_763 assert_true: expected true got false
-FAIL subtest_764 assert_true: expected true got false
-FAIL subtest_765 assert_true: expected true got false
-PASS subtest_766
+PASS subtest_732: (grid) should not apply
+PASS subtest_733: (grid: 0) should apply
+PASS subtest_734: (grid: 1) should not apply
+PASS subtest_735: (grid: 2) should not apply
+PASS subtest_736: (grid: -1) should not apply
+FAIL subtest_737: (orientation should apply assert_true: expected true got false
+PASS subtest_738: not all and (orientation should not apply
+PASS subtest_739: (orientation: should not apply
+PASS subtest_740: (orientation:) should not apply
+PASS subtest_741: (orientation:  ) should not apply
+PASS subtest_742: all,(orientation: should apply
+PASS subtest_743: (orientation:,all should not apply
+FAIL subtest_744: not all and (grid should apply assert_true: expected true got false
+PASS subtest_745: only all and (grid should not apply
+PASS subtest_746: (grid should not apply
+PASS subtest_747: all,(grid should apply
+PASS subtest_748: (grid,all should not apply
+PASS subtest_749: ,all should apply
+PASS subtest_750: all, should apply
+PASS subtest_751: ,all, should apply
+PASS subtest_752: all,badmedium should apply
+PASS subtest_753: badmedium,all should apply
+PASS subtest_754: ,badmedium, should not apply
+PASS subtest_755: all,(badexpression) should apply
+PASS subtest_756: (badexpression),all should apply
+PASS subtest_757: (badexpression),badmedium should not apply
+PASS subtest_758: badmedium,(badexpression) should not apply
+PASS subtest_759: all,[badsyntax] should apply
+PASS subtest_760: [badsyntax],all should apply
+PASS subtest_761: badmedium,[badsyntax] should not apply
+PASS subtest_762: [badsyntax],badmedium should not apply
+PASS subtest_763
+PASS subtest_764
+PASS subtest_765: all and min-color : 1 should not apply
+PASS subtest_766: (bogus) should not apply
+PASS subtest_767: not all and (bogus) should not apply
+PASS subtest_768: only all and (bogus) should not apply
+FAIL subtest_769 assert_true: expected true got false
+FAIL subtest_770 assert_true: expected true got false
+FAIL subtest_771 assert_true: expected true got false
+FAIL subtest_772 assert_true: expected true got false
+FAIL subtest_773 assert_true: expected true got false
+PASS subtest_774
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html (277070 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries.html	2021-05-06 07:36:29 UTC (rev 277071)
@@ -33,13 +33,13 @@
     function should_apply(q) {
       test(function() {
         assert_true(query_applies(q));
-      }, "subtest_" + ++testNum);
+      }, "subtest_" + ++testNum + ": " + q + " should apply");
     }
 
     function should_not_apply(q) {
       test(function() {
         assert_false(query_applies(q));
-      }, "subtest_" + ++testNum);
+      }, "subtest_" + ++testNum + ": " + q + " should not apply");
     }
 
     /*
@@ -142,6 +142,11 @@
           expression_should_not_be_parseable("min-" + feature + " " + separator + " -0");
           expression_should_not_be_parseable("max-" + feature + " " + separator + " -0");
         }
+        if (separator == ">=") {
+          expression_should_not_be_parseable(feature + " " + "> =" + " 0px");
+        } else if (separator == "<=") {
+          expression_should_not_be_parseable(feature + " " + "< =" + " 0px");
+        }
         expression_should_not_be_parseable(feature + " " + separator + " -1px");
         expression_should_not_be_parseable("min-" + feature + " " + separator + " -1px");
         expression_should_not_be_parseable("max-" + feature + " " + separator + " -1px");

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/w3c-import.log (277070 => 277071)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/w3c-import.log	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/w3c-import.log	2021-05-06 07:36:29 UTC (rev 277071)
@@ -64,6 +64,7 @@
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-case-insensitive-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-deprecated-001-expected.xht
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-deprecated-001.html
+/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-dynamic-empty-children.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-gamut-001-expected.xht
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-gamut-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-gamut-002-expected.xht
@@ -88,6 +89,7 @@
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/mq-range-001.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/navigation-controls.tentative.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-color-scheme.html
+/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-contrast.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-reduced-data.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/prefers-reduced-motion.html
 /LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/relative-units-001-expected.xht

Modified: trunk/Source/WebCore/ChangeLog (277070 => 277071)


--- trunk/Source/WebCore/ChangeLog	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/Source/WebCore/ChangeLog	2021-05-06 07:36:29 UTC (rev 277071)
@@ -1,3 +1,23 @@
+2021-05-06  Tim Nguyen  <[email protected]>
+
+        [mediaqueries] Remove "on-demand" value for any-hover/hover & "forced" value for prefers-contrast
+        https://bugs.webkit.org/show_bug.cgi?id=225400
+
+        Reviewed by Antti Koivisto.
+
+        These were both removed from the spec and currently never evaluate to true. They also won't eval to true after this change.
+        Only change is serialization, since the values will become invalid.
+
+        Also:
+        - Re-synced css/mediaqueries WPTs
+        - Adjusted any-hover/hover parsing tests accordingly.
+
+        * css/CSSValueKeywords.in:
+        * css/MediaQueryEvaluator.cpp:
+        (WebCore::prefersContrastEvaluate):
+        * css/MediaQueryExpression.cpp:
+        (WebCore::isValidValueForIdentMediaFeature):
+
 2021-05-05  Megan Gardner  <[email protected]>
 
         AppHighlight scrolls should be smooth

Modified: trunk/Source/WebCore/css/CSSValueKeywords.in (277070 => 277071)


--- trunk/Source/WebCore/css/CSSValueKeywords.in	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/Source/WebCore/css/CSSValueKeywords.in	2021-05-06 07:36:29 UTC (rev 277071)
@@ -1176,7 +1176,6 @@
 // (hover:) media feature.
 // none
 hover
-on-demand
 
 // blend modes
 // normal
@@ -1463,7 +1462,6 @@
 no-preference
 
 // prefers-contrast
-forced
 more
 less
 // no-preference
@@ -1472,7 +1470,6 @@
 // prefers-color-scheme
 light
 dark
-// no-preference
 
 // color-scheme
 only

Modified: trunk/Source/WebCore/css/MediaQueryEvaluator.cpp (277070 => 277071)


--- trunk/Source/WebCore/css/MediaQueryEvaluator.cpp	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/Source/WebCore/css/MediaQueryEvaluator.cpp	2021-05-06 07:36:29 UTC (rev 277071)
@@ -837,7 +837,7 @@
     if (!value)
         return userPrefersContrast;
 
-    // Apple platforms: less and forced are ignored and only "more" is mapped to the user's preference.
+    // Apple platforms: "less" is ignored and only "more" is mapped to the user's preference.
     return downcast<CSSPrimitiveValue>(*value).valueID() == (userPrefersContrast ? CSSValueMore : CSSValueNoPreference);
 }
 

Modified: trunk/Source/WebCore/css/MediaQueryExpression.cpp (277070 => 277071)


--- trunk/Source/WebCore/css/MediaQueryExpression.cpp	2021-05-06 07:14:59 UTC (rev 277070)
+++ trunk/Source/WebCore/css/MediaQueryExpression.cpp	2021-05-06 07:36:29 UTC (rev 277071)
@@ -46,8 +46,8 @@
         return valueID == CSSValuePortrait || valueID == CSSValueLandscape;
     if (feature == MediaFeatureNames::colorGamut)
         return valueID == CSSValueSRGB || valueID == CSSValueP3 || valueID == CSSValueRec2020;
-    if (feature == MediaFeatureNames::anyHover || feature == MediaFeatureNames::hover) // FIXME: remove `on-demand` that's no longer in the spec.
-        return valueID == CSSValueOnDemand || valueID == CSSValueHover || valueID == CSSValueNone;
+    if (feature == MediaFeatureNames::anyHover || feature == MediaFeatureNames::hover)
+        return valueID == CSSValueHover || valueID == CSSValueNone;
     if (feature == MediaFeatureNames::anyPointer || feature == MediaFeatureNames::pointer)
         return valueID == CSSValueFine || valueID == CSSValueCoarse || valueID == CSSValueNone;
     if (feature == MediaFeatureNames::invertedColors)
@@ -60,8 +60,8 @@
     if (feature == MediaFeatureNames::prefersColorScheme)
         return valueID == CSSValueLight || valueID == CSSValueDark;
 #endif
-    if (feature == MediaFeatureNames::prefersContrast) // FIXME: remove `forced` that's no longer in the spec.
-        return valueID == CSSValueNoPreference || valueID == CSSValueMore || valueID == CSSValueLess || valueID == CSSValueForced;
+    if (feature == MediaFeatureNames::prefersContrast)
+        return valueID == CSSValueNoPreference || valueID == CSSValueMore || valueID == CSSValueLess;
     if (feature == MediaFeatureNames::prefersReducedMotion)
         return valueID == CSSValueNoPreference || valueID == CSSValueReduce;
     if (feature == MediaFeatureNames::prefersDarkInterface)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to