Log Message
Computed style for filter property https://bugs.webkit.org/show_bug.cgi?id=68477
Reviewed by Simon Fraser. Reports the computed style for the new -webkit-filter property value. Test: css3/filters/filter-property-computed-style.html * css/CSSComputedStyleDeclaration.cpp: (WebCore::computedFilter): (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue): New test to exercise computed style for -webkit-filter. Note that drop-shadow is not yet supported. * css3/filters/filter-property-computed-style-expected.txt: Added. * css3/filters/filter-property-computed-style.html: Added. * css3/filters/script-tests/filter-property-computed-style.js: Added. (testComputedFilterRule):
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (96774 => 96775)
--- trunk/LayoutTests/ChangeLog 2011-10-06 00:40:39 UTC (rev 96774)
+++ trunk/LayoutTests/ChangeLog 2011-10-06 00:44:27 UTC (rev 96775)
@@ -1,3 +1,18 @@
+2011-10-05 Dean Jackson <[email protected]>
+
+ Computed style for filter property
+ https://bugs.webkit.org/show_bug.cgi?id=68477
+
+ Reviewed by Simon Fraser.
+
+ New test to exercise computed style for -webkit-filter. Note
+ that drop-shadow is not yet supported.
+
+ * css3/filters/filter-property-computed-style-expected.txt: Added.
+ * css3/filters/filter-property-computed-style.html: Added.
+ * css3/filters/script-tests/filter-property-computed-style.js: Added.
+ (testComputedFilterRule):
+
2011-10-05 Jer Noble <[email protected]>
Enable WEB_AUDIO by default in the WebKit/mac port.
Added: trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt (0 => 96775)
--- trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt (rev 0)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt 2011-10-06 00:44:27 UTC (rev 96775)
@@ -0,0 +1,294 @@
+Test the computed style of the -webkit-filter property.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+Basic reference : url('#a')
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
+PASS subRule.cssText is 'url(\'#a\')'
+
+Bare unquoted reference converting to quoted form : url(#a)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
+PASS subRule.cssText is 'url(\'#a\')'
+
+Multiple references : url('#a') url('#b')
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
+PASS subRule.cssText is 'url(\'#a\')'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
+PASS subRule.cssText is 'url(\'#b\')'
+
+Reference as 2nd value : grayscale(1) url('#a')
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
+PASS subRule.cssText is 'url(\'#a\')'
+
+Integer value : grayscale(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(1)'
+
+Float value converts to integer : grayscale(1.0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(1)'
+
+Zero value : grayscale(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0)'
+
+Multiple values : grayscale(0.5) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Integer value : sepia(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(1)'
+
+Float value converts to integer : sepia(1.0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(1)'
+
+Zero value : sepia(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(0)'
+
+Multiple values : sepia(0.5) sepia(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(0.25)'
+
+Rule combinations : sepia(0.5) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Integer value : saturate(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(1)'
+
+Float value converts to integer : saturate(1.0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(1)'
+
+Zero value : saturate(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(0)'
+
+Multiple values : saturate(0.5) saturate(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(0.25)'
+
+Rule combinations : saturate(0.5) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Degrees value as integer : hue-rotate(10deg)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(10deg)'
+
+Degrees float value converts to integer : hue-rotate(10.0deg)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(10deg)'
+
+Radians value : hue-rotate(10rad)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(572.9577951308232deg)'
+
+Gradians value : hue-rotate(10grad)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(9deg)'
+
+Turns value : hue-rotate(0.5turn)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(180deg)'
+
+Zero value : hue-rotate(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(0deg)'
+
+Rule combinations : hue-rotate(10deg) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(10deg)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Integer value : invert(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(1)'
+
+Float value converts to integer : invert(1.0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(1)'
+
+Zero value : invert(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(0)'
+
+Multiple values : invert(0.5) invert(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(0.25)'
+
+Rule combinations : invert(0.5) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Integer value : opacity(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(1)'
+
+Float value converts to integer : opacity(1.0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(1)'
+
+Zero value : opacity(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(0)'
+
+Multiple values : opacity(0.5) opacity(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(0.25)'
+
+Rule combinations : opacity(0.5) grayscale(0.25)
+PASS filterStyle.length is 2
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.25)'
+
+Three values : gamma(1 1 0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GAMMA
+PASS subRule.cssText is 'gamma(1 1 0)'
+
+Two values : gamma(1 1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GAMMA
+PASS subRule.cssText is 'gamma(1 1 0)'
+
+One value : gamma(1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GAMMA
+PASS subRule.cssText is 'gamma(1 1 0)'
+
+Float value : gamma(1.3)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GAMMA
+PASS subRule.cssText is 'gamma(1.3 1 0)'
+
+Two zeros to px : blur(0 0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(0px 0px)'
+
+One zero to px : blur(0)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(0px 0px)'
+
+Two lengths : blur(5px 2em)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(5px 32px)'
+
+One length : blur(10%)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(10px 10px)'
+
+One length : blur(5px)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(5px 5px)'
+
+Three values : sharpen(1.0 10px 1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SHARPEN
+PASS subRule.cssText is 'sharpen(1 10px 1)'
+
+Three values with zero length : sharpen(1.0 0 1)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SHARPEN
+PASS subRule.cssText is 'sharpen(1 0px 1)'
+
+Two values : sharpen(0.7 1em)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SHARPEN
+PASS subRule.cssText is 'sharpen(0.7 16px 1)'
+
+One value : sharpen(0.5)
+PASS filterStyle.length is 1
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SHARPEN
+PASS subRule.cssText is 'sharpen(0.5 0px 1)'
+
+Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) gamma(2 1.1 1) blur(5px 2em) sharpen(0.5 3px 2)
+PASS filterStyle.length is 9
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
+PASS subRule.cssText is 'grayscale(0.5)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
+PASS subRule.cssText is 'sepia(0.25)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
+PASS subRule.cssText is 'saturate(0.75)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
+PASS subRule.cssText is 'hue-rotate(35deg)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
+PASS subRule.cssText is 'invert(0.2)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
+PASS subRule.cssText is 'opacity(0.9)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GAMMA
+PASS subRule.cssText is 'gamma(2 1.1 1)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
+PASS subRule.cssText is 'blur(5px 32px)'
+PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SHARPEN
+PASS subRule.cssText is 'sharpen(0.5 3px 2)'
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Property changes on: trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Added: trunk/LayoutTests/css3/filters/filter-property-computed-style.html (0 => 96775)
--- trunk/LayoutTests/css3/filters/filter-property-computed-style.html (rev 0)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style.html 2011-10-06 00:44:27 UTC (rev 96775)
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href=""
+<script src=""
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src=""
+<script src=""
+</body>
+</html>
Property changes on: trunk/LayoutTests/css3/filters/filter-property-computed-style.html
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Added: trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js (0 => 96775)
--- trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js (rev 0)
+++ trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js 2011-10-06 00:44:27 UTC (rev 96775)
@@ -0,0 +1,289 @@
+description("Test the computed style of the -webkit-filter property.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, filterStyle, subRule;
+
+function testComputedFilterRule(description, rule, expectedLength, expectedTypes, expectedTexts)
+{
+ debug("");
+ debug(description + " : " + rule);
+
+ stylesheet = document.styleSheets.item(0);
+ stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
+
+ filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue('-webkit-filter');
+ shouldBe("filterStyle.length", "" + expectedLength);
+ for (var i = 0; i < expectedLength; i++) {
+ subRule = filterStyle[i];
+ shouldBe("subRule.operationType", expectedTypes[i]);
+ shouldBe("subRule.cssText", "'" + expectedTexts[i] + "'");
+ }
+ stylesheet.deleteRule(0);
+}
+
+testComputedFilterRule("Basic reference",
+ "url('#a')", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
+ ["url(\\'#a\\')"]);
+
+testComputedFilterRule("Bare unquoted reference converting to quoted form",
+ "url(#a)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
+ ["url(\\'#a\\')"]);
+
+testComputedFilterRule("Multiple references",
+ "url('#a') url('#b')", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
+ ["url(\\'#a\\')", "url(\\'#b\\')"]);
+
+testComputedFilterRule("Reference as 2nd value",
+ "grayscale(1) url('#a')", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
+ ["grayscale(1)", "url(\\'#a\\')"]);
+
+testComputedFilterRule("Integer value",
+ "grayscale(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["grayscale(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+ "grayscale(1.0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["grayscale(1)"]);
+
+testComputedFilterRule("Zero value",
+ "grayscale(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["grayscale(0)"]);
+
+testComputedFilterRule("Multiple values",
+ "grayscale(0.5) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+ "sepia(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
+ ["sepia(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+ "sepia(1.0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
+ ["sepia(1)"]);
+
+testComputedFilterRule("Zero value",
+ "sepia(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
+ ["sepia(0)"]);
+
+testComputedFilterRule("Multiple values",
+ "sepia(0.5) sepia(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
+ ["sepia(0.5)", "sepia(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+ "sepia(0.5) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["sepia(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+ "saturate(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
+ ["saturate(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+ "saturate(1.0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
+ ["saturate(1)"]);
+
+testComputedFilterRule("Zero value",
+ "saturate(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
+ ["saturate(0)"]);
+
+testComputedFilterRule("Multiple values",
+ "saturate(0.5) saturate(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
+ ["saturate(0.5)", "saturate(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+ "saturate(0.5) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["saturate(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Degrees value as integer",
+ "hue-rotate(10deg)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Degrees float value converts to integer",
+ "hue-rotate(10.0deg)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Radians value",
+ "hue-rotate(10rad)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(572.9577951308232deg)"]);
+
+testComputedFilterRule("Gradians value",
+ "hue-rotate(10grad)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(9deg)"]);
+
+testComputedFilterRule("Turns value",
+ "hue-rotate(0.5turn)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(180deg)"]);
+
+testComputedFilterRule("Zero value",
+ "hue-rotate(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
+ ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("Rule combinations",
+ "hue-rotate(10deg) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+ "invert(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
+ ["invert(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+ "invert(1.0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
+ ["invert(1)"]);
+
+testComputedFilterRule("Zero value",
+ "invert(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
+ ["invert(0)"]);
+
+testComputedFilterRule("Multiple values",
+ "invert(0.5) invert(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_INVERT"],
+ ["invert(0.5)", "invert(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+ "invert(0.5) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["invert(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+ "opacity(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
+ ["opacity(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+ "opacity(1.0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
+ ["opacity(1)"]);
+
+testComputedFilterRule("Zero value",
+ "opacity(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
+ ["opacity(0)"]);
+
+testComputedFilterRule("Multiple values",
+ "opacity(0.5) opacity(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
+ ["opacity(0.5)", "opacity(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+ "opacity(0.5) grayscale(0.25)", 2,
+ ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
+ ["opacity(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Three values",
+ "gamma(1 1 0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GAMMA"],
+ ["gamma(1 1 0)"]);
+
+testComputedFilterRule("Two values",
+ "gamma(1 1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GAMMA"],
+ ["gamma(1 1 0)"]);
+
+testComputedFilterRule("One value",
+ "gamma(1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GAMMA"],
+ ["gamma(1 1 0)"]);
+
+testComputedFilterRule("Float value",
+ "gamma(1.3)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_GAMMA"],
+ ["gamma(1.3 1 0)"]);
+
+testComputedFilterRule("Two zeros to px",
+ "blur(0 0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
+ ["blur(0px 0px)"]);
+
+testComputedFilterRule("One zero to px",
+ "blur(0)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
+ ["blur(0px 0px)"]);
+
+testComputedFilterRule("Two lengths",
+ "blur(5px 2em)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
+ ["blur(5px 32px)"]);
+
+testComputedFilterRule("One length",
+ "blur(10%)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
+ ["blur(10px 10px)"]);
+
+testComputedFilterRule("One length",
+ "blur(5px)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
+ ["blur(5px 5px)"]);
+
+testComputedFilterRule("Three values",
+ "sharpen(1.0 10px 1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SHARPEN"],
+ ["sharpen(1 10px 1)"]);
+
+testComputedFilterRule("Three values with zero length",
+ "sharpen(1.0 0 1)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SHARPEN"],
+ ["sharpen(1 0px 1)"]);
+
+testComputedFilterRule("Two values",
+ "sharpen(0.7 1em)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SHARPEN"],
+ ["sharpen(0.7 16px 1)"]);
+
+testComputedFilterRule("One value",
+ "sharpen(0.5)", 1,
+ ["WebKitCSSFilterValue.CSS_FILTER_SHARPEN"],
+ ["sharpen(0.5 0px 1)"]);
+
+testComputedFilterRule("Multiple operations",
+ "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) gamma(2 1.1 1) blur(5px 2em) sharpen(0.5 3px 2)", 9,
+ [
+ "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
+ "WebKitCSSFilterValue.CSS_FILTER_SEPIA",
+ "WebKitCSSFilterValue.CSS_FILTER_SATURATE",
+ "WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE",
+ "WebKitCSSFilterValue.CSS_FILTER_INVERT",
+ "WebKitCSSFilterValue.CSS_FILTER_OPACITY",
+ "WebKitCSSFilterValue.CSS_FILTER_GAMMA",
+ "WebKitCSSFilterValue.CSS_FILTER_BLUR",
+ "WebKitCSSFilterValue.CSS_FILTER_SHARPEN"
+ ],
+ [
+ "grayscale(0.5)",
+ "sepia(0.25)",
+ "saturate(0.75)",
+ "hue-rotate(35deg)",
+ "invert(0.2)",
+ "opacity(0.9)",
+ "gamma(2 1.1 1)",
+ "blur(5px 32px)",
+ "sharpen(0.5 3px 2)"
+ ]);
+
+successfullyParsed = true;
Property changes on: trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js
___________________________________________________________________
Added: svn:mime-type
Added: svn:keywords
Added: svn:eol-style
Modified: trunk/Source/WebCore/ChangeLog (96774 => 96775)
--- trunk/Source/WebCore/ChangeLog 2011-10-06 00:40:39 UTC (rev 96774)
+++ trunk/Source/WebCore/ChangeLog 2011-10-06 00:44:27 UTC (rev 96775)
@@ -1,3 +1,19 @@
+2011-10-05 Dean Jackson <[email protected]>
+
+ Computed style for filter property
+ https://bugs.webkit.org/show_bug.cgi?id=68477
+
+ Reviewed by Simon Fraser.
+
+ Reports the computed style for the new -webkit-filter
+ property value.
+
+ Test: css3/filters/filter-property-computed-style.html
+
+ * css/CSSComputedStyleDeclaration.cpp:
+ (WebCore::computedFilter):
+ (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
+
2011-10-05 Jer Noble <[email protected]>
Enable WEB_AUDIO by default in the WebKit/mac port.
Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (96774 => 96775)
--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2011-10-06 00:40:39 UTC (rev 96774)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp 2011-10-06 00:44:27 UTC (rev 96775)
@@ -50,6 +50,9 @@
#include "RenderBox.h"
#include "RenderLayer.h"
#include "ShadowValue.h"
+#if ENABLE(CSS_FILTERS)
+#include "WebKitCSSFilterValue.h"
+#endif
#include "WebKitCSSTransformValue.h"
#include "WebKitFontFamilyNames.h"
@@ -642,6 +645,96 @@
return list.release();
}
+#if ENABLE(CSS_FILTERS)
+static PassRefPtr<CSSValue> computedFilter(RenderObject* renderer, const RenderStyle* style, CSSPrimitiveValueCache* primitiveValueCache)
+{
+ if (!renderer || style->filter().operations().isEmpty())
+ return primitiveValueCache->createIdentifierValue(CSSValueNone);
+
+ RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
+
+ RefPtr<WebKitCSSFilterValue> filterValue;
+
+ Vector<RefPtr<FilterOperation> >::const_iterator end = style->filter().operations().end();
+ for (Vector<RefPtr<FilterOperation> >::const_iterator it = style->filter().operations().begin(); it != end; ++it) {
+ FilterOperation* filterOperation = (*it).get();
+ switch (filterOperation->getOperationType()) {
+ case FilterOperation::REFERENCE: {
+ ReferenceFilterOperation* referenceOperation = static_cast<ReferenceFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ReferenceFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(referenceOperation->reference(), CSSPrimitiveValue::CSS_STRING));
+ break;
+ }
+ case FilterOperation::GRAYSCALE: {
+ BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::GrayscaleFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::SEPIA: {
+ BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SepiaFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::SATURATE: {
+ BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SaturateFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::HUE_ROTATE: {
+ BasicColorMatrixFilterOperation* colorMatrixOperation = static_cast<BasicColorMatrixFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::HueRotateFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(colorMatrixOperation->amount(), CSSPrimitiveValue::CSS_DEG));
+ break;
+ }
+ case FilterOperation::INVERT: {
+ BasicComponentTransferFilterOperation* componentTransferOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::InvertFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::OPACITY: {
+ BasicComponentTransferFilterOperation* componentTransferOperation = static_cast<BasicComponentTransferFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::OpacityFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(componentTransferOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::GAMMA: {
+ GammaFilterOperation* gammaOperation = static_cast<GammaFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::GammaFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(gammaOperation->amplitude(), CSSPrimitiveValue::CSS_NUMBER));
+ filterValue->append(primitiveValueCache->createValue(gammaOperation->exponent(), CSSPrimitiveValue::CSS_NUMBER));
+ filterValue->append(primitiveValueCache->createValue(gammaOperation->offset(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::BLUR: {
+ BlurFilterOperation* blurOperation = static_cast<BlurFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::BlurFilterOperation);
+ filterValue->append(zoomAdjustedPixelValue(blurOperation->stdDeviationX().value(), style, primitiveValueCache));
+ filterValue->append(zoomAdjustedPixelValue(blurOperation->stdDeviationY().value(), style, primitiveValueCache));
+ break;
+ }
+ case FilterOperation::SHARPEN: {
+ SharpenFilterOperation* sharpenOperation = static_cast<SharpenFilterOperation*>(filterOperation);
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SharpenFilterOperation);
+ filterValue->append(primitiveValueCache->createValue(sharpenOperation->amount(), CSSPrimitiveValue::CSS_NUMBER));
+ filterValue->append(zoomAdjustedPixelValue(sharpenOperation->radius().value(), style, primitiveValueCache));
+ filterValue->append(primitiveValueCache->createValue(sharpenOperation->threshold(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ default:
+ filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::UnknownFilterOperation);
+ break;
+ }
+ list->append(filterValue);
+ }
+
+ return list.release();
+}
+#endif
+
static PassRefPtr<CSSValue> getDelayValue(const AnimationList* animList, CSSPrimitiveValueCache* primitiveValueCache)
{
RefPtr<CSSValueList> list = CSSValueList::createCommaSeparated();
@@ -1899,7 +1992,10 @@
return primitiveValueCache->createValue(style->regionIndex(), CSSPrimitiveValue::CSS_NUMBER);
case CSSPropertyWebkitRegionOverflow:
return primitiveValueCache->createValue(style->regionOverflow());
-
+#if ENABLE(CSS_FILTERS)
+ case CSSPropertyWebkitFilter:
+ return computedFilter(renderer, style.get(), primitiveValueCache);
+#endif
/* Shorthand properties, currently not supported see bug 13658*/
case CSSPropertyBackground:
case CSSPropertyBorder:
@@ -1993,9 +2089,6 @@
case CSSPropertyWebkitBorderRadius:
case CSSPropertyWebkitColumns:
case CSSPropertyWebkitColumnRule:
-#if ENABLE(CSS_FILTERS)
- case CSSPropertyWebkitFilter:
-#endif
case CSSPropertyWebkitMarginCollapse:
case CSSPropertyWebkitMarquee:
case CSSPropertyWebkitMarqueeSpeed:
_______________________________________________ webkit-changes mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes
