Diff
Modified: trunk/LayoutTests/ChangeLog (282395 => 282396)
--- trunk/LayoutTests/ChangeLog 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/ChangeLog 2021-09-14 17:08:05 UTC (rev 282396)
@@ -1,3 +1,23 @@
+2021-09-14 Sam Sneddon <[email protected]>
+
+ Support the `x` resolution unit
+ https://bugs.webkit.org/show_bug.cgi?id=229777
+
+ Reviewed by Simon Fraser.
+
+ Update tests so that they expect the x unit to serialize as the x unit
+ (and not magically change to the dppx unit).
+
+ * fast/css/cursor-parsing-image-set-expected.txt:
+ * fast/css/cursor-parsing-image-set.html:
+ * fast/css/image-set-parsing-expected.txt:
+ * fast/css/image-set-parsing-generated-expected.txt:
+ * fast/css/image-set-parsing-generated.html:
+ * fast/css/image-set-parsing.html:
+ * fast/css/image-set-setting-expected.txt:
+ * fast/css/image-set-setting.html:
+ * fast/css/image-set-unprefixed.html:
+
2021-09-14 Ayumi Kojima <[email protected]>
REGRESSION (r281981): [iOS, BigSur+] webrtc/datachannel/getStats-no-prflx-remote-candidate.html is a flaky timeout.
Modified: trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt (282395 => 282396)
--- trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/cursor-parsing-image-set-expected.txt 2021-09-14 17:08:05 UTC (rev 282396)
@@ -6,10 +6,10 @@
Bug 99493
Test a bunch of cursor rules which should round-trip exactly.
-PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1dppx), auto;"
-PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1dppx, url(\"file:///foo2x.png\") 2dppx), auto;"
-PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1dppx, url(\"file:///foo2x.png\") 2dppx) 2 3, auto;"
-PASS style.cssText is "cursor: image-set(url(\"file:///foo03.png\") 0.3dppx, url(\"file:///foo5x.png\") 5dppx) 6 5, url(\"file:///foo.png\") 12 3, pointer;"
+PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1x), auto;"
+PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1x, url(\"file:///foo2x.png\") 2x), auto;"
+PASS style.cssText is "cursor: image-set(url(\"file:///foo.png\") 1x, url(\"file:///foo2x.png\") 2x) 2 3, auto;"
+PASS style.cssText is "cursor: image-set(url(\"file:///foo03.png\") 0.3x, url(\"file:///foo5x.png\") 5x) 6 5, url(\"file:///foo.png\") 12 3, pointer;"
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/css/cursor-parsing-image-set.html (282395 => 282396)
--- trunk/LayoutTests/fast/css/cursor-parsing-image-set.html 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/cursor-parsing-image-set.html 2021-09-14 17:08:05 UTC (rev 282396)
@@ -21,7 +21,7 @@
{
var cssText = makeCursorRule(rule);
style = roundtripCssRule(cssText);
- shouldBeEqualToString('style.cssText', cssText.replace(/x(?=[,)])/g, 'dppx'));
+ shouldBeEqualToString('style.cssText', cssText);
}
function roundtripCssRule(cssText)
Modified: trunk/LayoutTests/fast/css/image-set-parsing-expected.txt (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-parsing-expected.txt 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-parsing-expected.txt 2021-09-14 17:08:05 UTC (rev 282396)
@@ -10,7 +10,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Multiple values for background-image : url('#a') 1x, url('#b') 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -18,9 +18,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Single value for background-image without url() function : '#a' 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -28,7 +28,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Multiple values for background-image without url() function : '#a' 1x, '#b' 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -36,9 +36,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Mix values with and without url() function : '#a' 1x, url('#b') 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -46,9 +46,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Multiple values for background-image, out of order : url('#c') 3x, url('#b') 2x, url('#a') 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -56,11 +56,11 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 6
PASS subRule is 'c'
-PASS subRule.cssText is '3dppx'
+PASS subRule.cssText is '3x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Single value for content : url('#a') 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -68,7 +68,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Multiple values for content : url('#a') 1x, url('#b') 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -76,9 +76,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Single value for border-image : url('#a') 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -86,7 +86,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Multiple values for border-image : url('#a') 1x, url('#b') 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -94,9 +94,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Single value for -webkit-mask-box-image : url('#a') 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -104,7 +104,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Multiple values for -webkit-mask-box-image : url('#a') 1x, url('#b') 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -112,9 +112,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Single value with dppx : url('#a') 1dppx
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -146,7 +146,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 6
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule is 'b'
PASS subRule.cssText is '2dppx'
PASS subRule is 'c'
Modified: trunk/LayoutTests/fast/css/image-set-parsing-generated-expected.txt (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-parsing-generated-expected.txt 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-parsing-generated-expected.txt 2021-09-14 17:08:05 UTC (rev 282396)
@@ -10,7 +10,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Single value for content with gradient : linear-gradient(green, white) 1x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -18,7 +18,7 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 2
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
Single value for background-image with gradients : linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -26,9 +26,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule.cssText is 'radial-gradient(blue, white)'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Combined gradient and URL : url('#a') 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -36,9 +36,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Combined gradient and URL in content : url('#a') 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -46,9 +46,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Combined gradient and cross-fade : -webkit-cross-fade(url('#a'), url('#b'), 70%) 1x, linear-gradient(green, white) 2x
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
@@ -56,9 +56,9 @@
PASS jsWrapperClass(imageSetRule.constructor) is 'Function'
PASS imageSetRule.length is 4
PASS subRule is 'a'
-PASS subRule.cssText is '1dppx'
+PASS subRule.cssText is '1x'
PASS subRule.cssText is 'linear-gradient(green, white)'
-PASS subRule.cssText is '2dppx'
+PASS subRule.cssText is '2x'
Single value for background-image with gradient and dpi : linear-gradient(green, white) 192dpi
PASS jsWrapperClass(imageSetRule) is 'CSSValueList'
Modified: trunk/LayoutTests/fast/css/image-set-parsing-generated.html (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-parsing-generated.html 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-parsing-generated.html 2021-09-14 17:08:05 UTC (rev 282396)
@@ -70,31 +70,31 @@
testImageSetRule("Single value for background-image with gradient",
"background-image",
"linear-gradient(green, white) 1x", 2,
- ["linear-gradient(green, white)", "1dppx"]);
+ ["linear-gradient(green, white)", "1x"]);
testImageSetRule("Single value for content with gradient",
"background-image",
"linear-gradient(green, white) 1x", 2,
- ["linear-gradient(green, white)", "1dppx"]);
+ ["linear-gradient(green, white)", "1x"]);
testImageSetRule("Single value for background-image with gradients",
"background-image",
"linear-gradient(green, white) 1x, radial-gradient(blue, white) 2x", 4,
- ["linear-gradient(green, white)", "1dppx", "radial-gradient(blue, white)", "2dppx"]);
+ ["linear-gradient(green, white)", "1x", "radial-gradient(blue, white)", "2x"]);
testImageSetRule("Combined gradient and URL",
"background-image",
"url('#a') 1x, linear-gradient(green, white) 2x", 4,
- ["a", "1dppx", "linear-gradient(green, white)", "2dppx"]);
+ ["a", "1x", "linear-gradient(green, white)", "2x"]);
testImageSetRule("Combined gradient and URL in content",
"content",
"url('#a') 1x, linear-gradient(green, white) 2x", 4,
- ["a", "1dppx", "linear-gradient(green, white)", "2dppx"]);
+ ["a", "1x", "linear-gradient(green, white)", "2x"]);
testImageSetRule("Combined gradient and cross-fade",
"background-image",
"-webkit-cross-fade(url('#a'), url('#b'), 70%) 1x, linear-gradient(green, white) 2x", 4,
- ["a", "1dppx", "linear-gradient(green, white)", "2dppx"]);
+ ["a", "1x", "linear-gradient(green, white)", "2x"]);
testImageSetRule("Single value for background-image with gradient and dpi",
"background-image",
Modified: trunk/LayoutTests/fast/css/image-set-parsing.html (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-parsing.html 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-parsing.html 2021-09-14 17:08:05 UTC (rev 282396)
@@ -70,62 +70,62 @@
testImageSetRule("Single value for background-image",
"background-image",
"url('#a') 1x", 2,
- ["a", "1dppx"]);
+ ["a", "1x"]);
testImageSetRule("Multiple values for background-image",
"background-image",
"url('#a') 1x, url('#b') 2x", 4,
- ["a", "1dppx", "b", "2dppx"]);
+ ["a", "1x", "b", "2x"]);
testImageSetRule("Single value for background-image without url() function",
"background-image",
"'#a' 1x", 2,
- ["a", "1dppx"], "image-set");
+ ["a", "1x"], "image-set");
testImageSetRule("Multiple values for background-image without url() function",
"background-image",
"'#a' 1x, '#b' 2x", 4,
- ["a", "1dppx", "b", "2dppx"], "image-set");
+ ["a", "1x", "b", "2x"], "image-set");
testImageSetRule("Mix values with and without url() function",
"background-image",
"'#a' 1x, url('#b') 2x", 4,
- ["a", "1dppx", "b", "2dppx"], "image-set");
+ ["a", "1x", "b", "2x"], "image-set");
testImageSetRule("Multiple values for background-image, out of order",
"background-image",
"url('#c') 3x, url('#b') 2x, url('#a') 1x", 6,
- ["c", "3dppx", "b", "2dppx", "a", "1dppx"]);
+ ["c", "3x", "b", "2x", "a", "1x"]);
testImageSetRule("Single value for content",
"content",
"url('#a') 1x", 2,
- ["a", "1dppx"]);
+ ["a", "1x"]);
testImageSetRule("Multiple values for content",
"content",
"url('#a') 1x, url('#b') 2x", 4,
- ["a", "1dppx", "b", "2dppx"]);
+ ["a", "1x", "b", "2x"]);
testImageSetRule("Single value for border-image",
"-webkit-border-image",
"url('#a') 1x", 2,
- ["a", "1dppx"]);
+ ["a", "1x"]);
testImageSetRule("Multiple values for border-image",
"-webkit-border-image",
"url('#a') 1x, url('#b') 2x", 4,
- ["a", "1dppx", "b", "2dppx"]);
+ ["a", "1x", "b", "2x"]);
testImageSetRule("Single value for -webkit-mask-box-image",
"-webkit-mask-box-image",
"url('#a') 1x", 2,
- ["a", "1dppx"]);
+ ["a", "1x"]);
testImageSetRule("Multiple values for -webkit-mask-box-image",
"-webkit-mask-box-image",
"url('#a') 1x, url('#b') 2x", 4,
- ["a", "1dppx", "b", "2dppx"]);
+ ["a", "1x", "b", "2x"]);
testImageSetRule("Single value with dppx",
"background-image",
@@ -145,7 +145,7 @@
testImageSetRule("Multiple values with dpi, dppx and x",
"background-image",
"url('#a') 1x, url('#b') 2dppx, url('#c') 250dpi", 6,
- ["a", "1dppx", "b", "2dppx", "c", "250dpi"]);
+ ["a", "1x", "b", "2dppx", "c", "250dpi"]);
successfullyParsed = true;
</script>
Modified: trunk/LayoutTests/fast/css/image-set-setting-expected.txt (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-setting-expected.txt 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-setting-expected.txt 2021-09-14 17:08:05 UTC (rev 282396)
@@ -5,19 +5,19 @@
Single value for background-image : url("http://www.webkit.org/a") 1x
-PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/a\") 1dppx)"
+PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/a\") 1x)"
Multiple values for background-image : url("http://www.webkit.org/a") 1x, url("http://www.webkit.org/b") 2x
-PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/a\") 1dppx, url(\"http://www.webkit.org/b\") 2dppx)"
+PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/a\") 1x, url(\"http://www.webkit.org/b\") 2x)"
Multiple values for background-image, out of order : url("http://www.webkit.org/c") 3x, url("http://www.webkit.org/b") 2x, url("http://www.webkit.org/a") 1x
-PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 3dppx, url(\"http://www.webkit.org/b\") 2dppx, url(\"http://www.webkit.org/a\") 1dppx)"
+PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 3x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x)"
Duplicate values for background-image : url("http://www.webkit.org/c") 1x, url("http://www.webkit.org/b") 2x, url("http://www.webkit.org/a") 1x
-PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 1dppx, url(\"http://www.webkit.org/b\") 2dppx, url(\"http://www.webkit.org/a\") 1dppx)"
+PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 1x, url(\"http://www.webkit.org/b\") 2x, url(\"http://www.webkit.org/a\") 1x)"
Fractional values for background-image : url("http://www.webkit.org/c") 0.2x, url("http://www.webkit.org/b") 2.3x, url("http://www.webkit.org/a") 12.3456x
-PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 0.2dppx, url(\"http://www.webkit.org/b\") 2.3dppx, url(\"http://www.webkit.org/a\") 12.3456dppx)"
+PASS style.backgroundImage is "image-set(url(\"http://www.webkit.org/c\") 0.2x, url(\"http://www.webkit.org/b\") 2.3x, url(\"http://www.webkit.org/a\") 12.3456x)"
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/fast/css/image-set-setting.html (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-setting.html 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-setting.html 2021-09-14 17:08:05 UTC (rev 282396)
@@ -28,7 +28,7 @@
var fullRule = "image-set(" + rule + ")";
style = testComputedStyle(property, fullRule);
- shouldBeEqualToString('style.backgroundImage', fullRule.replace(/x(?=[,)])/g, 'dppx'));
+ shouldBeEqualToString('style.backgroundImage', fullRule);
}
testImageSetRule("Single value for background-image",
@@ -58,4 +58,4 @@
</script>
<script src=""
</body>
-</html>
\ No newline at end of file
+</html>
Modified: trunk/LayoutTests/fast/css/image-set-unprefixed.html (282395 => 282396)
--- trunk/LayoutTests/fast/css/image-set-unprefixed.html 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/fast/css/image-set-unprefixed.html 2021-09-14 17:08:05 UTC (rev 282396)
@@ -25,12 +25,12 @@
if (property == 'cursor')
rule += ', default';
- if (testComputedStyle(property, rule) == rule.replace(/x(?=[,)])/g, 'dppx'))
+ if (testComputedStyle(property, rule) == rule)
debug("Unprefixed: PASS");
else
debug("Unprefixed: FAIL");
- if (testComputedStyle(property, "-webkit-" + rule) == rule.replace(/x(?=[,)])/g, 'dppx'))
+ if (testComputedStyle(property, "-webkit-" + rule) == rule)
debug("Prefixed: PASS");
else
debug("Prefixed: FAIL");
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (282395 => 282396)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-09-14 17:08:05 UTC (rev 282396)
@@ -1,3 +1,14 @@
+2021-09-14 Sam Sneddon <[email protected]>
+
+ Support the `x` resolution unit
+ https://bugs.webkit.org/show_bug.cgi?id=229777
+
+ Reviewed by Simon Fraser.
+
+ Rebaseline for more passing tests.
+
+ * web-platform-tests/css/mediaqueries/test_media_queries-expected.txt:
+
2021-09-14 Youenn Fablet <[email protected]>
Migrate some WPT WebRTC tests our of legacy offerToReceive parameters
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt (282395 => 282396)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/mediaqueries/test_media_queries-expected.txt 2021-09-14 17:08:05 UTC (rev 282396)
@@ -790,9 +790,9 @@
PASS subtest_661
PASS subtest_662
PASS subtest_663
-FAIL subtest_664 assert_true: expected true got false
+PASS subtest_664
PASS subtest_665
-FAIL subtest_666 assert_true: expected true got false
+PASS subtest_666
PASS subtest_667
PASS subtest_668
PASS subtest_669
@@ -804,9 +804,9 @@
PASS subtest_675
PASS subtest_676
PASS subtest_677
-FAIL subtest_678 assert_true: expected true got false
+PASS subtest_678
PASS subtest_679
-FAIL subtest_680 assert_true: expected true got false
+PASS subtest_680
PASS subtest_681
PASS subtest_682
PASS subtest_683
@@ -818,9 +818,9 @@
PASS subtest_689
PASS subtest_690
PASS subtest_691
-FAIL subtest_692 assert_true: expected true got false
+PASS subtest_692
PASS subtest_693
-FAIL subtest_694 assert_true: expected true got false
+PASS subtest_694
PASS subtest_695
PASS subtest_696
PASS subtest_697
@@ -829,7 +829,7 @@
PASS find_resolution
PASS subtest_700
PASS subtest_701
-FAIL subtest_702 assert_true: (resolution: 1x) should apply expected true got false
+PASS subtest_702
PASS subtest_703
PASS subtest_704
PASS subtest_705
Modified: trunk/Source/WebCore/ChangeLog (282395 => 282396)
--- trunk/Source/WebCore/ChangeLog 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/ChangeLog 2021-09-14 17:08:05 UTC (rev 282396)
@@ -1,3 +1,40 @@
+2021-09-14 Sam Sneddon <[email protected]>
+
+ Support the `x` resolution unit
+ https://bugs.webkit.org/show_bug.cgi?id=229777
+
+ Reviewed by Simon Fraser.
+
+ Covered by existing (progressing) tests.
+
+ * css/CSSPrimitiveValue.cpp:
+ (WebCore::isValidCSSUnitTypeForDoubleConversion):
+ (WebCore::isStringType):
+ (WebCore::CSSPrimitiveValue::cleanup):
+ (WebCore::CSSPrimitiveValue::conversionToCanonicalUnitsScaleFactor):
+ (WebCore::CSSPrimitiveValue::unitTypeString):
+ (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
+ (WebCore::CSSPrimitiveValue::equals const):
+ * css/CSSPrimitiveValue.h:
+ * css/CSSUnits.cpp:
+ (WebCore::unitCategory):
+ (WebCore::operator<<):
+ * css/CSSUnits.h:
+ * css/DeprecatedCSSOMPrimitiveValue.cpp:
+ (WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType const):
+ (WebCore::DeprecatedCSSOMPrimitiveValue::getFloatValue const):
+ * css/calc/CSSCalcCategoryMapping.cpp:
+ (WebCore::hasDoubleValue):
+ * css/parser/CSSParserToken.cpp:
+ (WebCore::cssPrimitiveValueUnitFromTrie):
+ * css/parser/CSSPropertyParserHelpers.cpp:
+ (WebCore::CSSPropertyParserHelpers::consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension):
+ (WebCore::CSSPropertyParserHelpers::consumeResolution):
+ (WebCore::CSSPropertyParserHelpers::consumeImageSet):
+ * css/parser/CSSPropertyParserHelpers.h:
+ (WebCore::CSSPropertyParserHelpers::consumeResolution):
+ Remove the optional allowX argument now it's part of the normal syntax.
+
2021-09-14 Youenn Fablet <[email protected]>
Refactor WritableStream to better integrate https://streams.spec.whatwg.org/#create-writable-stream
Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/CSSPrimitiveValue.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -88,6 +88,7 @@
case CSSUnitType::CSS_DPCM:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
return true;
case CSSUnitType::CSS_ATTR:
case CSSUnitType::CSS_COUNTER:
@@ -136,6 +137,7 @@
case CSSUnitType::CSS_DPCM:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
case CSSUnitType::CSS_EMS:
case CSSUnitType::CSS_EXS:
case CSSUnitType::CSS_FONT_FAMILY:
@@ -510,6 +512,7 @@
case CSSUnitType::CSS_VMIN:
case CSSUnitType::CSS_VMAX:
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPCM:
case CSSUnitType::CSS_FR:
@@ -768,6 +771,9 @@
case CSSUnitType::CSS_HZ:
case CSSUnitType::CSS_DPPX:
break;
+ case CSSUnitType::CSS_X:
+ // This is semantically identical to (canonical) dppx
+ break;
case CSSUnitType::CSS_CM:
factor = cssPixelsPerInch / cmPerInch;
break;
@@ -966,6 +972,7 @@
case CSSUnitType::CSS_VMIN: return "vmin";
case CSSUnitType::CSS_VMAX: return "vmax";
case CSSUnitType::CSS_DPPX: return "dppx";
+ case CSSUnitType::CSS_X: return "x";
case CSSUnitType::CSS_DPI: return "dpi";
case CSSUnitType::CSS_DPCM: return "dpcm";
case CSSUnitType::CSS_FR: return "fr";
@@ -1029,6 +1036,8 @@
return formatNumberValue("cm");
case CSSUnitType::CSS_DPPX:
return formatNumberValue("dppx");
+ case CSSUnitType::CSS_X:
+ return formatNumberValue("x");
case CSSUnitType::CSS_DPI:
return formatNumberValue("dpi");
case CSSUnitType::CSS_DPCM:
@@ -1168,6 +1177,7 @@
case CSSUnitType::CSS_PX:
case CSSUnitType::CSS_CM:
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPCM:
case CSSUnitType::CSS_MM:
Modified: trunk/Source/WebCore/css/CSSPrimitiveValue.h (282395 => 282396)
--- trunk/Source/WebCore/css/CSSPrimitiveValue.h 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/CSSPrimitiveValue.h 2021-09-14 17:08:05 UTC (rev 282396)
@@ -108,6 +108,7 @@
bool isDotsPerInch() const { return primitiveType() == CSSUnitType::CSS_DPI; }
bool isDotsPerPixel() const { return primitiveType() == CSSUnitType::CSS_DPPX; }
bool isDotsPerCentimeter() const { return primitiveType() == CSSUnitType::CSS_DPCM; }
+ bool isX() const { return primitiveType() == CSSUnitType::CSS_X; }
bool isResolution() const { return unitCategory(primitiveType()) == CSSUnitCategory::Resolution; }
bool isViewportPercentageLength() const { return isViewportPercentageLength(primitiveUnitType()); }
bool isViewportPercentageWidth() const { return primitiveUnitType() == CSSUnitType::CSS_VW; }
Modified: trunk/Source/WebCore/css/CSSUnits.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/CSSUnits.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/CSSUnits.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -52,6 +52,7 @@
case CSSUnitType::CSS_KHZ:
return CSSUnitCategory::Frequency;
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPCM:
return CSSUnitCategory::Resolution;
@@ -137,6 +138,7 @@
case CSSUnitType::CSS_VMIN: ts << "vmin"; break;
case CSSUnitType::CSS_VMAX: ts << "vmax"; break;
case CSSUnitType::CSS_DPPX: ts << "dppx"; break;
+ case CSSUnitType::CSS_X: ts << "x"; break;
case CSSUnitType::CSS_DPI: ts << "dpi"; break;
case CSSUnitType::CSS_DPCM: ts << "dpcm"; break;
case CSSUnitType::CSS_FR: ts << "fr"; break;
Modified: trunk/Source/WebCore/css/CSSUnits.h (282395 => 282396)
--- trunk/Source/WebCore/css/CSSUnits.h 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/CSSUnits.h 2021-09-14 17:08:05 UTC (rev 282396)
@@ -60,6 +60,7 @@
CSS_VMIN,
CSS_VMAX,
CSS_DPPX,
+ CSS_X,
CSS_DPI,
CSS_DPCM,
CSS_FR,
Modified: trunk/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -91,6 +91,7 @@
case CSSUnitType::CSS_VMAX: return CSS_VMAX;
case CSSUnitType::CSS_VMIN: return CSS_VMIN;
case CSSUnitType::CSS_VW: return CSS_VW;
+ case CSSUnitType::CSS_X: return 37;
}
ASSERT_NOT_REACHED();
@@ -132,6 +133,7 @@
case 34: return m_value->getFloatValue(CSSUnitType::CSS_Q);
case 35: return m_value->getFloatValue(CSSUnitType::CSS_LHS);
case 36: return m_value->getFloatValue(CSSUnitType::CSS_RLHS);
+ case 37: return m_value->getFloatValue(CSSUnitType::CSS_X);
case 107: return m_value->getFloatValue(CSSUnitType::CSS_TURN);
case 108: return m_value->getFloatValue(CSSUnitType::CSS_REMS);
case 109: return m_value->getFloatValue(CSSUnitType::CSS_CHS);
Modified: trunk/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -160,6 +160,7 @@
case CSSUnitType::CSS_VMIN:
case CSSUnitType::CSS_VMAX:
case CSSUnitType::CSS_DPPX:
+ case CSSUnitType::CSS_X:
case CSSUnitType::CSS_DPI:
case CSSUnitType::CSS_DPCM:
case CSSUnitType::CSS_FR:
Modified: trunk/Source/WebCore/css/parser/CSSParserToken.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/parser/CSSParserToken.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/parser/CSSParserToken.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -52,6 +52,8 @@
return CSSUnitType::CSS_Q;
case 's':
return CSSUnitType::CSS_S;
+ case 'x':
+ return CSSUnitType::CSS_X;
}
break;
case 2:
Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (282395 => 282396)
--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp 2021-09-14 17:08:05 UTC (rev 282396)
@@ -629,14 +629,12 @@
// MARK: Resolution (CSSPrimitiveValue - no calc)
-static RefPtr<CSSPrimitiveValue> consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension(CSSParserTokenRange& range, AllowXResolutionUnit allowX, CSSValuePool& pool)
+static RefPtr<CSSPrimitiveValue> consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension(CSSParserTokenRange& range, CSSValuePool& pool)
{
ASSERT(range.peek().type() == DimensionToken);
- if (auto unit = range.peek().unitType(); unit == CSSUnitType::CSS_DPPX || unit == CSSUnitType::CSS_DPI || unit == CSSUnitType::CSS_DPCM)
+ if (auto unit = range.peek().unitType(); unit == CSSUnitType::CSS_DPPX || unit == CSSUnitType::CSS_X || unit == CSSUnitType::CSS_DPI || unit == CSSUnitType::CSS_DPCM)
return pool.createValue(range.consumeIncludingWhitespace().numericValue(), unit);
- if (allowX == AllowXResolutionUnit::Allow && range.peek().unitString() == "x")
- return pool.createValue(range.consumeIncludingWhitespace().numericValue(), CSSUnitType::CSS_DPPX);
return nullptr;
}
@@ -888,7 +886,7 @@
return nullptr;
}
-RefPtr<CSSPrimitiveValue> consumeResolution(CSSParserTokenRange& range, AllowXResolutionUnit allowX)
+RefPtr<CSSPrimitiveValue> consumeResolution(CSSParserTokenRange& range)
{
// NOTE: Unlike the other types, calc() does not work with <resolution>.
@@ -896,7 +894,7 @@
switch (token.type()) {
case DimensionToken:
- return consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension(range, allowX, CSSValuePool::singleton());
+ return consumeResolutionCSSPrimitiveValueWithKnownTokenTypeDimension(range, CSSValuePool::singleton());
default:
break;
@@ -3330,7 +3328,7 @@
imageSet->append(image.releaseNonNull());
- auto resolution = consumeResolution(args, AllowXResolutionUnit::Allow);
+ auto resolution = consumeResolution(args);
if (!resolution || resolution->floatValue() <= 0)
return nullptr;
Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h (282395 => 282396)
--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h 2021-09-14 17:02:08 UTC (rev 282395)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.h 2021-09-14 17:08:05 UTC (rev 282396)
@@ -62,7 +62,6 @@
enum class UnitlessQuirk { Allow, Forbid };
enum class UnitlessZeroQuirk { Allow, Forbid };
-enum class AllowXResolutionUnit { Allow, Forbid };
struct AngleRaw {
CSSUnitType type;
@@ -97,7 +96,7 @@
RefPtr<CSSPrimitiveValue> consumeAngle(CSSParserTokenRange&, CSSParserMode, UnitlessQuirk = UnitlessQuirk::Forbid, UnitlessZeroQuirk = UnitlessZeroQuirk::Forbid);
RefPtr<CSSPrimitiveValue> consumeAngleWorkerSafe(CSSParserTokenRange&, CSSParserMode, CSSValuePool&, UnitlessQuirk = UnitlessQuirk::Forbid, UnitlessZeroQuirk = UnitlessZeroQuirk::Forbid);
RefPtr<CSSPrimitiveValue> consumeTime(CSSParserTokenRange&, CSSParserMode, ValueRange, UnitlessQuirk = UnitlessQuirk::Forbid);
-RefPtr<CSSPrimitiveValue> consumeResolution(CSSParserTokenRange&, AllowXResolutionUnit = AllowXResolutionUnit::Forbid);
+RefPtr<CSSPrimitiveValue> consumeResolution(CSSParserTokenRange&);
std::optional<CSSValueID> consumeIdentRaw(CSSParserTokenRange&);
RefPtr<CSSPrimitiveValue> consumeIdent(CSSParserTokenRange&);