Diff
Modified: trunk/LayoutTests/ChangeLog (231032 => 231033)
--- trunk/LayoutTests/ChangeLog 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/ChangeLog 2018-04-25 23:24:47 UTC (rev 231033)
@@ -1,3 +1,35 @@
+2018-04-25 Simon Fraser <[email protected]>
+
+ brightness() filter should default to 1, and not allow negative values
+ https://bugs.webkit.org/show_bug.cgi?id=184937
+
+ Reviewed by Dean Jackson.
+
+ Added negative value tests to filter-property-parsing.html and backdropfilter-property-parsing.html,
+ and made these tests more similar.
+
+ Fixed expected computed value for brightness() to be brightness(1) in the tests.
+
+ The effect-brightness* test results failed because elements with invalid brightness values now
+ no longer create a RenderLayer.
+
+ * css3/color-filters/color-filter-parsing-expected.txt:
+ * css3/color-filters/color-filter-parsing.html:
+ * css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt:
+ * css3/filters/backdrop/backdropfilter-property-computed-style.html:
+ * css3/filters/backdrop/backdropfilter-property-parsing-expected.txt:
+ * css3/filters/backdrop/backdropfilter-property-parsing.html:
+ * css3/filters/effect-brightness-expected.txt:
+ * css3/filters/filter-property-computed-style-expected.txt:
+ * css3/filters/filter-property-computed-style.html:
+ * css3/filters/filter-property-parsing-expected.txt:
+ * css3/filters/filter-property-parsing.html:
+ * css3/filters/unprefixed-expected.txt:
+ * css3/filters/unprefixed.html:
+ * fast/filter-image/parse-filter-image-expected.txt:
+ * fast/filter-image/parse-filter-image.html:
+ * platform/mac/css3/filters/effect-brightness-clamping-expected.txt:
+
2018-04-25 Carlos Alberto Lopez Perez <[email protected]>
[WPE][Debug] Test gardening of EME related tests.
Modified: trunk/LayoutTests/css3/color-filters/color-filter-parsing-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/color-filters/color-filter-parsing-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/color-filters/color-filter-parsing-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -3,7 +3,7 @@
PASS Parse auto
PASS Parsing garbage value returns none
PASS Parsing garbage function returns none
-FAIL Parse brightness() assert_equals: expected "brightness(1)" but got "brightness(0)"
+PASS Parse brightness()
PASS Parse contrast()
PASS Parse grayscale()
PASS Parse hue-rotate()
@@ -15,7 +15,7 @@
PASS blur() is not allowed in color-filter
PASS Canonicalize grayscale() argument
PASS Canonicalize hue-rotate() argument
-FAIL Negative value for brightness() is invalid assert_equals: expected "none" but got "brightness(-0.4)"
+PASS Negative value for brightness() is invalid
PASS Negative value for contrast() is invalid
PASS Negative value for grayscale() is invalid
PASS Negative value allowed for hue-rotate()
Modified: trunk/LayoutTests/css3/color-filters/color-filter-parsing.html (231032 => 231033)
--- trunk/LayoutTests/css3/color-filters/color-filter-parsing.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/color-filters/color-filter-parsing.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -25,7 +25,7 @@
testColorFilterParsing("garbage()", "none", "Parsing garbage function returns none");
// Argument-free funtions.
-testColorFilterParsing("brightness()", "brightness(1)", "Parse brightness()"); // webkit.org/b/184937
+testColorFilterParsing("brightness()", "brightness(1)", "Parse brightness()");
testColorFilterParsing("contrast()", "contrast(1)", "Parse contrast()");
testColorFilterParsing("grayscale()", "grayscale(1)", "Parse grayscale()");
testColorFilterParsing("hue-rotate()", "hue-rotate(0deg)", "Parse hue-rotate()");
@@ -43,7 +43,7 @@
testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.75493541569878deg)", "Canonicalize hue-rotate() argument");
// Negative values.
-testColorFilterParsing("brightness(-0.4)", "none", "Negative value for brightness() is invalid"); // webkit.org/b/184937
+testColorFilterParsing("brightness(-0.4)", "none", "Negative value for brightness() is invalid");
testColorFilterParsing("contrast(-0.6)", "none", "Negative value for contrast() is invalid");
testColorFilterParsing("grayscale(-0.)", "none", "Negative value for grayscale() is invalid");
testColorFilterParsing("hue-rotate(-20deg)", "hue-rotate(-20deg)", "Negative value allowed for hue-rotate()");
Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -194,7 +194,7 @@
No values : brightness()
PASS filterStyle.length is 1
-PASS subRule.cssText is "brightness(0)"
+PASS subRule.cssText is "brightness(1)"
Multiple values : brightness(0.5) brightness(0.25)
PASS filterStyle.length is 2
Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html (231032 => 231033)
--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -209,7 +209,7 @@
testComputedFilterRule("No values",
"brightness()", 1,
- ["brightness(0)"]);
+ ["brightness(1)"]);
testComputedFilterRule("Multiple values",
"brightness(0.5) brightness(0.25)", 2,
Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -76,6 +76,26 @@
PASS filterRule.length is 1
PASS subRule.cssText is "grayscale(1)"
+Values over 1 are clamped : grayscale(1.5)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "grayscale(1)"
+
+Percentages over 100 are clamped : grayscale(320%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(100%)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "grayscale(100%)"
+
Zero value : grayscale(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -137,6 +157,31 @@
PASS filterRule.length is 1
PASS subRule.cssText is "sepia(1)"
+Values over 1 are clamped : sepia(8)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "sepia(1)"
+
+Percentages over 100 are clamped : sepia(101%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(100%)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "sepia(100%)"
+
+Negative value : sepia(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Zero value : sepia(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -157,6 +202,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "sepia()"
+Negative value : grayscale(-0.2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Multiple values : sepia(0.5) sepia(0.25)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -229,6 +279,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "saturate(5.5)"
+Negative value : saturate(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Zero value : saturate(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -321,6 +376,16 @@
PASS filterRule.length is 1
PASS subRule.cssText is "hue-rotate(0.5turn)"
+Negative value : hue-rotate(-370.2deg)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(-370.2deg)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "hue-rotate(-370.2deg)"
+
Zero value : hue-rotate(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -382,6 +447,26 @@
PASS filterRule.length is 1
PASS subRule.cssText is "invert(1)"
+Values over 1 are clamped : invert(1.01)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "invert(1)"
+
+Percentages over 100 are clamped : invert(500000%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(100%)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "invert(100%)"
+
Zero value : invert(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -392,6 +477,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "invert(0)"
+Negative value : invert(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
No values : invert()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -454,6 +544,31 @@
PASS filterRule.length is 1
PASS subRule.cssText is "opacity(1)"
+Values over 1 are clamped : opacity(2134687326)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "opacity(1)"
+
+Percentages over 100 are clamped : opacity(500%)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(100%)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "opacity(100%)"
+
+Negative value : opacity(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Zero value : opacity(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -536,6 +651,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "brightness(0)"
+Negative value : brightness(-2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
No values : brightness()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -568,16 +688,16 @@
PASS subRule.cssText is "brightness(0.5)"
PASS subRule.cssText is "grayscale(0.25)"
-Parameter less than -100% : brightness(-1.1)
+Value less than -100% : brightness(-1.1)
PASS cssRule.type is 1
-PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(-1.1)"
-PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'Function'
-PASS filterRule.length is 1
-PASS subRule.cssText is "brightness(-1.1)"
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+Negative value : brightness(-0.6)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Parameter more than 100% : brightness(101%)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -649,6 +769,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "contrast(0)"
+Negative value : contrast(-0.2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
No values : contrast()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -669,6 +794,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "contrast(2)"
+Negative value : contrast(-0.8)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Multiple values : contrast(0.5) contrast(0.25)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -732,6 +862,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "blur()"
+Negative value : blur(-2px)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is ''
+
Color then three values : drop-shadow(red 1px 2px 3px)
PASS cssRule.type is 1
PASS declaration.length is 1
Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html (231032 => 231033)
--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -59,8 +59,27 @@
shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
}
}
+
+ stylesheet.deleteRule(0);
}
+function testInvalidFilterRule(description, rule)
+{
+ debug("");
+ debug(`${description} : ${rule}`);
+
+ stylesheet.insertRule("body { -webkit-backdrop-filter: " + rule + "; }", 0);
+ cssRule = stylesheet.cssRules.item(0);
+
+ shouldBe("cssRule.type", "1");
+
+ declaration = cssRule.style;
+ shouldBe("declaration.length", "0");
+ shouldBe("declaration.getPropertyValue('-webkit-backdrop-filter')", "''");
+
+ stylesheet.deleteRule(0);
+}
+
testFilterRule("Basic reference",
"url('#a')", 1, "url(#a)",
["url(#a)"]);
@@ -89,6 +108,14 @@
"grayscale(1.0)", 1, "grayscale(1)",
["grayscale(1)"]);
+testFilterRule("Values over 1 are clamped",
+ "grayscale(1.5)", 1, "grayscale(1)",
+ ["grayscale(1)"]);
+
+testFilterRule("Percentages over 100 are clamped",
+ "grayscale(320%)", 1, "grayscale(100%)",
+ ["grayscale(100%)"]);
+
testFilterRule("Zero value",
"grayscale(0)", 1, "grayscale(0)",
["grayscale(0)"]);
@@ -113,6 +140,16 @@
"sepia(1.0)", 1, "sepia(1)",
["sepia(1)"]);
+testFilterRule("Values over 1 are clamped",
+ "sepia(8)", 1, "sepia(1)",
+ ["sepia(1)"]);
+
+testFilterRule("Percentages over 100 are clamped",
+ "sepia(101%)", 1, "sepia(100%)",
+ ["sepia(100%)"]);
+
+testInvalidFilterRule("Negative value", "sepia(-0.5)");
+
testFilterRule("Zero value",
"sepia(0)", 1, "sepia(0)",
["sepia(0)"]);
@@ -121,6 +158,8 @@
"sepia()", 1, "sepia()",
["sepia()"]);
+testInvalidFilterRule("Negative value", "grayscale(-0.2)");
+
testFilterRule("Multiple values",
"sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
["sepia(0.5)", "sepia(0.25)"]);
@@ -149,6 +188,8 @@
"saturate(5.5)", 1, "saturate(5.5)",
["saturate(5.5)"]);
+testInvalidFilterRule("Negative value", "saturate(-0.5)");
+
testFilterRule("Zero value",
"saturate(0)", 1, "saturate(0)",
["saturate(0)"]);
@@ -185,6 +226,10 @@
"hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
["hue-rotate(0.5turn)"]);
+testFilterRule("Negative value",
+ "hue-rotate(-370.2deg)", 1, "hue-rotate(-370.2deg)",
+ ["hue-rotate(-370.2deg)"]);
+
testFilterRule("Zero value",
"hue-rotate(0)", 1, "hue-rotate(0deg)",
["hue-rotate(0deg)"]);
@@ -209,10 +254,20 @@
"invert(1.0)", 1, "invert(1)",
["invert(1)"]);
+testFilterRule("Values over 1 are clamped",
+ "invert(1.01)", 1, "invert(1)",
+ ["invert(1)"]);
+
+testFilterRule("Percentages over 100 are clamped",
+ "invert(500000%)", 1, "invert(100%)",
+ ["invert(100%)"]);
+
testFilterRule("Zero value",
"invert(0)", 1, "invert(0)",
["invert(0)"]);
+testInvalidFilterRule("Negative value", "invert(-0.5)");
+
testFilterRule("No values",
"invert()", 1, "invert()",
["invert()"]);
@@ -237,6 +292,16 @@
"opacity(1.0)", 1, "opacity(1)",
["opacity(1)"]);
+testFilterRule("Values over 1 are clamped",
+ "opacity(2134687326)", 1, "opacity(1)",
+ ["opacity(1)"]);
+
+testFilterRule("Percentages over 100 are clamped",
+ "opacity(500%)", 1, "opacity(100%)",
+ ["opacity(100%)"]);
+
+testInvalidFilterRule("Negative value", "opacity(-0.5)");
+
testFilterRule("Zero value",
"opacity(0)", 1, "opacity(0)",
["opacity(0)"]);
@@ -269,6 +334,8 @@
"brightness(0)", 1, "brightness(0)",
["brightness(0)"]);
+testInvalidFilterRule("Negative value", "brightness(-2)");
+
testFilterRule("No values",
"brightness()", 1, "brightness()",
["brightness()"]);
@@ -281,9 +348,8 @@
"brightness(0.5) grayscale(0.25)", 2, "brightness(0.5) grayscale(0.25)",
["brightness(0.5)", "grayscale(0.25)"]);
-testFilterRule("Parameter less than -100%",
- "brightness(-1.1)", 1, "brightness(-1.1)",
- ["brightness(-1.1)"]);
+testInvalidFilterRule("Value less than -100%", "brightness(-1.1)");
+testInvalidFilterRule("Negative value", "brightness(-0.6)");
testFilterRule("Parameter more than 100%",
"brightness(101%)", 1, "brightness(101%)",
@@ -313,6 +379,8 @@
"contrast(0)", 1, "contrast(0)",
["contrast(0)"]);
+testInvalidFilterRule("Negative value", "contrast(-0.2)");
+
testFilterRule("No values",
"contrast()", 1, "contrast()",
["contrast()"]);
@@ -321,6 +389,8 @@
"contrast(2)", 1, "contrast(2)",
["contrast(2)"]);
+testInvalidFilterRule("Negative value", "contrast(-0.8)");
+
testFilterRule("Multiple values",
"contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
["contrast(0.5)", "contrast(0.25)"]);
@@ -345,6 +415,8 @@
"blur()", 1, "blur()",
["blur()"]);
+testInvalidFilterRule("Negative value", "blur(-2px)");
+
testFilterRule("Color then three values",
"drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
["drop-shadow(red 1px 2px 3px)"]);
Modified: trunk/LayoutTests/css3/filters/effect-brightness-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/effect-brightness-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/effect-brightness-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -3,10 +3,13 @@
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
+ RenderImage {IMG} at (0,0) size 160x90
RenderText {#text} at (160,76) size 4x18
text run at (160,76) width 4: " "
+ RenderImage {IMG} at (164,0) size 160x90
RenderText {#text} at (324,76) size 4x18
text run at (324,76) width 4: " "
+ RenderImage {IMG} at (328,0) size 160x90
RenderText {#text} at (488,76) size 4x18
text run at (488,76) width 4: " "
RenderText {#text} at (652,76) size 4x18
@@ -16,12 +19,6 @@
RenderText {#text} at (324,170) size 4x18
text run at (324,170) width 4: " "
RenderText {#text} at (0,0) size 0x0
-layer at (8,8) size 160x90
- RenderImage {IMG} at (0,0) size 160x90
-layer at (172,8) size 160x90
- RenderImage {IMG} at (164,0) size 160x90
-layer at (336,8) size 160x90
- RenderImage {IMG} at (328,0) size 160x90
layer at (500,8) size 160x90
RenderImage {IMG} at (492,0) size 160x90
layer at (8,102) size 160x90
Modified: trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -194,7 +194,7 @@
No values : brightness()
PASS filterStyle.length is 1
-PASS subRule.cssText is "brightness(0)"
+PASS subRule.cssText is "brightness(1)"
Multiple values : brightness(0.5) brightness(0.25)
PASS filterStyle.length is 2
Modified: trunk/LayoutTests/css3/filters/filter-property-computed-style.html (231032 => 231033)
--- trunk/LayoutTests/css3/filters/filter-property-computed-style.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -209,7 +209,7 @@
testComputedFilterRule("No values",
"brightness()", 1,
- ["brightness(0)"]);
+ ["brightness(1)"]);
testComputedFilterRule("Multiple values",
"brightness(0.5) brightness(0.25)", 2,
Modified: trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -177,6 +177,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "sepia(100%)"
+Negative value : sepia(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Zero value : sepia(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -197,6 +202,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "sepia()"
+Negative value : grayscale(-0.2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Multiple values : sepia(0.5) sepia(0.25)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -269,6 +279,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "saturate(5.5)"
+Negative value : saturate(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Zero value : saturate(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -361,6 +376,16 @@
PASS filterRule.length is 1
PASS subRule.cssText is "hue-rotate(0.5turn)"
+Negative value : hue-rotate(-370.2deg)
+PASS cssRule.type is 1
+PASS declaration.length is 1
+PASS declaration.getPropertyValue('filter') is "hue-rotate(-370.2deg)"
+PASS jsWrapperClass(filterRule) is 'CSSValueList'
+PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
+PASS jsWrapperClass(filterRule.constructor) is 'Function'
+PASS filterRule.length is 1
+PASS subRule.cssText is "hue-rotate(-370.2deg)"
+
Zero value : hue-rotate(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -452,6 +477,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "invert(0)"
+Negative value : invert(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
No values : invert()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -534,6 +564,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "opacity(100%)"
+Negative value : opacity(-0.5)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Zero value : opacity(0)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -616,6 +651,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "brightness(0)"
+Negative value : brightness(-2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
No values : brightness()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -648,16 +688,16 @@
PASS subRule.cssText is "brightness(0.5)"
PASS subRule.cssText is "grayscale(0.25)"
-Parameter less than -100% : brightness(-1.1)
+Value less than -100% : brightness(-1.1)
PASS cssRule.type is 1
-PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is "brightness(-1.1)"
-PASS jsWrapperClass(filterRule) is 'CSSValueList'
-PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
-PASS jsWrapperClass(filterRule.constructor) is 'Function'
-PASS filterRule.length is 1
-PASS subRule.cssText is "brightness(-1.1)"
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+Negative value : brightness(-0.6)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Parameter more than 100% : brightness(101%)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -729,6 +769,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "contrast(0)"
+Negative value : contrast(-0.2)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
No values : contrast()
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -749,6 +794,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "contrast(2)"
+Negative value : contrast(-0.8)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Multiple values : contrast(0.5) contrast(0.25)
PASS cssRule.type is 1
PASS declaration.length is 1
@@ -812,6 +862,11 @@
PASS filterRule.length is 1
PASS subRule.cssText is "blur()"
+Negative value : blur(-2px)
+PASS cssRule.type is 1
+PASS declaration.length is 0
+PASS declaration.getPropertyValue('filter') is ''
+
Color then three values : drop-shadow(red 1px 2px 3px)
PASS cssRule.type is 1
PASS declaration.length is 1
Modified: trunk/LayoutTests/css3/filters/filter-property-parsing.html (231032 => 231033)
--- trunk/LayoutTests/css3/filters/filter-property-parsing.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/filter-property-parsing.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<!DOCTYPE>
<html>
<head>
<script src=""
@@ -59,9 +59,27 @@
shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
}
}
+
stylesheet.deleteRule(0);
}
+function testInvalidFilterRule(description, rule)
+{
+ debug("");
+ debug(`${description} : ${rule}`);
+
+ stylesheet.insertRule(`body { filter: ${rule}; }`, 0);
+ cssRule = stylesheet.cssRules.item(0);
+
+ shouldBe("cssRule.type", "1");
+
+ declaration = cssRule.style;
+ shouldBe("declaration.length", "0");
+ shouldBe("declaration.getPropertyValue('filter')", "''");
+
+ stylesheet.deleteRule(0);
+}
+
testFilterRule("Basic reference",
"url('#a')", 1, "url(#a)",
["url(#a)"]);
@@ -130,6 +148,8 @@
"sepia(101%)", 1, "sepia(100%)",
["sepia(100%)"]);
+testInvalidFilterRule("Negative value", "sepia(-0.5)");
+
testFilterRule("Zero value",
"sepia(0)", 1, "sepia(0)",
["sepia(0)"]);
@@ -138,6 +158,8 @@
"sepia()", 1, "sepia()",
["sepia()"]);
+testInvalidFilterRule("Negative value", "grayscale(-0.2)");
+
testFilterRule("Multiple values",
"sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
["sepia(0.5)", "sepia(0.25)"]);
@@ -166,6 +188,8 @@
"saturate(5.5)", 1, "saturate(5.5)",
["saturate(5.5)"]);
+testInvalidFilterRule("Negative value", "saturate(-0.5)");
+
testFilterRule("Zero value",
"saturate(0)", 1, "saturate(0)",
["saturate(0)"]);
@@ -202,9 +226,13 @@
"hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
["hue-rotate(0.5turn)"]);
+testFilterRule("Negative value",
+ "hue-rotate(-370.2deg)", 1, "hue-rotate(-370.2deg)",
+ ["hue-rotate(-370.2deg)"]);
+
testFilterRule("Zero value",
"hue-rotate(0)", 1, "hue-rotate(0deg)",
- ["hue-rotate(0deg)"]);
+ ["hue-rotate(0deg)"]);
testFilterRule("No values",
"hue-rotate()", 1, "hue-rotate()",
@@ -238,6 +266,8 @@
"invert(0)", 1, "invert(0)",
["invert(0)"]);
+testInvalidFilterRule("Negative value", "invert(-0.5)");
+
testFilterRule("No values",
"invert()", 1, "invert()",
["invert()"]);
@@ -270,6 +300,8 @@
"opacity(500%)", 1, "opacity(100%)",
["opacity(100%)"]);
+testInvalidFilterRule("Negative value", "opacity(-0.5)");
+
testFilterRule("Zero value",
"opacity(0)", 1, "opacity(0)",
["opacity(0)"]);
@@ -302,6 +334,8 @@
"brightness(0)", 1, "brightness(0)",
["brightness(0)"]);
+testInvalidFilterRule("Negative value", "brightness(-2)");
+
testFilterRule("No values",
"brightness()", 1, "brightness()",
["brightness()"]);
@@ -314,9 +348,8 @@
"brightness(0.5) grayscale(0.25)", 2, "brightness(0.5) grayscale(0.25)",
["brightness(0.5)", "grayscale(0.25)"]);
-testFilterRule("Parameter less than -100%",
- "brightness(-1.1)", 1, "brightness(-1.1)",
- ["brightness(-1.1)"]);
+testInvalidFilterRule("Value less than -100%", "brightness(-1.1)");
+testInvalidFilterRule("Negative value", "brightness(-0.6)");
testFilterRule("Parameter more than 100%",
"brightness(101%)", 1, "brightness(101%)",
@@ -346,6 +379,8 @@
"contrast(0)", 1, "contrast(0)",
["contrast(0)"]);
+testInvalidFilterRule("Negative value", "contrast(-0.2)");
+
testFilterRule("No values",
"contrast()", 1, "contrast()",
["contrast()"]);
@@ -354,6 +389,8 @@
"contrast(2)", 1, "contrast(2)",
["contrast(2)"]);
+testInvalidFilterRule("Negative value", "contrast(-0.8)");
+
testFilterRule("Multiple values",
"contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
["contrast(0.5)", "contrast(0.25)"]);
@@ -378,6 +415,8 @@
"blur()", 1, "blur()",
["blur()"]);
+testInvalidFilterRule("Negative value", "blur(-2px)");
+
testFilterRule("Color then three values",
"drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
["drop-shadow(red 1px 2px 3px)"]);
Modified: trunk/LayoutTests/css3/filters/unprefixed-expected.txt (231032 => 231033)
--- trunk/LayoutTests/css3/filters/unprefixed-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/unprefixed-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -194,7 +194,7 @@
No values : brightness()
PASS filterStyle.length is 1
-PASS subRule.cssText is "brightness(0)"
+PASS subRule.cssText is "brightness(1)"
Multiple values : brightness(0.5) brightness(0.25)
PASS filterStyle.length is 2
Modified: trunk/LayoutTests/css3/filters/unprefixed.html (231032 => 231033)
--- trunk/LayoutTests/css3/filters/unprefixed.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/css3/filters/unprefixed.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -209,7 +209,7 @@
testComputedFilterRule("No values",
"brightness()", 1,
- ["brightness(0)"]);
+ ["brightness(1)"]);
testComputedFilterRule("Multiple values",
"brightness(0.5) brightness(0.25)", 2,
Modified: trunk/LayoutTests/fast/filter-image/parse-filter-image-expected.txt (231032 => 231033)
--- trunk/LayoutTests/fast/filter-image/parse-filter-image-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/fast/filter-image/parse-filter-image-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -52,7 +52,7 @@
PASS innerStyle("background-image", "filter(none, brightness(0))") is "filter(none, brightness(0))"
PASS innerStyle("background-image", "filter(none, brightness(0.5) brightness(0.25))") is "filter(none, brightness(0.5) brightness(0.25))"
PASS innerStyle("background-image", "filter(none, brightness(0.5) grayscale(0.25))") is "filter(none, brightness(0.5) grayscale(0.25))"
-PASS innerStyle("background-image", "filter(none, brightness(-1.1))") is "filter(none, brightness(-1.1))"
+PASS innerStyle("background-image", "filter(none, brightness(-1.1))") is ""
PASS innerStyle("background-image", "filter(none, brightness(101%))") is "filter(none, brightness(101%))"
PASS innerStyle("background-image", "filter(none, grayscale(0.25) brightness(0.5))") is "filter(none, grayscale(0.25) brightness(0.5))"
PASS innerStyle("background-image", "filter(none, contrast(1))") is "filter(none, contrast(1))"
Modified: trunk/LayoutTests/fast/filter-image/parse-filter-image.html (231032 => 231033)
--- trunk/LayoutTests/fast/filter-image/parse-filter-image.html 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/fast/filter-image/parse-filter-image.html 2018-04-25 23:24:47 UTC (rev 231033)
@@ -240,7 +240,7 @@
testInner(
"background-image",
"filter(none, brightness(-1.1))",
- "filter(none, brightness(-1.1))");
+ "");
testInner(
"background-image",
"filter(none, brightness(101%))",
Modified: trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-clamping-expected.txt (231032 => 231033)
--- trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-clamping-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-clamping-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -3,20 +3,28 @@
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
+ RenderImage {IMG} at (0,0) size 160x90
RenderText {#text} at (160,75) size 4x19
text run at (160,75) width 4: " "
+ RenderImage {IMG} at (164,0) size 160x90
RenderText {#text} at (324,75) size 4x19
text run at (324,75) width 4: " "
+ RenderImage {IMG} at (328,0) size 160x90
RenderText {#text} at (488,75) size 4x19
text run at (488,75) width 4: " "
+ RenderImage {IMG} at (492,0) size 160x90
RenderText {#text} at (652,75) size 4x19
text run at (652,75) width 4: " "
+ RenderImage {IMG} at (0,95) size 160x90
RenderText {#text} at (160,170) size 4x19
text run at (160,170) width 4: " "
+ RenderImage {IMG} at (164,95) size 160x90
RenderText {#text} at (324,170) size 4x19
text run at (324,170) width 4: " "
+ RenderImage {IMG} at (328,95) size 160x90
RenderText {#text} at (488,170) size 4x19
text run at (488,170) width 4: " "
+ RenderImage {IMG} at (492,95) size 160x90
RenderText {#text} at (652,170) size 4x19
text run at (652,170) width 4: " "
RenderText {#text} at (160,265) size 4x19
@@ -26,22 +34,6 @@
RenderText {#text} at (488,265) size 4x19
text run at (488,265) width 4: " "
RenderText {#text} at (0,0) size 0x0
-layer at (8,8) size 160x90
- RenderImage {IMG} at (0,0) size 160x90
-layer at (172,8) size 160x90
- RenderImage {IMG} at (164,0) size 160x90
-layer at (336,8) size 160x90
- RenderImage {IMG} at (328,0) size 160x90
-layer at (500,8) size 160x90
- RenderImage {IMG} at (492,0) size 160x90
-layer at (8,103) size 160x90
- RenderImage {IMG} at (0,95) size 160x90
-layer at (172,103) size 160x90
- RenderImage {IMG} at (164,95) size 160x90
-layer at (336,103) size 160x90
- RenderImage {IMG} at (328,95) size 160x90
-layer at (500,103) size 160x90
- RenderImage {IMG} at (492,95) size 160x90
layer at (8,198) size 160x90
RenderImage {IMG} at (0,190) size 160x90
layer at (172,198) size 160x90
Modified: trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-expected.txt (231032 => 231033)
--- trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/platform/ios/css3/filters/effect-brightness-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -3,10 +3,13 @@
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
+ RenderImage {IMG} at (0,0) size 160x90
RenderText {#text} at (160,75) size 4x19
text run at (160,75) width 4: " "
+ RenderImage {IMG} at (164,0) size 160x90
RenderText {#text} at (324,75) size 4x19
text run at (324,75) width 4: " "
+ RenderImage {IMG} at (328,0) size 160x90
RenderText {#text} at (488,75) size 4x19
text run at (488,75) width 4: " "
RenderText {#text} at (652,75) size 4x19
@@ -16,12 +19,6 @@
RenderText {#text} at (324,170) size 4x19
text run at (324,170) width 4: " "
RenderText {#text} at (0,0) size 0x0
-layer at (8,8) size 160x90
- RenderImage {IMG} at (0,0) size 160x90
-layer at (172,8) size 160x90
- RenderImage {IMG} at (164,0) size 160x90
-layer at (336,8) size 160x90
- RenderImage {IMG} at (328,0) size 160x90
layer at (500,8) size 160x90
RenderImage {IMG} at (492,0) size 160x90
layer at (8,103) size 160x90
Modified: trunk/LayoutTests/platform/mac/css3/filters/effect-brightness-clamping-expected.txt (231032 => 231033)
--- trunk/LayoutTests/platform/mac/css3/filters/effect-brightness-clamping-expected.txt 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/LayoutTests/platform/mac/css3/filters/effect-brightness-clamping-expected.txt 2018-04-25 23:24:47 UTC (rev 231033)
@@ -3,20 +3,28 @@
layer at (0,0) size 800x600
RenderBlock {HTML} at (0,0) size 800x600
RenderBody {BODY} at (8,8) size 784x584
+ RenderImage {IMG} at (0,0) size 160x90
RenderText {#text} at (160,76) size 4x18
text run at (160,76) width 4: " "
+ RenderImage {IMG} at (164,0) size 160x90
RenderText {#text} at (324,76) size 4x18
text run at (324,76) width 4: " "
+ RenderImage {IMG} at (328,0) size 160x90
RenderText {#text} at (488,76) size 4x18
text run at (488,76) width 4: " "
+ RenderImage {IMG} at (492,0) size 160x90
RenderText {#text} at (652,76) size 4x18
text run at (652,76) width 4: " "
+ RenderImage {IMG} at (0,94) size 160x90
RenderText {#text} at (160,170) size 4x18
text run at (160,170) width 4: " "
+ RenderImage {IMG} at (164,94) size 160x90
RenderText {#text} at (324,170) size 4x18
text run at (324,170) width 4: " "
+ RenderImage {IMG} at (328,94) size 160x90
RenderText {#text} at (488,170) size 4x18
text run at (488,170) width 4: " "
+ RenderImage {IMG} at (492,94) size 160x90
RenderText {#text} at (652,170) size 4x18
text run at (652,170) width 4: " "
RenderText {#text} at (160,264) size 4x18
@@ -26,22 +34,6 @@
RenderText {#text} at (488,264) size 4x18
text run at (488,264) width 4: " "
RenderText {#text} at (0,0) size 0x0
-layer at (8,8) size 160x90
- RenderImage {IMG} at (0,0) size 160x90
-layer at (172,8) size 160x90
- RenderImage {IMG} at (164,0) size 160x90
-layer at (336,8) size 160x90
- RenderImage {IMG} at (328,0) size 160x90
-layer at (500,8) size 160x90
- RenderImage {IMG} at (492,0) size 160x90
-layer at (8,102) size 160x90
- RenderImage {IMG} at (0,94) size 160x90
-layer at (172,102) size 160x90
- RenderImage {IMG} at (164,94) size 160x90
-layer at (336,102) size 160x90
- RenderImage {IMG} at (328,94) size 160x90
-layer at (500,102) size 160x90
- RenderImage {IMG} at (492,94) size 160x90
layer at (8,196) size 160x90
RenderImage {IMG} at (0,188) size 160x90
layer at (172,196) size 160x90
Modified: trunk/Source/WebCore/ChangeLog (231032 => 231033)
--- trunk/Source/WebCore/ChangeLog 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/Source/WebCore/ChangeLog 2018-04-25 23:24:47 UTC (rev 231033)
@@ -1,3 +1,25 @@
+2018-04-25 Simon Fraser <[email protected]>
+
+ brightness() filter should default to 1, and not allow negative values
+ https://bugs.webkit.org/show_bug.cgi?id=184937
+
+ Reviewed by Dean Jackson.
+
+ Remove the special-casing for brightness() in consumeFilterFunction(), so it now
+ follows the same logic as the other color-related filters in not allowing negative
+ values.
+
+ Removed the special-casing for brightness() in createFilterOperations() so its default
+ value is now 1.
+
+ Modified existing tests.
+
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::createFilterOperations):
+ * css/parser/CSSPropertyParserHelpers.cpp:
+ (WebCore::CSSPropertyParserHelpers::allowsValuesGreaterThanOne):
+ (WebCore::CSSPropertyParserHelpers::consumeFilterFunction):
+
2018-04-25 Wenson Hsieh <[email protected]>
Missing closing parenthesis when determining INSTALL_PATH build setting in WebCore.xcconfig
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (231032 => 231033)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2018-04-25 23:24:47 UTC (rev 231033)
@@ -1981,7 +1981,7 @@
case FilterOperation::BRIGHTNESS:
case FilterOperation::CONTRAST:
case FilterOperation::OPACITY: {
- double amount = (operationType == FilterOperation::BRIGHTNESS) ? 0 : 1;
+ double amount = 1;
if (filterValue.length() == 1) {
amount = firstValue->doubleValue();
if (firstValue->isPercentage())
Modified: trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp (231032 => 231033)
--- trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp 2018-04-25 23:23:00 UTC (rev 231032)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp 2018-04-25 23:24:47 UTC (rev 231033)
@@ -1421,6 +1421,18 @@
}
}
+static bool allowsValuesGreaterThanOne(CSSValueID filterFunction)
+{
+ switch (filterFunction) {
+ case CSSValueBrightness:
+ case CSSValueContrast:
+ case CSSValueSaturate:
+ return true;
+ default:
+ return false;
+ }
+}
+
static RefPtr<CSSFunctionValue> consumeFilterFunction(CSSParserTokenRange& range, const CSSParserContext& context, AllowedFilterFunctions allowedFunctions)
{
CSSValueID filterType = range.peek().functionId();
@@ -1439,11 +1451,8 @@
else {
if (args.atEnd())
return filterValue;
- if (filterType == CSSValueBrightness) {
- parsedValue = consumePercent(args, ValueRangeAll);
- if (!parsedValue)
- parsedValue = consumeNumber(args, ValueRangeAll);
- } else if (filterType == CSSValueHueRotate)
+
+ if (filterType == CSSValueHueRotate)
parsedValue = consumeAngle(args, context.mode, UnitlessQuirk::Forbid);
else if (filterType == CSSValueBlur)
parsedValue = consumeLength(args, HTMLStandardMode, ValueRangeNonNegative);
@@ -1451,7 +1460,7 @@
parsedValue = consumePercent(args, ValueRangeNonNegative);
if (!parsedValue)
parsedValue = consumeNumber(args, ValueRangeNonNegative);
- if (parsedValue && filterType != CSSValueSaturate && filterType != CSSValueContrast) {
+ if (parsedValue && !allowsValuesGreaterThanOne(filterType)) {
bool isPercentage = downcast<CSSPrimitiveValue>(*parsedValue).isPercentage();
double maxAllowed = isPercentage ? 100.0 : 1.0;
if (downcast<CSSPrimitiveValue>(*parsedValue).doubleValue() > maxAllowed)