Remove WebKitCSSFilterValue to make Hyatt happy
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Nov 2016 22:31:52 +0000 (22:31 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 1 Nov 2016 22:31:52 +0000 (22:31 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164289
<rdar://problems/29050973>

Reviewed by Simon Fraser.

Source/WebCore:

The new CSS parser should not use WebKitCSSFilterValue. It's non-standard,
very likely only used in our tests, doesn't provide much benefit, and will be
covered by the new CSSOM function interface.

Covered by modifying existing tests.

* DerivedSources.make: Remove WebKitCSSFilterValue.idl.

* WebCore.xcodeproj/project.pbxproj: Make CSSFunctionValue.h private so API testing
can see it.

* bindings/js/JSCSSValueCustom.cpp:
(WebCore::toJSNewlyCreated): No WebKitCSSFilterValue.

* css/CSSComputedStyleDeclaration.cpp: Use CSSFunctionValue or CSSPrimitiveValue to
build up the computed style.
(WebCore::ComputedStyleExtractor::valueForFilter):

* css/CSSValue.cpp: No WebKitCSSFilterValue.
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
(WebCore::CSSValue::cloneForCSSOM):
* css/CSSValue.h:
(WebCore::CSSValue::isFilterImageValue):
(WebCore::CSSValue::isWebKitCSSFilterValue): Deleted.

* css/StyleResolver.cpp: Resolve against CSSFunctionValues with
CSSValueIDs as name, rather than WebKitCSSFilterValue.
(WebCore::filterOperationForType):
(WebCore::StyleResolver::createFilterOperations):
* css/StyleResolver.h:

* css/WebKitCSSFilterValue.cpp: Removed.
* css/WebKitCSSFilterValue.h: Removed.
* css/WebKitCSSFilterValue.idl: Removed.

* css/parser/CSSParser.cpp: Parse into CSSPrimitiveValue and CSSFunctionValue.
(WebCore::isValidPrimitiveFilterFunction):
(WebCore::CSSParser::parseBuiltinFilterArguments):
(WebCore::cssValueKeywordIDForFunctionName):
(WebCore::CSSParser::parseFilter):
(WebCore::filterInfoForName): Deleted.
* css/parser/CSSParser.h:
* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeFilterFunction):

LayoutTests:

Update the filters tests now that WebKitCSSFilterValue no longer exists.
Unfortunately CSSFunctionValue isn't exposed to the Web, so we just
rely on the cssText of the resulting CSSStyleDeclaration.

I also moved all the script-tests into the HTML files, since there is
no point them being separate.

* 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-invalid.html:
* css3/filters/backdrop/backdropfilter-property-parsing.html:
* css3/filters/backdrop/backdropfilter-property.html:
* css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js: Removed.
* css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js: Removed.
* css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js: Removed.
* css3/filters/backdrop/script-tests/backdropfilter-property.js: Removed.
* css3/filters/effect-reference-delete-crash.html:
* css3/filters/effect-reference-reset-style-delete-crash.html:
* 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-invalid.html:
* css3/filters/filter-property-parsing.html:
* css3/filters/filter-property.html:
* css3/filters/script-tests/TEMPLATE.html: Removed.
* css3/filters/script-tests/effect-reference-delete-crash.js: Removed.
* css3/filters/script-tests/effect-reference-reset-style-delete-crash.js: Removed.
* css3/filters/script-tests/filter-property-computed-style.js: Removed.
* css3/filters/script-tests/filter-property-parsing-invalid.js: Removed.
* css3/filters/script-tests/filter-property-parsing.js: Removed.
* css3/filters/script-tests/filter-property.js: Removed.
* css3/filters/script-tests/unprefixed.js: Removed.
* css3/filters/unprefixed-expected.txt:
* css3/filters/unprefixed.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208253 268f45cc-cd09-0410-ab3c-d52691b4dbfc

55 files changed:
LayoutTests/ChangeLog
LayoutTests/css3/filters/backdrop/add-remove-add-backdrop-filter.html
LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt
LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-invalid.html
LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html
LayoutTests/css3/filters/backdrop/backdropfilter-property.html
LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js [deleted file]
LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js [deleted file]
LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js [deleted file]
LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js [deleted file]
LayoutTests/css3/filters/effect-reference-delete-crash.html
LayoutTests/css3/filters/effect-reference-reset-style-delete-crash.html
LayoutTests/css3/filters/filter-property-computed-style-expected.txt
LayoutTests/css3/filters/filter-property-computed-style.html
LayoutTests/css3/filters/filter-property-parsing-expected.txt
LayoutTests/css3/filters/filter-property-parsing-invalid.html
LayoutTests/css3/filters/filter-property-parsing.html
LayoutTests/css3/filters/filter-property.html
LayoutTests/css3/filters/script-tests/TEMPLATE.html [deleted file]
LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js [deleted file]
LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js [deleted file]
LayoutTests/css3/filters/script-tests/filter-property-computed-style.js [deleted file]
LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js [deleted file]
LayoutTests/css3/filters/script-tests/filter-property-parsing.js [deleted file]
LayoutTests/css3/filters/script-tests/filter-property.js [deleted file]
LayoutTests/css3/filters/script-tests/unprefixed.js [deleted file]
LayoutTests/css3/filters/unprefixed-expected.txt
LayoutTests/css3/filters/unprefixed.html
LayoutTests/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt
LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.cpp
Source/WebCore/DerivedSources.make
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/js/JSCSSValueCustom.cpp
Source/WebCore/css/CSSAllInOne.cpp
Source/WebCore/css/CSSComputedStyleDeclaration.cpp
Source/WebCore/css/CSSValue.cpp
Source/WebCore/css/CSSValue.h
Source/WebCore/css/StyleResolver.cpp
Source/WebCore/css/StyleResolver.h
Source/WebCore/css/WebKitCSSFilterValue.cpp [deleted file]
Source/WebCore/css/WebKitCSSFilterValue.h [deleted file]
Source/WebCore/css/WebKitCSSFilterValue.idl [deleted file]
Source/WebCore/css/parser/CSSParser.cpp
Source/WebCore/css/parser/CSSParser.h
Source/WebCore/css/parser/CSSPropertyParser.cpp

index a492ac6..68638fb 100644 (file)
@@ -1,3 +1,47 @@
+2016-11-01  Dean Jackson  <dino@apple.com>
+
+        Remove WebKitCSSFilterValue to make Hyatt happy
+        https://bugs.webkit.org/show_bug.cgi?id=164289
+        <rdar://problems/29050973>
+
+        Reviewed by Simon Fraser.
+
+        Update the filters tests now that WebKitCSSFilterValue no longer exists.
+        Unfortunately CSSFunctionValue isn't exposed to the Web, so we just
+        rely on the cssText of the resulting CSSStyleDeclaration.
+
+        I also moved all the script-tests into the HTML files, since there is
+        no point them being separate.
+
+        * 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-invalid.html:
+        * css3/filters/backdrop/backdropfilter-property-parsing.html:
+        * css3/filters/backdrop/backdropfilter-property.html:
+        * css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js: Removed.
+        * css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js: Removed.
+        * css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js: Removed.
+        * css3/filters/backdrop/script-tests/backdropfilter-property.js: Removed.
+        * css3/filters/effect-reference-delete-crash.html:
+        * css3/filters/effect-reference-reset-style-delete-crash.html:
+        * 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-invalid.html:
+        * css3/filters/filter-property-parsing.html:
+        * css3/filters/filter-property.html:
+        * css3/filters/script-tests/TEMPLATE.html: Removed.
+        * css3/filters/script-tests/effect-reference-delete-crash.js: Removed.
+        * css3/filters/script-tests/effect-reference-reset-style-delete-crash.js: Removed.
+        * css3/filters/script-tests/filter-property-computed-style.js: Removed.
+        * css3/filters/script-tests/filter-property-parsing-invalid.js: Removed.
+        * css3/filters/script-tests/filter-property-parsing.js: Removed.
+        * css3/filters/script-tests/filter-property.js: Removed.
+        * css3/filters/script-tests/unprefixed.js: Removed.
+        * css3/filters/unprefixed-expected.txt:
+        * css3/filters/unprefixed.html:
+
 2016-11-01  Ryan Haddad  <ryanhaddad@apple.com>
 
         Marking fast/preloader/image-srcset.html as flaky on macOS.
index bcdcf5f..d316df4 100644 (file)
@@ -27,7 +27,7 @@
     <script>
         if (window.testRunner)
             testRunner.waitUntilDone();
-            
+
         function doTest()
         {
             var backdrop = document.getElementById('blur');
index 1e9c083..7775f48 100644 (file)
@@ -6,384 +6,291 @@ 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)'
+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)'
+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)'
+PASS subRule.cssText is "url(#a)"
+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)'
+PASS subRule.cssText is "grayscale(1)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "grayscale(0)"
 
 No values : grayscale()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 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)'
+PASS subRule.cssText is "grayscale(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "sepia(0)"
 
 No values : sepia()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "saturate(0)"
 
 No values : saturate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+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)'
+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)'
+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)'
+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)'
+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)'
+PASS subRule.cssText is "hue-rotate(0deg)"
 
 No values : hue-rotate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
+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)'
+PASS subRule.cssText is "hue-rotate(10deg)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "invert(0)"
 
 No values : invert()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "opacity(0)"
 
 No values : opacity()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 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)'
+PASS subRule.cssText is "opacity(0.5)"
+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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : brightness(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Float value converts to integer : brightness(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Zero value : brightness(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 No values : brightness()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 Multiple values : brightness(0.5) brightness(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
 
 Rule combinations : brightness(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : contrast(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Value greater than 1 : contrast(2)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
+PASS subRule.cssText is "contrast(2)"
 
 Float value converts to integer : contrast(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Zero value : contrast(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
+PASS subRule.cssText is "contrast(0)"
 
 No values : contrast()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Multiple values : contrast(0.5) contrast(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
 
 Rule combinations : contrast(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 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)'
+PASS subRule.cssText is "blur(0px)"
 
 One length : blur(2em)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
+PASS subRule.cssText is "blur(32px)"
 
 One length : blur(5px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "blur(5px)"
 
 No values : blur()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
+PASS subRule.cssText is "blur(0px)"
 
 Color then three values : drop-shadow(red 1px 2px 3px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Three values then color : drop-shadow(1px 2px 3px red)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Color then three values with zero length : drop-shadow(#abc 0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 
 Three values with zero length : drop-shadow(0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
 
 Two values no color : drop-shadow(1px 2px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
 
 Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
 PASS filterStyle.length is 7
-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_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "hue-rotate(35deg)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "blur(5px)"
 
 Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
 PASS filterStyle.length is 7
-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_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_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.6)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.3)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "brightness(0.6)"
+PASS subRule.cssText is "contrast(0.3)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 0f1c00e..470f429 100644 (file)
@@ -6,7 +6,309 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/backdropfilter-property-computed-style.js"></script>
+<script>
+description("Test the computed style of the -webkit-backdrop-filter property.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, filterStyle, subRule;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testComputedFilterRule(description, rule, expectedLength, expectedTexts)
+{
+    debug("");
+    debug(description + " : " + rule);
+
+    stylesheet.insertRule("body { -webkit-backdrop-filter: " + rule + "; }", 0);
+
+    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue('-webkit-backdrop-filter');
+    shouldBe("filterStyle.length", `${expectedLength}`);
+    for (var i = 0; i < expectedLength; i++) {
+        subRule = filterStyle[i];
+        shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
+    }
+    stylesheet.deleteRule(0);
+}
+
+testComputedFilterRule("Basic reference",
+                       "url('#a')", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Bare unquoted reference converting to quoted form",
+                       "url(#a)", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Multiple references",
+                       "url('#a') url('#b')", 2,
+                       ["url(#a)", "url(#b)"]);
+
+testComputedFilterRule("Reference as 2nd value",
+                       "grayscale(1) url('#a')", 2,
+                       ["grayscale(1)", "url(#a)"]);
+
+testComputedFilterRule("Integer value",
+                       "grayscale(1)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "grayscale(1.0)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "grayscale(0)", 1,
+                       ["grayscale(0)"]);
+
+testComputedFilterRule("No values",
+                       "grayscale()", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "grayscale(0.5) grayscale(0.25)", 2,
+                       ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "sepia(1)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "sepia(1.0)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "sepia(0)", 1,
+                       ["sepia(0)"]);
+
+testComputedFilterRule("No values",
+                       "sepia()", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "sepia(0.5) sepia(0.25)", 2,
+                       ["sepia(0.5)", "sepia(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "sepia(0.5) grayscale(0.25)", 2,
+                       ["sepia(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "saturate(1)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "saturate(1.0)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "saturate(0)", 1,
+                       ["saturate(0)"]);
+
+testComputedFilterRule("No values",
+                       "saturate()", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "saturate(0.5) saturate(0.25)", 2,
+                       ["saturate(0.5)", "saturate(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "saturate(0.5) grayscale(0.25)", 2,
+                       ["saturate(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Degrees value as integer",
+                       "hue-rotate(10deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Degrees float value converts to integer",
+                       "hue-rotate(10.0deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Radians value",
+                       "hue-rotate(10rad)", 1,
+                       ["hue-rotate(572.9577951308232deg)"]);
+
+testComputedFilterRule("Gradians value",
+                       "hue-rotate(10grad)", 1,
+                       ["hue-rotate(9deg)"]);
+
+testComputedFilterRule("Turns value",
+                       "hue-rotate(0.5turn)", 1,
+                       ["hue-rotate(180deg)"]);
+
+testComputedFilterRule("Zero value",
+                       "hue-rotate(0)", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("No values",
+                       "hue-rotate()", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "hue-rotate(10deg) grayscale(0.25)", 2,
+                       ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "invert(1)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "invert(1.0)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "invert(0)", 1,
+                       ["invert(0)"]);
+
+testComputedFilterRule("No values",
+                       "invert()", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "invert(0.5) invert(0.25)", 2,
+                       ["invert(0.5)", "invert(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "invert(0.5) grayscale(0.25)", 2,
+                       ["invert(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "opacity(1)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "opacity(1.0)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "opacity(0)", 1,
+                       ["opacity(0)"]);
+
+testComputedFilterRule("No values",
+                       "opacity()", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "opacity(0.5) opacity(0.25)", 2,
+                       ["opacity(0.5)", "opacity(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "opacity(0.5) grayscale(0.25)", 2,
+                       ["opacity(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "brightness(1)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "brightness(1.0)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "brightness(0)", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("No values",
+                      "brightness()", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("Multiple values",
+                      "brightness(0.5) brightness(0.25)", 2,
+                      ["brightness(0.5)", "brightness(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "brightness(0.5) grayscale(0.25)", 2,
+                      ["brightness(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "contrast(1)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Value greater than 1",
+                      "contrast(2)", 1,
+                      ["contrast(2)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "contrast(1.0)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "contrast(0)", 1,
+                      ["contrast(0)"]);
+
+testComputedFilterRule("No values",
+                      "contrast()", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Multiple values",
+                      "contrast(0.5) contrast(0.25)", 2,
+                      ["contrast(0.5)", "contrast(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "contrast(0.5) grayscale(0.25)", 2,
+                      ["contrast(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("One zero to px",
+                       "blur(0)", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(2em)", 1,
+                       ["blur(32px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(5px)", 1,
+                       ["blur(5px)"]);
+
+testComputedFilterRule("No values",
+                       "blur()", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("Color then three values",
+                       "drop-shadow(red 1px 2px 3px)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Three values then color",
+                       "drop-shadow(1px 2px 3px red)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Color then three values with zero length",
+                       "drop-shadow(#abc 0 0 0)", 1,
+                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
+
+testComputedFilterRule("Three values with zero length",
+                       "drop-shadow(0 0 0)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
+
+testComputedFilterRule("Two values no color",
+                       "drop-shadow(1px 2px)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
+
+testComputedFilterRule("Multiple operations",
+                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
+                       [
+                           "grayscale(0.5)",
+                           "sepia(0.25)",
+                           "saturate(0.75)",
+                           "hue-rotate(35deg)",
+                           "invert(0.2)",
+                           "opacity(0.9)",
+                           "blur(5px)"
+                      ]);
+
+testComputedFilterRule("Percentage values",
+                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
+                      [
+                          "grayscale(0.5)",
+                          "sepia(0.25)",
+                          "saturate(0.75)",
+                          "invert(0.2)",
+                          "opacity(0.9)",
+                          "brightness(0.6)",
+                          "contrast(0.3)"
+                      ]);
+
+successfullyParsed = true;
+</script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
 </html>
index 9d04c5c..677e789 100644 (file)
@@ -7,899 +7,797 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 Basic reference : url('#a')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
+PASS subRule.cssText is "url(#a)"
 
 Bare unquoted reference converting to quoted form : url(#a)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
+PASS subRule.cssText is "url(#a)"
 
 Multiple references : url('#a') url('#b')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a) url(#b)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a) url(#b)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
 
 Reference as 2nd value : grayscale(1) url('#a')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1) url(#a)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1) url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
 
 Integer value : grayscale(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(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.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 Percentage value : grayscale(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(50%)'
+PASS subRule.cssText is "grayscale(50%)"
 
 Float value converts to integer : grayscale(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(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.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 Zero value : grayscale(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
+PASS subRule.cssText is "grayscale(0)"
 
 No values : grayscale()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale()'
+PASS subRule.cssText is "grayscale()"
 
 Multiple values : grayscale(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : sepia(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 Percentage value : sepia(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(50%)'
+PASS subRule.cssText is "sepia(50%)"
 
 Float value converts to integer : sepia(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 Zero value : sepia(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
+PASS subRule.cssText is "sepia(0)"
 
 No values : sepia()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia()'
+PASS subRule.cssText is "sepia()"
 
 Multiple values : sepia(0.5) sepia(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) sepia(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) sepia(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
 
 Rule combinations : sepia(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : saturate(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 Percentage value : saturate(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(50%)'
+PASS subRule.cssText is "saturate(50%)"
 
 Percentage value > 1 : saturate(250%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(250%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(250%)'
+PASS subRule.cssText is "saturate(250%)"
 
 Float value converts to integer : saturate(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 Input value > 1 : saturate(5.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(5.5)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(5.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(5.5)'
+PASS subRule.cssText is "saturate(5.5)"
 
 Zero value : saturate(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
+PASS subRule.cssText is "saturate(0)"
 
 No values : saturate()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate()'
+PASS subRule.cssText is "saturate()"
 
 Multiple values : saturate(0.5) saturate(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) saturate(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) saturate(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
 
 Rule combinations : saturate(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Degrees value as integer : hue-rotate(10deg)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
+PASS subRule.cssText is "hue-rotate(10deg)"
 
 Degrees float value converts to integer : hue-rotate(10.0deg)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
+PASS subRule.cssText is "hue-rotate(10deg)"
 
 Radians value : hue-rotate(10rad)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10rad)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10rad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10rad)'
+PASS subRule.cssText is "hue-rotate(10rad)"
 
 Gradians value : hue-rotate(10grad)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10grad)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10grad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10grad)'
+PASS subRule.cssText is "hue-rotate(10grad)"
 
 Turns value : hue-rotate(0.5turn)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0.5turn)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0.5turn)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0.5turn)'
+PASS subRule.cssText is "hue-rotate(0.5turn)"
 
 Zero value : hue-rotate(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0deg)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
+PASS subRule.cssText is "hue-rotate(0deg)"
 
 No values : hue-rotate()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate()'
+PASS subRule.cssText is "hue-rotate()"
 
 Rule combinations : hue-rotate(10deg) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : invert(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(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.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 Percentage value : invert(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(50%)'
+PASS subRule.cssText is "invert(50%)"
 
 Float value converts to integer : invert(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(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.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 Zero value : invert(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
+PASS subRule.cssText is "invert(0)"
 
 No values : invert()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert()'
+PASS subRule.cssText is "invert()"
 
 Multiple values : invert(0.5) invert(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) invert(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) invert(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
 
 Rule combinations : invert(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : opacity(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(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.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 Percentage value : opacity(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(50%)'
+PASS subRule.cssText is "opacity(50%)"
 
 Float value converts to integer : opacity(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(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.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 Zero value : opacity(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
+PASS subRule.cssText is "opacity(0)"
 
 No values : opacity()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity()'
+PASS subRule.cssText is "opacity()"
 
 Multiple values : opacity(0.5) opacity(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) opacity(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) opacity(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
 
 Rule combinations : opacity(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : brightness(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Percentage value : brightness(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(50%)'
+PASS subRule.cssText is "brightness(50%)"
 
 Float value converts to integer : brightness(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Zero value : brightness(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 No values : brightness()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness()'
+PASS subRule.cssText is "brightness()"
 
 Multiple values : brightness(0.5) brightness(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) brightness(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) brightness(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
 
 Rule combinations : brightness(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Parameter 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 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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(-1.1)'
+PASS subRule.cssText is "brightness(-1.1)"
 
 Parameter more than 100% : brightness(101%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(101%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(101%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(101%)'
+PASS subRule.cssText is "brightness(101%)"
 
 Rule combinations : grayscale(0.25) brightness(0.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) brightness(0.5)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) brightness(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "brightness(0.5)"
 
 Integer value : contrast(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(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.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Percentage value : contrast(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(50%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(50%)'
+PASS subRule.cssText is "contrast(50%)"
 
 Percentage value > 1 : contrast(250%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(250%)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(250%)'
+PASS subRule.cssText is "contrast(250%)"
 
 Float value converts to integer : contrast(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(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.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Zero value : contrast(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
+PASS subRule.cssText is "contrast(0)"
 
 No values : contrast()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast()'
+PASS subRule.cssText is "contrast()"
 
 Value greater than one : contrast(2)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(2)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(2)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
+PASS subRule.cssText is "contrast(2)"
 
 Multiple values : contrast(0.5) contrast(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) contrast(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) contrast(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
 
 Rule combinations : contrast(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Rule combinations : grayscale(0.25) contrast(0.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) contrast(0.5)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) contrast(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "contrast(0.5)"
 
 One zero to px : blur(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(0px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
+PASS subRule.cssText is "blur(0px)"
 
 One length : blur(10px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(10px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(10px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(10px)'
+PASS subRule.cssText is "blur(10px)"
 
 No values : blur()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur()'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur()'
+PASS subRule.cssText is "blur()"
 
 Color then three values : drop-shadow(red 1px 2px 3px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
 
 Three values then color : drop-shadow(1px 2px 3px red)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
 
 Color then three values with zero length : drop-shadow(#abc 0 0 0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 
 Three values with zero length : drop-shadow(0 0 0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(0px 0px 0px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
 
 Two values no color : drop-shadow(1px 2px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(1px 2px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(1px 2px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(1px 2px)'
+PASS subRule.cssText is "drop-shadow(1px 2px)"
 
 Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)'
+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
-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_BLUR
-PASS subRule.cssText is 'blur(5px)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(green 1px 2px 3px)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "hue-rotate(35deg)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "blur(5px)"
+PASS subRule.cssText is "drop-shadow(green 1px 2px 3px)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 6c2957f..4f41d59 100644 (file)
@@ -6,7 +6,107 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/backdropfilter-property-parsing-invalid.js"></script>
+<script>
+description("Test the parsing of the -webkit-backdrop-filter property.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, cssRule, declaration;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+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");
+    shouldBeEqualToString("declaration.getPropertyValue('-webkit-backdrop-filter')", "");
+}
+
+testInvalidFilterRule("Too many parameters", "url(#a #b)");
+
+testInvalidFilterRule("Length instead of number", "grayscale(10px)");
+testInvalidFilterRule("Too many parameters", "grayscale(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "grayscale(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "grayscale(0.5,)");
+testInvalidFilterRule("Negative parameter", "grayscale(-0.5)");
+testInvalidFilterRule("Negative percent", "grayscale(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "grayscale(1.5)");
+
+testInvalidFilterRule("Too many parameters", "sepia(0.5 0.5 3.0)");
+testInvalidFilterRule("Too many parameters and commas", "sepia(0.1, 0.1)");
+testInvalidFilterRule("Trailing comma", "sepia(0.5,)");
+testInvalidFilterRule("Negative parameter", "sepia(-0.01)");
+testInvalidFilterRule("Negative percent", "sepia(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "sepia(10000)");
+
+testInvalidFilterRule("Length instead of number", "saturate(10px)");
+testInvalidFilterRule("Too many parameters", "saturate(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "saturate(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "saturate(0.5,)");
+testInvalidFilterRule("Negative parameter", "saturate(-0.5)");
+testInvalidFilterRule("Negative percent", "saturate(-10%)");
+
+testInvalidFilterRule("Bare number", "hue-rotate(10)");
+testInvalidFilterRule("Length", "hue-rotate(10px)");
+testInvalidFilterRule("Too many parameters", "hue-rotate(10deg 4)");
+testInvalidFilterRule("Too many parameters and commas", "hue-rotate(10deg, 5deg)");
+testInvalidFilterRule("Trailing comma", "hue-rotate(10deg,)");
+
+testInvalidFilterRule("Length instead of number", "invert(10px)");
+testInvalidFilterRule("Too many parameters", "invert(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "invert(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "invert(0.5,)");
+testInvalidFilterRule("Negative parameter", "invert(-0.5)");
+testInvalidFilterRule("Parameter out of bounds", "invert(1.5)");
+
+testInvalidFilterRule("Length instead of number", "opacity(10px)");
+testInvalidFilterRule("Too many parameters", "opacity(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "opacity(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "opacity(0.5,)");
+testInvalidFilterRule("Negative parameter", "opacity(-0.5)");
+testInvalidFilterRule("Negative percent", "opacity(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "opacity(1.5)");
+
+testInvalidFilterRule("Length instead of number", "brightness(10px)");
+testInvalidFilterRule("Too many parameters", "brightness(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "brightness(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "brightness(0.5,)");
+
+testInvalidFilterRule("Length instead of number", "contrast(10px)");
+testInvalidFilterRule("Too many parameters", "contrast(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "contrast(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "contrast(0.5,)");
+testInvalidFilterRule("Negative parameter", "contrast(-0.5)");
+testInvalidFilterRule("Negative percent", "contrast(-10%)");
+
+testInvalidFilterRule("Bare number", "blur(1)");
+testInvalidFilterRule("Negative number", "blur(-1px)");
+testInvalidFilterRule("Percentage", "blur(10%)");
+testInvalidFilterRule("Too many parameters", "blur(1px 1px)");
+testInvalidFilterRule("Too many parameters and commas", "blur(1em, 1em)");
+testInvalidFilterRule("Commas", "blur(10px, 10px)");
+testInvalidFilterRule("Trailing comma", "blur(1em,)");
+
+testInvalidFilterRule("No values", "drop-shadow()");
+testInvalidFilterRule("Missing lengths", "drop-shadow(red)");
+testInvalidFilterRule("Not enough lengths", "drop-shadow(red 1px)");
+testInvalidFilterRule("Missing units", "drop-shadow(red 1 2 3)");
+testInvalidFilterRule("Inset", "drop-shadow(red 1px 2px 3px inset)");
+testInvalidFilterRule("Too many parameters", "drop-shadow(red 1px 2px 3px 4px)");
+testInvalidFilterRule("Commas", "drop-shadow(red, 1px, 2px, 3px)");
+testInvalidFilterRule("Negative radius", "drop-shadow(10px 10px -1px red)");
+
+successfullyParsed = true;
+
+</script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
 </html>
index 82497e6..94daf03 100644 (file)
@@ -6,7 +6,382 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/backdropfilter-property-parsing.js"></script>
+<script>
+description("Test the parsing of the -webkit-backdrop-filter property.");
+
+function jsWrapperClass(node)
+{
+    if (!node)
+        return "[null]";
+    var string = Object.prototype.toString.apply(node);
+    return string.substr(8, string.length - 9);
+}
+
+function shouldBeType(expression, className, prototypeName, constructorName)
+{
+    if (!prototypeName)
+        prototypeName = className + "Prototype";
+    if (!constructorName)
+        constructorName = className + "Constructor";
+    shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
+}
+
+// These have to be global for the test helpers to see them.
+var stylesheet, cssRule, declaration, filterRule, subRule;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testFilterRule(description, rule, expectedLength, expectedValue, expectedTexts)
+{
+    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", "1");
+    shouldBe("declaration.getPropertyValue('-webkit-backdrop-filter')", `"${expectedValue}"`);
+
+    filterRule = declaration.getPropertyCSSValue('-webkit-backdrop-filter');
+    shouldBeType("filterRule", "CSSValueList");
+
+    shouldBe("filterRule.length", `${expectedLength}`);
+
+    if (filterRule) {
+        for (var i = 0; i < expectedLength; i++) {
+            subRule = filterRule[i];
+            shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
+        }
+    }
+}
+
+testFilterRule("Basic reference",
+               "url('#a')", 1, "url(#a)",
+               ["url(#a)"]);
+
+testFilterRule("Bare unquoted reference converting to quoted form",
+               "url(#a)", 1, "url(#a)",
+               ["url(#a)"]);
+
+testFilterRule("Multiple references",
+               "url('#a') url('#b')", 2, "url(#a) url(#b)",
+               ["url(#a)", "url(#b)"]);
+
+testFilterRule("Reference as 2nd value",
+               "grayscale(1) url('#a')", 2, "grayscale(1) url(#a)",
+               ["grayscale(1)", "url(#a)"]);
+
+testFilterRule("Integer value",
+               "grayscale(1)", 1, "grayscale(1)",
+               ["grayscale(1)"]);
+
+testFilterRule("Percentage value",
+               "grayscale(50%)", 1, "grayscale(50%)",
+               ["grayscale(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "grayscale(1.0)", 1, "grayscale(1)",
+               ["grayscale(1)"]);
+
+testFilterRule("Zero value",
+               "grayscale(0)", 1, "grayscale(0)",
+               ["grayscale(0)"]);
+
+testFilterRule("No values",
+               "grayscale()", 1, "grayscale()",
+               ["grayscale()"]);
+
+testFilterRule("Multiple values",
+               "grayscale(0.5) grayscale(0.25)", 2, "grayscale(0.5) grayscale(0.25)",
+               ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "sepia(1)", 1, "sepia(1)",
+               ["sepia(1)"]);
+
+testFilterRule("Percentage value",
+               "sepia(50%)", 1, "sepia(50%)",
+               ["sepia(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "sepia(1.0)", 1, "sepia(1)",
+               ["sepia(1)"]);
+
+testFilterRule("Zero value",
+               "sepia(0)", 1, "sepia(0)",
+               ["sepia(0)"]);
+
+testFilterRule("No values",
+               "sepia()", 1, "sepia()",
+               ["sepia()"]);
+
+testFilterRule("Multiple values",
+               "sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
+               ["sepia(0.5)", "sepia(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "sepia(0.5) grayscale(0.25)", 2, "sepia(0.5) grayscale(0.25)",
+               ["sepia(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "saturate(1)", 1, "saturate(1)",
+               ["saturate(1)"]);
+
+testFilterRule("Percentage value",
+               "saturate(50%)", 1, "saturate(50%)",
+               ["saturate(50%)"]);
+
+testFilterRule("Percentage value > 1",
+               "saturate(250%)", 1, "saturate(250%)",
+               ["saturate(250%)"]);
+
+testFilterRule("Float value converts to integer",
+               "saturate(1.0)", 1, "saturate(1)",
+               ["saturate(1)"]);
+
+testFilterRule("Input value > 1",
+               "saturate(5.5)", 1, "saturate(5.5)",
+               ["saturate(5.5)"]);
+
+testFilterRule("Zero value",
+               "saturate(0)", 1, "saturate(0)",
+               ["saturate(0)"]);
+
+testFilterRule("No values",
+               "saturate()", 1, "saturate()",
+               ["saturate()"]);
+
+testFilterRule("Multiple values",
+               "saturate(0.5) saturate(0.25)", 2, "saturate(0.5) saturate(0.25)",
+               ["saturate(0.5)", "saturate(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "saturate(0.5) grayscale(0.25)", 2, "saturate(0.5) grayscale(0.25)",
+               ["saturate(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Degrees value as integer",
+               "hue-rotate(10deg)", 1, "hue-rotate(10deg)",
+               ["hue-rotate(10deg)"]);
+
+testFilterRule("Degrees float value converts to integer",
+               "hue-rotate(10.0deg)", 1, "hue-rotate(10deg)",
+               ["hue-rotate(10deg)"]);
+
+testFilterRule("Radians value",
+               "hue-rotate(10rad)", 1, "hue-rotate(10rad)",
+               ["hue-rotate(10rad)"]);
+
+testFilterRule("Gradians value",
+               "hue-rotate(10grad)", 1, "hue-rotate(10grad)",
+               ["hue-rotate(10grad)"]);
+
+testFilterRule("Turns value",
+               "hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
+               ["hue-rotate(0.5turn)"]);
+
+testFilterRule("Zero value",
+               "hue-rotate(0)", 1, "hue-rotate(0deg)",
+               ["hue-rotate(0deg)"]);
+
+testFilterRule("No values",
+               "hue-rotate()", 1, "hue-rotate()",
+               ["hue-rotate()"]);
+
+testFilterRule("Rule combinations",
+               "hue-rotate(10deg) grayscale(0.25)", 2, "hue-rotate(10deg) grayscale(0.25)",
+               ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "invert(1)", 1, "invert(1)",
+               ["invert(1)"]);
+
+testFilterRule("Percentage value",
+               "invert(50%)", 1, "invert(50%)",
+               ["invert(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "invert(1.0)", 1, "invert(1)",
+               ["invert(1)"]);
+
+testFilterRule("Zero value",
+               "invert(0)", 1, "invert(0)",
+               ["invert(0)"]);
+
+testFilterRule("No values",
+               "invert()", 1, "invert()",
+               ["invert()"]);
+
+testFilterRule("Multiple values",
+               "invert(0.5) invert(0.25)", 2, "invert(0.5) invert(0.25)",
+               ["invert(0.5)", "invert(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "invert(0.5) grayscale(0.25)", 2, "invert(0.5) grayscale(0.25)",
+               ["invert(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "opacity(1)", 1, "opacity(1)",
+               ["opacity(1)"]);
+
+testFilterRule("Percentage value",
+               "opacity(50%)", 1, "opacity(50%)",
+               ["opacity(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "opacity(1.0)", 1, "opacity(1)",
+               ["opacity(1)"]);
+
+testFilterRule("Zero value",
+               "opacity(0)", 1, "opacity(0)",
+               ["opacity(0)"]);
+
+testFilterRule("No values",
+               "opacity()", 1, "opacity()",
+               ["opacity()"]);
+
+testFilterRule("Multiple values",
+               "opacity(0.5) opacity(0.25)", 2, "opacity(0.5) opacity(0.25)",
+               ["opacity(0.5)", "opacity(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "opacity(0.5) grayscale(0.25)", 2, "opacity(0.5) grayscale(0.25)",
+               ["opacity(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+              "brightness(1)", 1, "brightness(1)",
+              ["brightness(1)"]);
+
+testFilterRule("Percentage value",
+              "brightness(50%)", 1, "brightness(50%)",
+              ["brightness(50%)"]);
+
+testFilterRule("Float value converts to integer",
+              "brightness(1.0)", 1, "brightness(1)",
+              ["brightness(1)"]);
+
+testFilterRule("Zero value",
+              "brightness(0)", 1, "brightness(0)",
+              ["brightness(0)"]);
+
+testFilterRule("No values",
+              "brightness()", 1, "brightness()",
+              ["brightness()"]);
+
+testFilterRule("Multiple values",
+              "brightness(0.5) brightness(0.25)", 2, "brightness(0.5) brightness(0.25)",
+              ["brightness(0.5)", "brightness(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "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)"]);
+
+testFilterRule("Parameter more than 100%",
+              "brightness(101%)", 1, "brightness(101%)",
+              ["brightness(101%)"]);
+
+testFilterRule("Rule combinations",
+              "grayscale(0.25) brightness(0.5)", 2, "grayscale(0.25) brightness(0.5)",
+              ["grayscale(0.25)", "brightness(0.5)"]);
+
+testFilterRule("Integer value",
+              "contrast(1)", 1, "contrast(1)",
+              ["contrast(1)"]);
+
+testFilterRule("Percentage value",
+              "contrast(50%)", 1, "contrast(50%)",
+              ["contrast(50%)"]);
+
+testFilterRule("Percentage value > 1",
+              "contrast(250%)", 1, "contrast(250%)",
+              ["contrast(250%)"]);
+
+testFilterRule("Float value converts to integer",
+              "contrast(1.0)", 1, "contrast(1)",
+              ["contrast(1)"]);
+
+testFilterRule("Zero value",
+              "contrast(0)", 1, "contrast(0)",
+              ["contrast(0)"]);
+
+testFilterRule("No values",
+              "contrast()", 1, "contrast()",
+              ["contrast()"]);
+
+testFilterRule("Value greater than one",
+              "contrast(2)", 1, "contrast(2)",
+              ["contrast(2)"]);
+
+testFilterRule("Multiple values",
+              "contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
+              ["contrast(0.5)", "contrast(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "contrast(0.5) grayscale(0.25)", 2, "contrast(0.5) grayscale(0.25)",
+              ["contrast(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "grayscale(0.25) contrast(0.5)", 2, "grayscale(0.25) contrast(0.5)",
+              ["grayscale(0.25)", "contrast(0.5)"]);
+
+testFilterRule("One zero to px",
+               "blur(0)", 1, "blur(0px)",
+               ["blur(0px)"]);
+
+testFilterRule("One length",
+               "blur(10px)", 1, "blur(10px)",
+               ["blur(10px)"]);
+
+testFilterRule("No values",
+               "blur()", 1, "blur()",
+               ["blur()"]);
+
+testFilterRule("Color then three values",
+              "drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
+              ["drop-shadow(red 1px 2px 3px)"]);
+
+testFilterRule("Three values then color",
+              "drop-shadow(1px 2px 3px red)", 1, "drop-shadow(red 1px 2px 3px)",
+              ["drop-shadow(red 1px 2px 3px)"]);
+
+testFilterRule("Color then three values with zero length",
+              "drop-shadow(#abc 0 0 0)", 1, "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)",
+              ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
+
+testFilterRule("Three values with zero length",
+              "drop-shadow(0 0 0)", 1, "drop-shadow(0px 0px 0px)",
+              ["drop-shadow(0px 0px 0px)"]);
+
+testFilterRule("Two values no color",
+              "drop-shadow(1px 2px)", 1, "drop-shadow(1px 2px)",
+              ["drop-shadow(1px 2px)"]);
+
+testFilterRule("Multiple operations",
+               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)", 8,
+               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)",
+               [
+                   "grayscale(0.5)",
+                   "sepia(0.25)",
+                   "saturate(0.75)",
+                   "hue-rotate(35deg)",
+                   "invert(0.2)",
+                   "opacity(0.9)",
+                   "blur(5px)",
+                   "drop-shadow(green 1px 2px 3px)"
+               ]);
+
+successfullyParsed = true;
+
+</script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
 </html>
index 4ef384b..ee46c03 100644 (file)
@@ -6,7 +6,26 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/backdropfilter-property.js"></script>
+<script>
+description("Test the parsing of the -webkit-backdrop-filter property.");
+
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+var stylesheet = styleElement.sheet;
+
+// add a -webkit-filter property to the start of the stylesheet
+stylesheet.addRule("body", "-webkit-backdrop-filter: hue-rotate(120deg)", 0);
+
+var cssRule = stylesheet.cssRules.item(0);
+
+shouldBe("cssRule.type", "1");
+
+var declaration = cssRule.style;
+shouldBe("declaration.length", "1");
+shouldBe("declaration.getPropertyValue('-webkit-backdrop-filter')", "'hue-rotate(120deg)'");
+
+successfullyParsed = true;
+</script>
 <script src="../../../resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js b/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js
deleted file mode 100644 (file)
index 73ffeac..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-description("Test the computed style of the -webkit-backdrop-filter property.");
-
-// These have to be global for the test helpers to see them.
-var stylesheet, filterStyle, subRule;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testComputedFilterRule(description, rule, expectedLength, expectedTypes, expectedTexts)
-{
-    debug("");
-    debug(description + " : " + rule);
-
-    stylesheet.insertRule("body { -webkit-backdrop-filter: " + rule + "; }", 0);
-
-    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue('-webkit-backdrop-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("No values",
-                       "grayscale()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                       ["grayscale(1)"]);
-
-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("No values",
-                       "sepia()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-                       ["sepia(1)"]);
-
-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("No values",
-                       "saturate()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-                       ["saturate(1)"]);
-
-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("No values",
-                       "hue-rotate()", 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("No values",
-                       "invert()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-                       ["invert(1)"]);
-
-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("No values",
-                       "opacity()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-                       ["opacity(1)"]);
-
-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("Integer value",
-                      "brightness(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "brightness(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "brightness(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("No values",
-                      "brightness()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("Multiple values",
-                      "brightness(0.5) brightness(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0.5)", "brightness(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "brightness(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["brightness(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("Integer value",
-                      "contrast(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Value greater than 1",
-                      "contrast(2)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(2)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "contrast(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "contrast(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0)"]);
-
-testComputedFilterRule("No values",
-                      "contrast()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Multiple values",
-                      "contrast(0.5) contrast(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0.5)", "contrast(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "contrast(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["contrast(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("One zero to px",
-                       "blur(0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(2em)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(32px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(5px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(5px)"]);
-
-testComputedFilterRule("No values",
-                       "blur()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("Color then three values",
-                       "drop-shadow(red 1px 2px 3px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Three values then color",
-                       "drop-shadow(1px 2px 3px red)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Color then three values with zero length",
-                       "drop-shadow(#abc 0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
-
-testComputedFilterRule("Three values with zero length",
-                       "drop-shadow(0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
-
-testComputedFilterRule("Two values no color",
-                       "drop-shadow(1px 2px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
-
-testComputedFilterRule("Multiple operations",
-                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
-                       [
-                           "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_BLUR",
-               ],
-                       [
-                           "grayscale(0.5)",
-                           "sepia(0.25)",
-                           "saturate(0.75)",
-                           "hue-rotate(35deg)",
-                           "invert(0.2)",
-                           "opacity(0.9)",
-                           "blur(5px)"
-               ]);
-
-testComputedFilterRule("Percentage values",
-                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
-                      [
-                          "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
-                          "WebKitCSSFilterValue.CSS_FILTER_SEPIA",
-                          "WebKitCSSFilterValue.CSS_FILTER_SATURATE",
-                          "WebKitCSSFilterValue.CSS_FILTER_INVERT",
-                          "WebKitCSSFilterValue.CSS_FILTER_OPACITY",
-                          "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS",
-                          "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"
-              ],
-                      [
-                          "grayscale(0.5)",
-                          "sepia(0.25)",
-                          "saturate(0.75)",
-                          "invert(0.2)",
-                          "opacity(0.9)",
-                          "brightness(0.6)",
-                          "contrast(0.3)"
-              ]);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js b/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js
deleted file mode 100644 (file)
index 8a38f56..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-description("Test the parsing of the -webkit-backdrop-filter property.");
-
-// These have to be global for the test helpers to see them.
-var stylesheet, cssRule, declaration;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-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");
-    shouldBeEqualToString("declaration.getPropertyValue('-webkit-backdrop-filter')", "");
-}
-
-testInvalidFilterRule("Too many parameters", "url(#a #b)");
-
-testInvalidFilterRule("Length instead of number", "grayscale(10px)");
-testInvalidFilterRule("Too many parameters", "grayscale(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "grayscale(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "grayscale(0.5,)");
-testInvalidFilterRule("Negative parameter", "grayscale(-0.5)");
-testInvalidFilterRule("Negative percent", "grayscale(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "grayscale(1.5)");
-
-testInvalidFilterRule("Too many parameters", "sepia(0.5 0.5 3.0)");
-testInvalidFilterRule("Too many parameters and commas", "sepia(0.1, 0.1)");
-testInvalidFilterRule("Trailing comma", "sepia(0.5,)");
-testInvalidFilterRule("Negative parameter", "sepia(-0.01)");
-testInvalidFilterRule("Negative percent", "sepia(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "sepia(10000)");
-
-testInvalidFilterRule("Length instead of number", "saturate(10px)");
-testInvalidFilterRule("Too many parameters", "saturate(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "saturate(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "saturate(0.5,)");
-testInvalidFilterRule("Negative parameter", "saturate(-0.5)");
-testInvalidFilterRule("Negative percent", "saturate(-10%)");
-
-testInvalidFilterRule("Bare number", "hue-rotate(10)");
-testInvalidFilterRule("Length", "hue-rotate(10px)");
-testInvalidFilterRule("Too many parameters", "hue-rotate(10deg 4)");
-testInvalidFilterRule("Too many parameters and commas", "hue-rotate(10deg, 5deg)");
-testInvalidFilterRule("Trailing comma", "hue-rotate(10deg,)");
-
-testInvalidFilterRule("Length instead of number", "invert(10px)");
-testInvalidFilterRule("Too many parameters", "invert(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "invert(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "invert(0.5,)");
-testInvalidFilterRule("Negative parameter", "invert(-0.5)");
-testInvalidFilterRule("Parameter out of bounds", "invert(1.5)");
-
-testInvalidFilterRule("Length instead of number", "opacity(10px)");
-testInvalidFilterRule("Too many parameters", "opacity(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "opacity(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "opacity(0.5,)");
-testInvalidFilterRule("Negative parameter", "opacity(-0.5)");
-testInvalidFilterRule("Negative percent", "opacity(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "opacity(1.5)");
-
-testInvalidFilterRule("Length instead of number", "brightness(10px)");
-testInvalidFilterRule("Too many parameters", "brightness(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "brightness(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "brightness(0.5,)");
-
-testInvalidFilterRule("Length instead of number", "contrast(10px)");
-testInvalidFilterRule("Too many parameters", "contrast(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "contrast(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "contrast(0.5,)");
-testInvalidFilterRule("Negative parameter", "contrast(-0.5)");
-testInvalidFilterRule("Negative percent", "contrast(-10%)");
-
-testInvalidFilterRule("Bare number", "blur(1)");
-testInvalidFilterRule("Negative number", "blur(-1px)");
-testInvalidFilterRule("Percentage", "blur(10%)");
-testInvalidFilterRule("Too many parameters", "blur(1px 1px)");
-testInvalidFilterRule("Too many parameters and commas", "blur(1em, 1em)");
-testInvalidFilterRule("Commas", "blur(10px, 10px)");
-testInvalidFilterRule("Trailing comma", "blur(1em,)");
-
-testInvalidFilterRule("No values", "drop-shadow()");
-testInvalidFilterRule("Missing lengths", "drop-shadow(red)");
-testInvalidFilterRule("Not enough lengths", "drop-shadow(red 1px)");
-testInvalidFilterRule("Missing units", "drop-shadow(red 1 2 3)");
-testInvalidFilterRule("Inset", "drop-shadow(red 1px 2px 3px inset)");
-testInvalidFilterRule("Too many parameters", "drop-shadow(red 1px 2px 3px 4px)");
-testInvalidFilterRule("Commas", "drop-shadow(red, 1px, 2px, 3px)");
-testInvalidFilterRule("Negative radius", "drop-shadow(10px 10px -1px red)");
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js b/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js
deleted file mode 100644 (file)
index 32705ae..0000000
+++ /dev/null
@@ -1,460 +0,0 @@
-description("Test the parsing of the -webkit-backdrop-filter property.");
-
-function jsWrapperClass(node)
-{
-    if (!node)
-        return "[null]";
-    var string = Object.prototype.toString.apply(node);
-    return string.substr(8, string.length - 9);
-}
-
-function shouldBeType(expression, className, prototypeName, constructorName)
-{
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
-    shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
-}
-
-// These have to be global for the test helpers to see them.
-var stylesheet, cssRule, declaration, filterRule, subRule;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testFilterRule(description, rule, expectedLength, expectedValue, expectedTypes, expectedTexts)
-{
-    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", "1");
-    shouldBe("declaration.getPropertyValue('-webkit-backdrop-filter')", "'" + expectedValue + "'");
-
-    filterRule = declaration.getPropertyCSSValue('-webkit-backdrop-filter');
-    shouldBeType("filterRule", "CSSValueList");
-
-    shouldBe("filterRule.length", "" + expectedLength); // shouldBe expects string arguments
-
-    if (filterRule) {
-        for (var i = 0; i < expectedLength; i++) {
-            subRule = filterRule[i];
-            shouldBe("subRule.operationType", expectedTypes[i]);
-            shouldBe("subRule.cssText", "'" + expectedTexts[i] + "'");
-        }
-    }
-}
-
-testFilterRule("Basic reference",
-               "url('#a')", 1, "url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)"]);
-
-testFilterRule("Bare unquoted reference converting to quoted form",
-               "url(#a)", 1, "url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)"]);
-
-testFilterRule("Multiple references",
-               "url('#a') url('#b')", 2, "url(#a) url(#b)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)", "url(#b)"]);
-
-testFilterRule("Reference as 2nd value",
-               "grayscale(1) url('#a')", 2, "grayscale(1) url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["grayscale(1)", "url(#a)"]);
-
-testFilterRule("Integer value",
-               "grayscale(1)", 1, "grayscale(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(1)"]);
-
-testFilterRule("Percentage value",
-               "grayscale(50%)", 1, "grayscale(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "grayscale(1.0)", 1, "grayscale(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(1)"]);
-
-testFilterRule("Zero value",
-               "grayscale(0)", 1, "grayscale(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(0)"]);
-
-testFilterRule("No values",
-               "grayscale()", 1, "grayscale()",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale()"]);
-
-testFilterRule("Multiple values",
-               "grayscale(0.5) grayscale(0.25)", 2, "grayscale(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "sepia(1)", 1, "sepia(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(1)"]);
-
-testFilterRule("Percentage value",
-               "sepia(50%)", 1, "sepia(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "sepia(1.0)", 1, "sepia(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(1)"]);
-
-testFilterRule("Zero value",
-               "sepia(0)", 1, "sepia(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(0)"]);
-
-testFilterRule("No values",
-               "sepia()", 1, "sepia()",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia()"]);
-
-testFilterRule("Multiple values",
-               "sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(0.5)", "sepia(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "sepia(0.5) grayscale(0.25)", 2, "sepia(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["sepia(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "saturate(1)", 1, "saturate(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(1)"]);
-
-testFilterRule("Percentage value",
-               "saturate(50%)", 1, "saturate(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(50%)"]);
-
-testFilterRule("Percentage value > 1",
-               "saturate(250%)", 1, "saturate(250%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(250%)"]);
-
-testFilterRule("Float value converts to integer",
-               "saturate(1.0)", 1, "saturate(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(1)"]);
-
-testFilterRule("Input value > 1",
-               "saturate(5.5)", 1, "saturate(5.5)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(5.5)"]);
-
-testFilterRule("Zero value",
-               "saturate(0)", 1, "saturate(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(0)"]);
-
-testFilterRule("No values",
-               "saturate()", 1, "saturate()",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate()"]);
-
-testFilterRule("Multiple values",
-               "saturate(0.5) saturate(0.25)", 2, "saturate(0.5) saturate(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(0.5)", "saturate(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "saturate(0.5) grayscale(0.25)", 2, "saturate(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["saturate(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Degrees value as integer",
-               "hue-rotate(10deg)", 1, "hue-rotate(10deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10deg)"]);
-
-testFilterRule("Degrees float value converts to integer",
-               "hue-rotate(10.0deg)", 1, "hue-rotate(10deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10deg)"]);
-
-testFilterRule("Radians value",
-               "hue-rotate(10rad)", 1, "hue-rotate(10rad)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10rad)"]);
-
-testFilterRule("Gradians value",
-               "hue-rotate(10grad)", 1, "hue-rotate(10grad)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10grad)"]);
-
-testFilterRule("Turns value",
-               "hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(0.5turn)"]);
-
-testFilterRule("Zero value",
-               "hue-rotate(0)", 1, "hue-rotate(0deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(0deg)"]);
-
-testFilterRule("No values",
-               "hue-rotate()", 1, "hue-rotate()",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate()"]);
-
-testFilterRule("Rule combinations",
-               "hue-rotate(10deg) grayscale(0.25)", 2, "hue-rotate(10deg) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["hue-rotate(10deg)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "invert(1)", 1, "invert(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(1)"]);
-
-testFilterRule("Percentage value",
-               "invert(50%)", 1, "invert(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "invert(1.0)", 1, "invert(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(1)"]);
-
-testFilterRule("Zero value",
-               "invert(0)", 1, "invert(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(0)"]);
-
-testFilterRule("No values",
-               "invert()", 1, "invert()",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert()"]);
-
-testFilterRule("Multiple values",
-               "invert(0.5) invert(0.25)", 2, "invert(0.5) invert(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(0.5)", "invert(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "invert(0.5) grayscale(0.25)", 2, "invert(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["invert(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "opacity(1)", 1, "opacity(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(1)"]);
-
-testFilterRule("Percentage value",
-               "opacity(50%)", 1, "opacity(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "opacity(1.0)", 1, "opacity(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(1)"]);
-
-testFilterRule("Zero value",
-               "opacity(0)", 1, "opacity(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(0)"]);
-
-testFilterRule("No values",
-               "opacity()", 1, "opacity()",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity()"]);
-
-testFilterRule("Multiple values",
-               "opacity(0.5) opacity(0.25)", 2, "opacity(0.5) opacity(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(0.5)", "opacity(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "opacity(0.5) grayscale(0.25)", 2, "opacity(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["opacity(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-              "brightness(1)", 1, "brightness(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(1)"]);
-
-testFilterRule("Percentage value",
-              "brightness(50%)", 1, "brightness(50%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(50%)"]);
-
-testFilterRule("Float value converts to integer",
-              "brightness(1.0)", 1, "brightness(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(1)"]);
-
-testFilterRule("Zero value",
-              "brightness(0)", 1, "brightness(0)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(0)"]);
-
-testFilterRule("No values",
-              "brightness()", 1, "brightness()",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness()"]);
-
-testFilterRule("Multiple values",
-              "brightness(0.5) brightness(0.25)", 2, "brightness(0.5) brightness(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(0.5)", "brightness(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "brightness(0.5) grayscale(0.25)", 2, "brightness(0.5) grayscale(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-              ["brightness(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Parameter less than -100%",
-              "brightness(-1.1)", 1, "brightness(-1.1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(-1.1)"]);
-
-testFilterRule("Parameter more than 100%",
-              "brightness(101%)", 1, "brightness(101%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(101%)"]);
-
-testFilterRule("Rule combinations",
-              "grayscale(0.25) brightness(0.5)", 2, "grayscale(0.25) brightness(0.5)",
-              [ "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["grayscale(0.25)", "brightness(0.5)"]);
-
-testFilterRule("Integer value",
-              "contrast(1)", 1, "contrast(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(1)"]);
-
-testFilterRule("Percentage value",
-              "contrast(50%)", 1, "contrast(50%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(50%)"]);
-
-testFilterRule("Percentage value > 1",
-              "contrast(250%)", 1, "contrast(250%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(250%)"]);
-
-testFilterRule("Float value converts to integer",
-              "contrast(1.0)", 1, "contrast(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(1)"]);
-
-testFilterRule("Zero value",
-              "contrast(0)", 1, "contrast(0)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(0)"]);
-
-testFilterRule("No values",
-              "contrast()", 1, "contrast()",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast()"]);
-
-testFilterRule("Value greater than one",
-              "contrast(2)", 1, "contrast(2)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(2)"]);
-
-testFilterRule("Multiple values",
-              "contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(0.5)", "contrast(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "contrast(0.5) grayscale(0.25)", 2, "contrast(0.5) grayscale(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-              ["contrast(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "grayscale(0.25) contrast(0.5)", 2, "grayscale(0.25) contrast(0.5)",
-              [ "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["grayscale(0.25)", "contrast(0.5)"]);
-
-testFilterRule("One zero to px",
-               "blur(0)", 1, "blur(0px)",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur(0px)"]);
-
-testFilterRule("One length",
-               "blur(10px)", 1, "blur(10px)",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur(10px)"]);
-
-testFilterRule("No values",
-               "blur()", 1, "blur()",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur()"]);
-
-testFilterRule("Color then three values",
-              "drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(red 1px 2px 3px)"]);
-
-testFilterRule("Three values then color",
-              "drop-shadow(1px 2px 3px red)", 1, "drop-shadow(red 1px 2px 3px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(red 1px 2px 3px)"]);
-
-testFilterRule("Color then three values with zero length",
-              "drop-shadow(#abc 0 0 0)", 1, "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
-
-testFilterRule("Three values with zero length",
-              "drop-shadow(0 0 0)", 1, "drop-shadow(0px 0px 0px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(0px 0px 0px)"]);
-
-testFilterRule("Two values no color",
-              "drop-shadow(1px 2px)", 1, "drop-shadow(1px 2px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(1px 2px)"]);
-
-testFilterRule("Multiple operations",
-               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)", 8,
-               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)",
-               [
-                   "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_BLUR",
-                   "WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"
-               ],
-               [
-                   "grayscale(0.5)",
-                   "sepia(0.25)",
-                   "saturate(0.75)",
-                   "hue-rotate(35deg)",
-                   "invert(0.2)",
-                   "opacity(0.9)",
-                   "blur(5px)",
-                   "drop-shadow(green 1px 2px 3px)"
-               ]);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js b/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js
deleted file mode 100644 (file)
index 7b67a06..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-description("Test the parsing of the -webkit-backdrop-filter property.");
-
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-var stylesheet = styleElement.sheet;
-
-// add a -webkit-filter property to the start of the stylesheet
-stylesheet.addRule("body", "-webkit-backdrop-filter: hue-rotate(120deg)", 0);
-
-var cssRule = stylesheet.cssRules.item(0);
-
-shouldBe("cssRule.type", "1");
-
-var declaration = cssRule.style;
-shouldBe("declaration.length", "1");
-shouldBe("declaration.getPropertyValue('-webkit-backdrop-filter')", "'hue-rotate(120deg)'");
-
-successfullyParsed = true;
index 4467aa0..8bf61ee 100644 (file)
       </filter>
     </defs>
   </svg>
-  <script src="script-tests/effect-reference-delete-crash.js"></script>
+  <script>
+  description("Test that no crash occurs when a SVG filter is deleted that was referenced by a deleted HTML element.");
+
+  html = document.getElementById('html');
+  html.parentNode.removeChild(html);
+  svg = document.getElementById('svg');
+  svg.parentNode.removeChild(svg);
+
+  successfullyParsed = true;
+  </script>
   <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index 4467aa0..2148b8d 100644 (file)
       </filter>
     </defs>
   </svg>
-  <script src="script-tests/effect-reference-delete-crash.js"></script>
+  <script>
+  description("Test that no crash occurs when a SVG filter is deleted that was referenced by a deleted HTML element.");
+
+  html = document.getElementById('html');
+  html.style = "";
+  svg = document.getElementById('svg');
+  svg.parentNode.removeChild(svg);
+
+  successfullyParsed = true;
+  </script>
   <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index 6d46ae2..58ff806 100644 (file)
@@ -6,384 +6,291 @@ 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)'
+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)'
+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)'
+PASS subRule.cssText is "url(#a)"
+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)'
+PASS subRule.cssText is "grayscale(1)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "grayscale(0)"
 
 No values : grayscale()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 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)'
+PASS subRule.cssText is "grayscale(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "sepia(0)"
 
 No values : sepia()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "saturate(0)"
 
 No values : saturate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+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)'
+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)'
+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)'
+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)'
+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)'
+PASS subRule.cssText is "hue-rotate(0deg)"
 
 No values : hue-rotate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
+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)'
+PASS subRule.cssText is "hue-rotate(10deg)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "invert(0)"
 
 No values : invert()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "opacity(0)"
 
 No values : opacity()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 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)'
+PASS subRule.cssText is "opacity(0.5)"
+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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : brightness(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Float value converts to integer : brightness(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Zero value : brightness(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 No values : brightness()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 Multiple values : brightness(0.5) brightness(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
 
 Rule combinations : brightness(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : contrast(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Value greater than 1 : contrast(2)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
+PASS subRule.cssText is "contrast(2)"
 
 Float value converts to integer : contrast(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Zero value : contrast(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
+PASS subRule.cssText is "contrast(0)"
 
 No values : contrast()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Multiple values : contrast(0.5) contrast(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
 
 Rule combinations : contrast(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 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)'
+PASS subRule.cssText is "blur(0px)"
 
 One length : blur(2em)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
+PASS subRule.cssText is "blur(32px)"
 
 One length : blur(5px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "blur(5px)"
 
 No values : blur()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
+PASS subRule.cssText is "blur(0px)"
 
 Color then three values : drop-shadow(red 1px 2px 3px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Three values then color : drop-shadow(1px 2px 3px red)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Color then three values with zero length : drop-shadow(#abc 0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 
 Three values with zero length : drop-shadow(0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
 
 Two values no color : drop-shadow(1px 2px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
 
 Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
 PASS filterStyle.length is 7
-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_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "hue-rotate(35deg)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "blur(5px)"
 
 Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
 PASS filterStyle.length is 7
-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_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_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.6)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.3)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "brightness(0.6)"
+PASS subRule.cssText is "contrast(0.3)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 096ab20..8e87da3 100644 (file)
@@ -6,7 +6,308 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/filter-property-computed-style.js"></script>
+<script>
+description("Test the computed style of the filter property.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, filterStyle, subRule;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testComputedFilterRule(description, rule, expectedLength, expectedTexts)
+{
+    debug("");
+    debug(`${description} : ${rule}`);
+
+    stylesheet.insertRule(`body { filter: ${rule}; }`, 0);
+
+    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue("filter");
+    shouldBe("filterStyle.length", `${expectedLength}`);
+    for (var i = 0; i < expectedLength; i++) {
+        subRule = filterStyle[i];
+        shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
+    }
+    stylesheet.deleteRule(0);
+}
+
+testComputedFilterRule("Basic reference",
+                       "url('#a')", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Bare unquoted reference converting to quoted form",
+                       "url(#a)", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Multiple references",
+                       "url('#a') url('#b')", 2,
+                       ["url(#a)", "url(#b)"]);
+
+testComputedFilterRule("Reference as 2nd value",
+                       "grayscale(1) url('#a')", 2,
+                       ["grayscale(1)", "url(#a)"]);
+
+testComputedFilterRule("Integer value",
+                       "grayscale(1)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "grayscale(1.0)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "grayscale(0)", 1,
+                       ["grayscale(0)"]);
+
+testComputedFilterRule("No values",
+                       "grayscale()", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "grayscale(0.5) grayscale(0.25)", 2,
+                       ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "sepia(1)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "sepia(1.0)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "sepia(0)", 1,
+                       ["sepia(0)"]);
+
+testComputedFilterRule("No values",
+                       "sepia()", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "sepia(0.5) sepia(0.25)", 2,
+                       ["sepia(0.5)", "sepia(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "sepia(0.5) grayscale(0.25)", 2,
+                       ["sepia(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "saturate(1)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "saturate(1.0)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "saturate(0)", 1,
+                       ["saturate(0)"]);
+
+testComputedFilterRule("No values",
+                       "saturate()", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "saturate(0.5) saturate(0.25)", 2,
+                       ["saturate(0.5)", "saturate(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "saturate(0.5) grayscale(0.25)", 2,
+                       ["saturate(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Degrees value as integer",
+                       "hue-rotate(10deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Degrees float value converts to integer",
+                       "hue-rotate(10.0deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Radians value",
+                       "hue-rotate(10rad)", 1,
+                       ["hue-rotate(572.9577951308232deg)"]);
+
+testComputedFilterRule("Gradians value",
+                       "hue-rotate(10grad)", 1,
+                       ["hue-rotate(9deg)"]);
+
+testComputedFilterRule("Turns value",
+                       "hue-rotate(0.5turn)", 1,
+                       ["hue-rotate(180deg)"]);
+
+testComputedFilterRule("Zero value",
+                       "hue-rotate(0)", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("No values",
+                       "hue-rotate()", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "hue-rotate(10deg) grayscale(0.25)", 2,
+                       ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "invert(1)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "invert(1.0)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "invert(0)", 1,
+                       ["invert(0)"]);
+
+testComputedFilterRule("No values",
+                       "invert()", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "invert(0.5) invert(0.25)", 2,
+                       ["invert(0.5)", "invert(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "invert(0.5) grayscale(0.25)", 2,
+                       ["invert(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "opacity(1)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "opacity(1.0)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "opacity(0)", 1,
+                       ["opacity(0)"]);
+
+testComputedFilterRule("No values",
+                       "opacity()", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "opacity(0.5) opacity(0.25)", 2,
+                       ["opacity(0.5)", "opacity(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "opacity(0.5) grayscale(0.25)", 2,
+                       ["opacity(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "brightness(1)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "brightness(1.0)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "brightness(0)", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("No values",
+                      "brightness()", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("Multiple values",
+                      "brightness(0.5) brightness(0.25)", 2,
+                      ["brightness(0.5)", "brightness(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "brightness(0.5) grayscale(0.25)", 2,
+                      ["brightness(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "contrast(1)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Value greater than 1",
+                      "contrast(2)", 1,
+                      ["contrast(2)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "contrast(1.0)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "contrast(0)", 1,
+                      ["contrast(0)"]);
+
+testComputedFilterRule("No values",
+                      "contrast()", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Multiple values",
+                      "contrast(0.5) contrast(0.25)", 2,
+                      ["contrast(0.5)", "contrast(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "contrast(0.5) grayscale(0.25)", 2,
+                      ["contrast(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("One zero to px",
+                       "blur(0)", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(2em)", 1,
+                       ["blur(32px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(5px)", 1,
+                       ["blur(5px)"]);
+
+testComputedFilterRule("No values",
+                       "blur()", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("Color then three values",
+                       "drop-shadow(red 1px 2px 3px)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Three values then color",
+                       "drop-shadow(1px 2px 3px red)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Color then three values with zero length",
+                       "drop-shadow(#abc 0 0 0)", 1,
+                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
+
+testComputedFilterRule("Three values with zero length",
+                       "drop-shadow(0 0 0)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
+
+testComputedFilterRule("Two values no color",
+                       "drop-shadow(1px 2px)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
+
+testComputedFilterRule("Multiple operations",
+                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
+                       [
+                           "grayscale(0.5)",
+                           "sepia(0.25)",
+                           "saturate(0.75)",
+                           "hue-rotate(35deg)",
+                           "invert(0.2)",
+                           "opacity(0.9)",
+                           "blur(5px)"]);
+
+testComputedFilterRule("Percentage values",
+                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
+                      [
+                          "grayscale(0.5)",
+                          "sepia(0.25)",
+                          "saturate(0.75)",
+                          "invert(0.2)",
+                          "opacity(0.9)",
+                          "brightness(0.6)",
+                          "contrast(0.3)"]);
+
+successfullyParsed = true;
+
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index f786388..8f98a70 100644 (file)
@@ -7,899 +7,797 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 Basic reference : url('#a')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'url(#a)'
+PASS declaration.getPropertyValue('filter') is "url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
+PASS subRule.cssText is "url(#a)"
 
 Bare unquoted reference converting to quoted form : url(#a)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'url(#a)'
+PASS declaration.getPropertyValue('filter') is "url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
+PASS subRule.cssText is "url(#a)"
 
 Multiple references : url('#a') url('#b')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'url(#a) url(#b)'
+PASS declaration.getPropertyValue('filter') is "url(#a) url(#b)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
 
 Reference as 2nd value : grayscale(1) url('#a')
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(1) url(#a)'
+PASS declaration.getPropertyValue('filter') is "grayscale(1) url(#a)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
 
 Integer value : grayscale(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 Percentage value : grayscale(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(50%)'
+PASS declaration.getPropertyValue('filter') is "grayscale(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(50%)'
+PASS subRule.cssText is "grayscale(50%)"
 
 Float value converts to integer : grayscale(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 Zero value : grayscale(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(0)'
+PASS declaration.getPropertyValue('filter') is "grayscale(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
+PASS subRule.cssText is "grayscale(0)"
 
 No values : grayscale()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale()'
+PASS declaration.getPropertyValue('filter') is "grayscale()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale()'
+PASS subRule.cssText is "grayscale()"
 
 Multiple values : grayscale(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "grayscale(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : sepia(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 Percentage value : sepia(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(50%)'
+PASS declaration.getPropertyValue('filter') is "sepia(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(50%)'
+PASS subRule.cssText is "sepia(50%)"
 
 Float value converts to integer : sepia(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 Zero value : sepia(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(0)'
+PASS declaration.getPropertyValue('filter') is "sepia(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
+PASS subRule.cssText is "sepia(0)"
 
 No values : sepia()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia()'
+PASS declaration.getPropertyValue('filter') is "sepia()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia()'
+PASS subRule.cssText is "sepia()"
 
 Multiple values : sepia(0.5) sepia(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(0.5) sepia(0.25)'
+PASS declaration.getPropertyValue('filter') is "sepia(0.5) sepia(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
 
 Rule combinations : sepia(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'sepia(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "sepia(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : saturate(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(1)'
+PASS declaration.getPropertyValue('filter') is "saturate(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 Percentage value : saturate(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(50%)'
+PASS declaration.getPropertyValue('filter') is "saturate(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(50%)'
+PASS subRule.cssText is "saturate(50%)"
 
 Percentage value > 1 : saturate(250%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(250%)'
+PASS declaration.getPropertyValue('filter') is "saturate(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(250%)'
+PASS subRule.cssText is "saturate(250%)"
 
 Float value converts to integer : saturate(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(1)'
+PASS declaration.getPropertyValue('filter') is "saturate(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.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 Input value > 1 : saturate(5.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(5.5)'
+PASS declaration.getPropertyValue('filter') is "saturate(5.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(5.5)'
+PASS subRule.cssText is "saturate(5.5)"
 
 Zero value : saturate(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(0)'
+PASS declaration.getPropertyValue('filter') is "saturate(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
+PASS subRule.cssText is "saturate(0)"
 
 No values : saturate()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate()'
+PASS declaration.getPropertyValue('filter') is "saturate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate()'
+PASS subRule.cssText is "saturate()"
 
 Multiple values : saturate(0.5) saturate(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(0.5) saturate(0.25)'
+PASS declaration.getPropertyValue('filter') is "saturate(0.5) saturate(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
 
 Rule combinations : saturate(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'saturate(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "saturate(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Degrees value as integer : hue-rotate(10deg)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
+PASS subRule.cssText is "hue-rotate(10deg)"
 
 Degrees float value converts to integer : hue-rotate(10.0deg)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
+PASS subRule.cssText is "hue-rotate(10deg)"
 
 Radians value : hue-rotate(10rad)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10rad)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(10rad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10rad)'
+PASS subRule.cssText is "hue-rotate(10rad)"
 
 Gradians value : hue-rotate(10grad)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10grad)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(10grad)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10grad)'
+PASS subRule.cssText is "hue-rotate(10grad)"
 
 Turns value : hue-rotate(0.5turn)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(0.5turn)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(0.5turn)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0.5turn)'
+PASS subRule.cssText is "hue-rotate(0.5turn)"
 
 Zero value : hue-rotate(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(0deg)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(0deg)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
+PASS subRule.cssText is "hue-rotate(0deg)"
 
 No values : hue-rotate()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate()'
+PASS declaration.getPropertyValue('filter') is "hue-rotate()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate()'
+PASS subRule.cssText is "hue-rotate()"
 
 Rule combinations : hue-rotate(10deg) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : invert(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 Percentage value : invert(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(50%)'
+PASS declaration.getPropertyValue('filter') is "invert(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(50%)'
+PASS subRule.cssText is "invert(50%)"
 
 Float value converts to integer : invert(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 Zero value : invert(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(0)'
+PASS declaration.getPropertyValue('filter') is "invert(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
+PASS subRule.cssText is "invert(0)"
 
 No values : invert()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert()'
+PASS declaration.getPropertyValue('filter') is "invert()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert()'
+PASS subRule.cssText is "invert()"
 
 Multiple values : invert(0.5) invert(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(0.5) invert(0.25)'
+PASS declaration.getPropertyValue('filter') is "invert(0.5) invert(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
 
 Rule combinations : invert(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'invert(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "invert(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : opacity(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 Percentage value : opacity(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(50%)'
+PASS declaration.getPropertyValue('filter') is "opacity(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(50%)'
+PASS subRule.cssText is "opacity(50%)"
 
 Float value converts to integer : opacity(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(1)'
+PASS declaration.getPropertyValue('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.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 Zero value : opacity(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(0)'
+PASS declaration.getPropertyValue('filter') is "opacity(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
+PASS subRule.cssText is "opacity(0)"
 
 No values : opacity()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity()'
+PASS declaration.getPropertyValue('filter') is "opacity()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity()'
+PASS subRule.cssText is "opacity()"
 
 Multiple values : opacity(0.5) opacity(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(0.5) opacity(0.25)'
+PASS declaration.getPropertyValue('filter') is "opacity(0.5) opacity(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
 
 Rule combinations : opacity(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'opacity(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "opacity(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : brightness(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(1)'
+PASS declaration.getPropertyValue('filter') is "brightness(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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Percentage value : brightness(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(50%)'
+PASS declaration.getPropertyValue('filter') is "brightness(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(50%)'
+PASS subRule.cssText is "brightness(50%)"
 
 Float value converts to integer : brightness(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(1)'
+PASS declaration.getPropertyValue('filter') is "brightness(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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Zero value : brightness(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(0)'
+PASS declaration.getPropertyValue('filter') is "brightness(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 No values : brightness()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness()'
+PASS declaration.getPropertyValue('filter') is "brightness()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness()'
+PASS subRule.cssText is "brightness()"
 
 Multiple values : brightness(0.5) brightness(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(0.5) brightness(0.25)'
+PASS declaration.getPropertyValue('filter') is "brightness(0.5) brightness(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
 
 Rule combinations : brightness(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "brightness(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Parameter 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 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.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(-1.1)'
+PASS subRule.cssText is "brightness(-1.1)"
 
 Parameter more than 100% : brightness(101%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'brightness(101%)'
+PASS declaration.getPropertyValue('filter') is "brightness(101%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(101%)'
+PASS subRule.cssText is "brightness(101%)"
 
 Rule combinations : grayscale(0.25) brightness(0.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) brightness(0.5)'
+PASS declaration.getPropertyValue('filter') is "grayscale(0.25) brightness(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "brightness(0.5)"
 
 Integer value : contrast(1)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(1)'
+PASS declaration.getPropertyValue('filter') is "contrast(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.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Percentage value : contrast(50%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(50%)'
+PASS declaration.getPropertyValue('filter') is "contrast(50%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(50%)'
+PASS subRule.cssText is "contrast(50%)"
 
 Percentage value > 1 : contrast(250%)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(250%)'
+PASS declaration.getPropertyValue('filter') is "contrast(250%)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(250%)'
+PASS subRule.cssText is "contrast(250%)"
 
 Float value converts to integer : contrast(1.0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(1)'
+PASS declaration.getPropertyValue('filter') is "contrast(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.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Zero value : contrast(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(0)'
+PASS declaration.getPropertyValue('filter') is "contrast(0)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
+PASS subRule.cssText is "contrast(0)"
 
 No values : contrast()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast()'
+PASS declaration.getPropertyValue('filter') is "contrast()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast()'
+PASS subRule.cssText is "contrast()"
 
 Value greater than one : contrast(2)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(2)'
+PASS declaration.getPropertyValue('filter') is "contrast(2)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
+PASS subRule.cssText is "contrast(2)"
 
 Multiple values : contrast(0.5) contrast(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(0.5) contrast(0.25)'
+PASS declaration.getPropertyValue('filter') is "contrast(0.5) contrast(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
 
 Rule combinations : contrast(0.5) grayscale(0.25)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'contrast(0.5) grayscale(0.25)'
+PASS declaration.getPropertyValue('filter') is "contrast(0.5) grayscale(0.25)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Rule combinations : grayscale(0.25) contrast(0.5)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) contrast(0.5)'
+PASS declaration.getPropertyValue('filter') is "grayscale(0.25) contrast(0.5)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "contrast(0.5)"
 
 One zero to px : blur(0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'blur(0px)'
+PASS declaration.getPropertyValue('filter') is "blur(0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
+PASS subRule.cssText is "blur(0px)"
 
 One length : blur(10px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'blur(10px)'
+PASS declaration.getPropertyValue('filter') is "blur(10px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(10px)'
+PASS subRule.cssText is "blur(10px)"
 
 No values : blur()
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'blur()'
+PASS declaration.getPropertyValue('filter') is "blur()"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur()'
+PASS subRule.cssText is "blur()"
 
 Color then three values : drop-shadow(red 1px 2px 3px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
+PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
 
 Three values then color : drop-shadow(1px 2px 3px red)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
+PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
 
 Color then three values with zero length : drop-shadow(#abc 0 0 0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS declaration.getPropertyValue('filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 
 Three values with zero length : drop-shadow(0 0 0)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'drop-shadow(0px 0px 0px)'
+PASS declaration.getPropertyValue('filter') is "drop-shadow(0px 0px 0px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
 
 Two values no color : drop-shadow(1px 2px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'drop-shadow(1px 2px)'
+PASS declaration.getPropertyValue('filter') is "drop-shadow(1px 2px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(1px 2px)'
+PASS subRule.cssText is "drop-shadow(1px 2px)"
 
 Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)
 PASS cssRule.type is 1
 PASS declaration.length is 1
-PASS declaration.getPropertyValue('filter') is 'grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)'
+PASS declaration.getPropertyValue('filter') is "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)"
 PASS jsWrapperClass(filterRule) is 'CSSValueList'
 PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
 PASS jsWrapperClass(filterRule.constructor) is 'Function'
 PASS filterRule.length is 8
-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_BLUR
-PASS subRule.cssText is 'blur(5px)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(green 1px 2px 3px)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "hue-rotate(35deg)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "blur(5px)"
+PASS subRule.cssText is "drop-shadow(green 1px 2px 3px)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index c61fd18..94bac57 100644 (file)
@@ -6,7 +6,107 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/filter-property-parsing-invalid.js"></script>
+<script>
+description("Test the parsing of the -webkit-filter property.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, cssRule, declaration;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testInvalidFilterRule(description, rule)
+{
+    debug("");
+    debug(description + " : " + rule);
+
+    stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
+    cssRule = stylesheet.cssRules.item(0);
+
+    shouldBe("cssRule.type", "1");
+
+    declaration = cssRule.style;
+    shouldBe("declaration.length", "0");
+    shouldBeEqualToString("declaration.getPropertyValue('-webkit-filter')", "");
+}
+
+testInvalidFilterRule("Too many parameters", "url(#a #b)");
+
+testInvalidFilterRule("Length instead of number", "grayscale(10px)");
+testInvalidFilterRule("Too many parameters", "grayscale(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "grayscale(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "grayscale(0.5,)");
+testInvalidFilterRule("Negative parameter", "grayscale(-0.5)");
+testInvalidFilterRule("Negative percent", "grayscale(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "grayscale(1.5)");
+
+testInvalidFilterRule("Too many parameters", "sepia(0.5 0.5 3.0)");
+testInvalidFilterRule("Too many parameters and commas", "sepia(0.1, 0.1)");
+testInvalidFilterRule("Trailing comma", "sepia(0.5,)");
+testInvalidFilterRule("Negative parameter", "sepia(-0.01)");
+testInvalidFilterRule("Negative percent", "sepia(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "sepia(10000)");
+
+testInvalidFilterRule("Length instead of number", "saturate(10px)");
+testInvalidFilterRule("Too many parameters", "saturate(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "saturate(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "saturate(0.5,)");
+testInvalidFilterRule("Negative parameter", "saturate(-0.5)");
+testInvalidFilterRule("Negative percent", "saturate(-10%)");
+
+testInvalidFilterRule("Bare number", "hue-rotate(10)");
+testInvalidFilterRule("Length", "hue-rotate(10px)");
+testInvalidFilterRule("Too many parameters", "hue-rotate(10deg 4)");
+testInvalidFilterRule("Too many parameters and commas", "hue-rotate(10deg, 5deg)");
+testInvalidFilterRule("Trailing comma", "hue-rotate(10deg,)");
+
+testInvalidFilterRule("Length instead of number", "invert(10px)");
+testInvalidFilterRule("Too many parameters", "invert(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "invert(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "invert(0.5,)");
+testInvalidFilterRule("Negative parameter", "invert(-0.5)");
+testInvalidFilterRule("Parameter out of bounds", "invert(1.5)");
+
+testInvalidFilterRule("Length instead of number", "opacity(10px)");
+testInvalidFilterRule("Too many parameters", "opacity(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "opacity(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "opacity(0.5,)");
+testInvalidFilterRule("Negative parameter", "opacity(-0.5)");
+testInvalidFilterRule("Negative percent", "opacity(-10%)");
+testInvalidFilterRule("Parameter out of bounds", "opacity(1.5)");
+
+testInvalidFilterRule("Length instead of number", "brightness(10px)");
+testInvalidFilterRule("Too many parameters", "brightness(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "brightness(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "brightness(0.5,)");
+
+testInvalidFilterRule("Length instead of number", "contrast(10px)");
+testInvalidFilterRule("Too many parameters", "contrast(0.5 0.5)");
+testInvalidFilterRule("Too many parameters and commas", "contrast(0.5, 0.5)");
+testInvalidFilterRule("Trailing comma", "contrast(0.5,)");
+testInvalidFilterRule("Negative parameter", "contrast(-0.5)");
+testInvalidFilterRule("Negative percent", "contrast(-10%)");
+
+testInvalidFilterRule("Bare number", "blur(1)");
+testInvalidFilterRule("Negative number", "blur(-1px)");
+testInvalidFilterRule("Percentage", "blur(10%)");
+testInvalidFilterRule("Too many parameters", "blur(1px 1px)");
+testInvalidFilterRule("Too many parameters and commas", "blur(1em, 1em)");
+testInvalidFilterRule("Commas", "blur(10px, 10px)");
+testInvalidFilterRule("Trailing comma", "blur(1em,)");
+
+testInvalidFilterRule("No values", "drop-shadow()");
+testInvalidFilterRule("Missing lengths", "drop-shadow(red)");
+testInvalidFilterRule("Not enough lengths", "drop-shadow(red 1px)");
+testInvalidFilterRule("Missing units", "drop-shadow(red 1 2 3)");
+testInvalidFilterRule("Inset", "drop-shadow(red 1px 2px 3px inset)");
+testInvalidFilterRule("Too many parameters", "drop-shadow(red 1px 2px 3px 4px)");
+testInvalidFilterRule("Commas", "drop-shadow(red, 1px, 2px, 3px)");
+testInvalidFilterRule("Negative radius", "drop-shadow(10px 10px -1px red)");
+
+successfullyParsed = true;
+
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index ffb998b..7b679bf 100644 (file)
@@ -6,7 +6,383 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/filter-property-parsing.js"></script>
+<script>
+description("Test the parsing of the filter property.");
+
+function jsWrapperClass(node)
+{
+    if (!node)
+        return "[null]";
+    var string = Object.prototype.toString.apply(node);
+    return string.substr(8, string.length - 9);
+}
+
+function shouldBeType(expression, className, prototypeName, constructorName)
+{
+    if (!prototypeName)
+        prototypeName = className + "Prototype";
+    if (!constructorName)
+        constructorName = className + "Constructor";
+    shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
+    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
+    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
+}
+
+// These have to be global for the test helpers to see them.
+var stylesheet, cssRule, declaration, filterRule, subRule;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testFilterRule(description, rule, expectedLength, expectedValue, expectedTexts)
+{
+    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", "1");
+    shouldBe("declaration.getPropertyValue('filter')", `"${expectedValue}"`);
+
+    filterRule = declaration.getPropertyCSSValue("filter");
+    shouldBeType("filterRule", "CSSValueList");
+
+    shouldBe("filterRule.length", `${expectedLength}`);
+
+    if (filterRule) {
+        for (var i = 0; i < expectedLength; i++) {
+            subRule = filterRule[i];
+            shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
+        }
+    }
+    stylesheet.deleteRule(0);
+}
+
+testFilterRule("Basic reference",
+               "url('#a')", 1, "url(#a)",
+               ["url(#a)"]);
+
+testFilterRule("Bare unquoted reference converting to quoted form",
+               "url(#a)", 1, "url(#a)",
+               ["url(#a)"]);
+
+testFilterRule("Multiple references",
+               "url('#a') url('#b')", 2, "url(#a) url(#b)",
+               ["url(#a)", "url(#b)"]);
+
+testFilterRule("Reference as 2nd value",
+               "grayscale(1) url('#a')", 2, "grayscale(1) url(#a)",
+               ["grayscale(1)", "url(#a)"]);
+
+testFilterRule("Integer value",
+               "grayscale(1)", 1, "grayscale(1)",
+               ["grayscale(1)"]);
+
+testFilterRule("Percentage value",
+               "grayscale(50%)", 1, "grayscale(50%)",
+               ["grayscale(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "grayscale(1.0)", 1, "grayscale(1)",
+               ["grayscale(1)"]);
+
+testFilterRule("Zero value",
+               "grayscale(0)", 1, "grayscale(0)",
+               ["grayscale(0)"]);
+
+testFilterRule("No values",
+               "grayscale()", 1, "grayscale()",
+               ["grayscale()"]);
+
+testFilterRule("Multiple values",
+               "grayscale(0.5) grayscale(0.25)", 2, "grayscale(0.5) grayscale(0.25)",
+               ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "sepia(1)", 1, "sepia(1)",
+               ["sepia(1)"]);
+
+testFilterRule("Percentage value",
+               "sepia(50%)", 1, "sepia(50%)",
+               ["sepia(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "sepia(1.0)", 1, "sepia(1)",
+               ["sepia(1)"]);
+
+testFilterRule("Zero value",
+               "sepia(0)", 1, "sepia(0)",
+               ["sepia(0)"]);
+
+testFilterRule("No values",
+               "sepia()", 1, "sepia()",
+               ["sepia()"]);
+
+testFilterRule("Multiple values",
+               "sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
+               ["sepia(0.5)", "sepia(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "sepia(0.5) grayscale(0.25)", 2, "sepia(0.5) grayscale(0.25)",
+               ["sepia(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "saturate(1)", 1, "saturate(1)",
+               ["saturate(1)"]);
+
+testFilterRule("Percentage value",
+               "saturate(50%)", 1, "saturate(50%)",
+               ["saturate(50%)"]);
+
+testFilterRule("Percentage value > 1",
+               "saturate(250%)", 1, "saturate(250%)",
+               ["saturate(250%)"]);
+
+testFilterRule("Float value converts to integer",
+               "saturate(1.0)", 1, "saturate(1)",
+               ["saturate(1)"]);
+
+testFilterRule("Input value > 1",
+               "saturate(5.5)", 1, "saturate(5.5)",
+               ["saturate(5.5)"]);
+
+testFilterRule("Zero value",
+               "saturate(0)", 1, "saturate(0)",
+               ["saturate(0)"]);
+
+testFilterRule("No values",
+               "saturate()", 1, "saturate()",
+               ["saturate()"]);
+
+testFilterRule("Multiple values",
+               "saturate(0.5) saturate(0.25)", 2, "saturate(0.5) saturate(0.25)",
+               ["saturate(0.5)", "saturate(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "saturate(0.5) grayscale(0.25)", 2, "saturate(0.5) grayscale(0.25)",
+               ["saturate(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Degrees value as integer",
+               "hue-rotate(10deg)", 1, "hue-rotate(10deg)",
+               ["hue-rotate(10deg)"]);
+
+testFilterRule("Degrees float value converts to integer",
+               "hue-rotate(10.0deg)", 1, "hue-rotate(10deg)",
+               ["hue-rotate(10deg)"]);
+
+testFilterRule("Radians value",
+               "hue-rotate(10rad)", 1, "hue-rotate(10rad)",
+               ["hue-rotate(10rad)"]);
+
+testFilterRule("Gradians value",
+               "hue-rotate(10grad)", 1, "hue-rotate(10grad)",
+               ["hue-rotate(10grad)"]);
+
+testFilterRule("Turns value",
+               "hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
+               ["hue-rotate(0.5turn)"]);
+
+testFilterRule("Zero value",
+               "hue-rotate(0)", 1, "hue-rotate(0deg)",
+              ["hue-rotate(0deg)"]);
+
+testFilterRule("No values",
+               "hue-rotate()", 1, "hue-rotate()",
+               ["hue-rotate()"]);
+
+testFilterRule("Rule combinations",
+               "hue-rotate(10deg) grayscale(0.25)", 2, "hue-rotate(10deg) grayscale(0.25)",
+               ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "invert(1)", 1, "invert(1)",
+               ["invert(1)"]);
+
+testFilterRule("Percentage value",
+               "invert(50%)", 1, "invert(50%)",
+               ["invert(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "invert(1.0)", 1, "invert(1)",
+               ["invert(1)"]);
+
+testFilterRule("Zero value",
+               "invert(0)", 1, "invert(0)",
+               ["invert(0)"]);
+
+testFilterRule("No values",
+               "invert()", 1, "invert()",
+               ["invert()"]);
+
+testFilterRule("Multiple values",
+               "invert(0.5) invert(0.25)", 2, "invert(0.5) invert(0.25)",
+               ["invert(0.5)", "invert(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "invert(0.5) grayscale(0.25)", 2, "invert(0.5) grayscale(0.25)",
+               ["invert(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+               "opacity(1)", 1, "opacity(1)",
+               ["opacity(1)"]);
+
+testFilterRule("Percentage value",
+               "opacity(50%)", 1, "opacity(50%)",
+               ["opacity(50%)"]);
+
+testFilterRule("Float value converts to integer",
+               "opacity(1.0)", 1, "opacity(1)",
+               ["opacity(1)"]);
+
+testFilterRule("Zero value",
+               "opacity(0)", 1, "opacity(0)",
+               ["opacity(0)"]);
+
+testFilterRule("No values",
+               "opacity()", 1, "opacity()",
+               ["opacity()"]);
+
+testFilterRule("Multiple values",
+               "opacity(0.5) opacity(0.25)", 2, "opacity(0.5) opacity(0.25)",
+               ["opacity(0.5)", "opacity(0.25)"]);
+
+testFilterRule("Rule combinations",
+               "opacity(0.5) grayscale(0.25)", 2, "opacity(0.5) grayscale(0.25)",
+               ["opacity(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Integer value",
+              "brightness(1)", 1, "brightness(1)",
+              ["brightness(1)"]);
+
+testFilterRule("Percentage value",
+              "brightness(50%)", 1, "brightness(50%)",
+              ["brightness(50%)"]);
+
+testFilterRule("Float value converts to integer",
+              "brightness(1.0)", 1, "brightness(1)",
+              ["brightness(1)"]);
+
+testFilterRule("Zero value",
+              "brightness(0)", 1, "brightness(0)",
+              ["brightness(0)"]);
+
+testFilterRule("No values",
+              "brightness()", 1, "brightness()",
+              ["brightness()"]);
+
+testFilterRule("Multiple values",
+              "brightness(0.5) brightness(0.25)", 2, "brightness(0.5) brightness(0.25)",
+              ["brightness(0.5)", "brightness(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "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)"]);
+
+testFilterRule("Parameter more than 100%",
+              "brightness(101%)", 1, "brightness(101%)",
+              ["brightness(101%)"]);
+
+testFilterRule("Rule combinations",
+              "grayscale(0.25) brightness(0.5)", 2, "grayscale(0.25) brightness(0.5)",
+              ["grayscale(0.25)", "brightness(0.5)"]);
+
+testFilterRule("Integer value",
+              "contrast(1)", 1, "contrast(1)",
+              ["contrast(1)"]);
+
+testFilterRule("Percentage value",
+              "contrast(50%)", 1, "contrast(50%)",
+              ["contrast(50%)"]);
+
+testFilterRule("Percentage value > 1",
+              "contrast(250%)", 1, "contrast(250%)",
+              ["contrast(250%)"]);
+
+testFilterRule("Float value converts to integer",
+              "contrast(1.0)", 1, "contrast(1)",
+              ["contrast(1)"]);
+
+testFilterRule("Zero value",
+              "contrast(0)", 1, "contrast(0)",
+              ["contrast(0)"]);
+
+testFilterRule("No values",
+              "contrast()", 1, "contrast()",
+              ["contrast()"]);
+
+testFilterRule("Value greater than one",
+              "contrast(2)", 1, "contrast(2)",
+              ["contrast(2)"]);
+
+testFilterRule("Multiple values",
+              "contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
+              ["contrast(0.5)", "contrast(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "contrast(0.5) grayscale(0.25)", 2, "contrast(0.5) grayscale(0.25)",
+              ["contrast(0.5)", "grayscale(0.25)"]);
+
+testFilterRule("Rule combinations",
+              "grayscale(0.25) contrast(0.5)", 2, "grayscale(0.25) contrast(0.5)",
+              ["grayscale(0.25)", "contrast(0.5)"]);
+
+testFilterRule("One zero to px",
+               "blur(0)", 1, "blur(0px)",
+               ["blur(0px)"]);
+
+testFilterRule("One length",
+               "blur(10px)", 1, "blur(10px)",
+               ["blur(10px)"]);
+
+testFilterRule("No values",
+               "blur()", 1, "blur()",
+               ["blur()"]);
+
+testFilterRule("Color then three values",
+              "drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
+              ["drop-shadow(red 1px 2px 3px)"]);
+
+testFilterRule("Three values then color",
+              "drop-shadow(1px 2px 3px red)", 1, "drop-shadow(red 1px 2px 3px)",
+              ["drop-shadow(red 1px 2px 3px)"]);
+
+testFilterRule("Color then three values with zero length",
+              "drop-shadow(#abc 0 0 0)", 1, "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)",
+              ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
+
+testFilterRule("Three values with zero length",
+              "drop-shadow(0 0 0)", 1, "drop-shadow(0px 0px 0px)",
+              ["drop-shadow(0px 0px 0px)"]);
+
+testFilterRule("Two values no color",
+              "drop-shadow(1px 2px)", 1, "drop-shadow(1px 2px)",
+              ["drop-shadow(1px 2px)"]);
+
+testFilterRule("Multiple operations",
+               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)", 8,
+               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)",
+               [
+                   "grayscale(0.5)",
+                   "sepia(0.25)",
+                   "saturate(0.75)",
+                   "hue-rotate(35deg)",
+                   "invert(0.2)",
+                   "opacity(0.9)",
+                   "blur(5px)",
+                   "drop-shadow(green 1px 2px 3px)"
+               ]);
+
+successfullyParsed = true;
+
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index 42b7bda..bbbd89f 100644 (file)
@@ -6,7 +6,26 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/filter-property.js"></script>
+<script>
+description("Test the parsing of the -webkit-filter property.");
+
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+var stylesheet = styleElement.sheet;
+
+// add a -webkit-filter property to the start of the stylesheet
+stylesheet.addRule("body", "-webkit-filter: url(#a) url(#b)", 0);
+
+var cssRule = stylesheet.cssRules.item(0);
+
+shouldBe("cssRule.type", "1");
+
+var declaration = cssRule.style;
+shouldBe("declaration.length", "1");
+shouldBe("declaration.getPropertyValue('-webkit-filter')", "'url(#a) url(#b)'");
+
+successfullyParsed = true;
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
diff --git a/LayoutTests/css3/filters/script-tests/TEMPLATE.html b/LayoutTests/css3/filters/script-tests/TEMPLATE.html
deleted file mode 100644 (file)
index 8b81518..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-</head>
-<body>
-<p id="description"></p>
-<div id="console"></div>
-<script src="YOUR_JS_FILE_HERE"></script>
-<script src="../../resources/js-test-post.js"></script>
-</body>
-</html>
diff --git a/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js b/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js
deleted file mode 100644 (file)
index 94ff5d9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-description("Test that no crash occurs when a SVG filter is deleted that was referenced by a deleted HTML element.");
-
-html = document.getElementById('html');
-html.parentNode.removeChild(html);
-svg = document.getElementById('svg');
-svg.parentNode.removeChild(svg);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js b/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js
deleted file mode 100644 (file)
index cf750d2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-description("Test that no crash occurs when a SVG filter is deleted that used to be referenced by an HTML element but is no longer.");
-
-html = document.getElementById('html');
-html.style = "";
-svg = document.getElementById('svg');
-svg.parentNode.removeChild(svg);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js b/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js
deleted file mode 100644 (file)
index c9832fe..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-description("Test the computed style of the filter property.");
-
-// These have to be global for the test helpers to see them.
-var stylesheet, filterStyle, subRule;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testComputedFilterRule(description, rule, expectedLength, expectedTypes, expectedTexts)
-{
-    debug("");
-    debug(description + " : " + rule);
-
-    stylesheet.insertRule("body { filter: " + rule + "; }", 0);
-
-    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue("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("No values",
-                       "grayscale()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                       ["grayscale(1)"]);
-
-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("No values",
-                       "sepia()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-                       ["sepia(1)"]);
-
-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("No values",
-                       "saturate()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-                       ["saturate(1)"]);
-
-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("No values",
-                       "hue-rotate()", 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("No values",
-                       "invert()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-                       ["invert(1)"]);
-
-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("No values",
-                       "opacity()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-                       ["opacity(1)"]);
-
-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("Integer value",
-                      "brightness(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "brightness(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "brightness(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("No values",
-                      "brightness()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("Multiple values",
-                      "brightness(0.5) brightness(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0.5)", "brightness(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "brightness(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["brightness(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("Integer value",
-                      "contrast(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Value greater than 1",
-                      "contrast(2)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(2)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "contrast(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "contrast(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0)"]);
-
-testComputedFilterRule("No values",
-                      "contrast()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Multiple values",
-                      "contrast(0.5) contrast(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0.5)", "contrast(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "contrast(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["contrast(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("One zero to px",
-                       "blur(0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(2em)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(32px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(5px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(5px)"]);
-
-testComputedFilterRule("No values",
-                       "blur()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("Color then three values",
-                       "drop-shadow(red 1px 2px 3px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Three values then color",
-                       "drop-shadow(1px 2px 3px red)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Color then three values with zero length",
-                       "drop-shadow(#abc 0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
-
-testComputedFilterRule("Three values with zero length",
-                       "drop-shadow(0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
-
-testComputedFilterRule("Two values no color",
-                       "drop-shadow(1px 2px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
-
-testComputedFilterRule("Multiple operations",
-                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
-                       [
-                           "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_BLUR",
-               ],
-                       [
-                           "grayscale(0.5)",
-                           "sepia(0.25)",
-                           "saturate(0.75)",
-                           "hue-rotate(35deg)",
-                           "invert(0.2)",
-                           "opacity(0.9)",
-                           "blur(5px)"
-               ]);
-
-testComputedFilterRule("Percentage values",
-                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
-                      [
-                          "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
-                          "WebKitCSSFilterValue.CSS_FILTER_SEPIA",
-                          "WebKitCSSFilterValue.CSS_FILTER_SATURATE",
-                          "WebKitCSSFilterValue.CSS_FILTER_INVERT",
-                          "WebKitCSSFilterValue.CSS_FILTER_OPACITY",
-                          "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS",
-                          "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"
-              ],
-                      [
-                          "grayscale(0.5)",
-                          "sepia(0.25)",
-                          "saturate(0.75)",
-                          "invert(0.2)",
-                          "opacity(0.9)",
-                          "brightness(0.6)",
-                          "contrast(0.3)"
-              ]);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js b/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js
deleted file mode 100644 (file)
index b99cb5e..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-description("Test the parsing of the -webkit-filter property.");
-
-// These have to be global for the test helpers to see them.
-var stylesheet, cssRule, declaration;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testInvalidFilterRule(description, rule)
-{
-    debug("");
-    debug(description + " : " + rule);
-
-    stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
-    cssRule = stylesheet.cssRules.item(0);
-  
-    shouldBe("cssRule.type", "1");
-
-    declaration = cssRule.style;
-    shouldBe("declaration.length", "0");
-    shouldBeEqualToString("declaration.getPropertyValue('-webkit-filter')", "");
-}
-
-testInvalidFilterRule("Too many parameters", "url(#a #b)");
-
-testInvalidFilterRule("Length instead of number", "grayscale(10px)");
-testInvalidFilterRule("Too many parameters", "grayscale(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "grayscale(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "grayscale(0.5,)");
-testInvalidFilterRule("Negative parameter", "grayscale(-0.5)");
-testInvalidFilterRule("Negative percent", "grayscale(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "grayscale(1.5)");
-
-testInvalidFilterRule("Too many parameters", "sepia(0.5 0.5 3.0)");
-testInvalidFilterRule("Too many parameters and commas", "sepia(0.1, 0.1)");
-testInvalidFilterRule("Trailing comma", "sepia(0.5,)");
-testInvalidFilterRule("Negative parameter", "sepia(-0.01)");
-testInvalidFilterRule("Negative percent", "sepia(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "sepia(10000)");
-
-testInvalidFilterRule("Length instead of number", "saturate(10px)");
-testInvalidFilterRule("Too many parameters", "saturate(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "saturate(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "saturate(0.5,)");
-testInvalidFilterRule("Negative parameter", "saturate(-0.5)");
-testInvalidFilterRule("Negative percent", "saturate(-10%)");
-
-testInvalidFilterRule("Bare number", "hue-rotate(10)");
-testInvalidFilterRule("Length", "hue-rotate(10px)");
-testInvalidFilterRule("Too many parameters", "hue-rotate(10deg 4)");
-testInvalidFilterRule("Too many parameters and commas", "hue-rotate(10deg, 5deg)");
-testInvalidFilterRule("Trailing comma", "hue-rotate(10deg,)");
-
-testInvalidFilterRule("Length instead of number", "invert(10px)");
-testInvalidFilterRule("Too many parameters", "invert(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "invert(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "invert(0.5,)");
-testInvalidFilterRule("Negative parameter", "invert(-0.5)");
-testInvalidFilterRule("Parameter out of bounds", "invert(1.5)");
-
-testInvalidFilterRule("Length instead of number", "opacity(10px)");
-testInvalidFilterRule("Too many parameters", "opacity(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "opacity(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "opacity(0.5,)");
-testInvalidFilterRule("Negative parameter", "opacity(-0.5)");
-testInvalidFilterRule("Negative percent", "opacity(-10%)");
-testInvalidFilterRule("Parameter out of bounds", "opacity(1.5)");
-
-testInvalidFilterRule("Length instead of number", "brightness(10px)");
-testInvalidFilterRule("Too many parameters", "brightness(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "brightness(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "brightness(0.5,)");
-
-testInvalidFilterRule("Length instead of number", "contrast(10px)");
-testInvalidFilterRule("Too many parameters", "contrast(0.5 0.5)");
-testInvalidFilterRule("Too many parameters and commas", "contrast(0.5, 0.5)");
-testInvalidFilterRule("Trailing comma", "contrast(0.5,)");
-testInvalidFilterRule("Negative parameter", "contrast(-0.5)");
-testInvalidFilterRule("Negative percent", "contrast(-10%)");
-
-testInvalidFilterRule("Bare number", "blur(1)");
-testInvalidFilterRule("Negative number", "blur(-1px)");
-testInvalidFilterRule("Percentage", "blur(10%)");
-testInvalidFilterRule("Too many parameters", "blur(1px 1px)");
-testInvalidFilterRule("Too many parameters and commas", "blur(1em, 1em)");
-testInvalidFilterRule("Commas", "blur(10px, 10px)");
-testInvalidFilterRule("Trailing comma", "blur(1em,)");
-
-testInvalidFilterRule("No values", "drop-shadow()");
-testInvalidFilterRule("Missing lengths", "drop-shadow(red)");
-testInvalidFilterRule("Not enough lengths", "drop-shadow(red 1px)");
-testInvalidFilterRule("Missing units", "drop-shadow(red 1 2 3)");
-testInvalidFilterRule("Inset", "drop-shadow(red 1px 2px 3px inset)");
-testInvalidFilterRule("Too many parameters", "drop-shadow(red 1px 2px 3px 4px)");
-testInvalidFilterRule("Commas", "drop-shadow(red, 1px, 2px, 3px)");
-testInvalidFilterRule("Negative radius", "drop-shadow(10px 10px -1px red)");
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/filter-property-parsing.js b/LayoutTests/css3/filters/script-tests/filter-property-parsing.js
deleted file mode 100644 (file)
index 69ec83f..0000000
+++ /dev/null
@@ -1,460 +0,0 @@
-description("Test the parsing of the filter property.");
-
-function jsWrapperClass(node)
-{
-    if (!node)
-        return "[null]";
-    var string = Object.prototype.toString.apply(node);
-    return string.substr(8, string.length - 9);
-}
-
-function shouldBeType(expression, className, prototypeName, constructorName)
-{
-    if (!prototypeName)
-        prototypeName = className + "Prototype";
-    if (!constructorName)
-        constructorName = className + "Constructor";
-    shouldBe("jsWrapperClass(" + expression + ")", "'" + className + "'");
-    shouldBe("jsWrapperClass(" + expression + ".__proto__)", "'" + prototypeName + "'");
-    shouldBe("jsWrapperClass(" + expression + ".constructor)", "'Function'");
-}
-
-// These have to be global for the test helpers to see them.
-var stylesheet, cssRule, declaration, filterRule, subRule;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testFilterRule(description, rule, expectedLength, expectedValue, expectedTypes, expectedTexts)
-{
-    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", "1");
-    shouldBe("declaration.getPropertyValue('filter')", "'" + expectedValue + "'");
-
-    filterRule = declaration.getPropertyCSSValue("filter");
-    shouldBeType("filterRule", "CSSValueList");
-  
-    shouldBe("filterRule.length", "" + expectedLength); // shouldBe expects string arguments
-  
-    if (filterRule) {
-        for (var i = 0; i < expectedLength; i++) {
-            subRule = filterRule[i];
-            shouldBe("subRule.operationType", expectedTypes[i]);
-            shouldBe("subRule.cssText", "'" + expectedTexts[i] + "'");
-        }
-    }
-}
-
-testFilterRule("Basic reference",
-               "url('#a')", 1, "url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)"]);
-
-testFilterRule("Bare unquoted reference converting to quoted form",
-               "url(#a)", 1, "url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)"]);
-
-testFilterRule("Multiple references",
-               "url('#a') url('#b')", 2, "url(#a) url(#b)",
-               ["WebKitCSSFilterValue.CSS_FILTER_REFERENCE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["url(#a)", "url(#b)"]);
-
-testFilterRule("Reference as 2nd value",
-               "grayscale(1) url('#a')", 2, "grayscale(1) url(#a)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_REFERENCE"],
-               ["grayscale(1)", "url(#a)"]);
-
-testFilterRule("Integer value",
-               "grayscale(1)", 1, "grayscale(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(1)"]);
-
-testFilterRule("Percentage value",
-               "grayscale(50%)", 1, "grayscale(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "grayscale(1.0)", 1, "grayscale(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(1)"]);
-
-testFilterRule("Zero value",
-               "grayscale(0)", 1, "grayscale(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(0)"]);
-
-testFilterRule("No values",
-               "grayscale()", 1, "grayscale()",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale()"]);
-
-testFilterRule("Multiple values",
-               "grayscale(0.5) grayscale(0.25)", 2, "grayscale(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["grayscale(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "sepia(1)", 1, "sepia(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(1)"]);
-
-testFilterRule("Percentage value",
-               "sepia(50%)", 1, "sepia(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "sepia(1.0)", 1, "sepia(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(1)"]);
-
-testFilterRule("Zero value",
-               "sepia(0)", 1, "sepia(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(0)"]);
-
-testFilterRule("No values",
-               "sepia()", 1, "sepia()",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia()"]);
-
-testFilterRule("Multiple values",
-               "sepia(0.5) sepia(0.25)", 2, "sepia(0.5) sepia(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-               ["sepia(0.5)", "sepia(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "sepia(0.5) grayscale(0.25)", 2, "sepia(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SEPIA", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["sepia(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "saturate(1)", 1, "saturate(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(1)"]);
-
-testFilterRule("Percentage value",
-               "saturate(50%)", 1, "saturate(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(50%)"]);
-
-testFilterRule("Percentage value > 1",
-               "saturate(250%)", 1, "saturate(250%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(250%)"]);
-
-testFilterRule("Float value converts to integer",
-               "saturate(1.0)", 1, "saturate(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(1)"]);
-
-testFilterRule("Input value > 1",
-               "saturate(5.5)", 1, "saturate(5.5)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(5.5)"]);
-
-testFilterRule("Zero value",
-               "saturate(0)", 1, "saturate(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(0)"]);
-
-testFilterRule("No values",
-               "saturate()", 1, "saturate()",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate()"]);
-
-testFilterRule("Multiple values",
-               "saturate(0.5) saturate(0.25)", 2, "saturate(0.5) saturate(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-               ["saturate(0.5)", "saturate(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "saturate(0.5) grayscale(0.25)", 2, "saturate(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_SATURATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["saturate(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Degrees value as integer",
-               "hue-rotate(10deg)", 1, "hue-rotate(10deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10deg)"]);
-
-testFilterRule("Degrees float value converts to integer",
-               "hue-rotate(10.0deg)", 1, "hue-rotate(10deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10deg)"]);
-
-testFilterRule("Radians value",
-               "hue-rotate(10rad)", 1, "hue-rotate(10rad)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10rad)"]);
-
-testFilterRule("Gradians value",
-               "hue-rotate(10grad)", 1, "hue-rotate(10grad)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(10grad)"]);
-
-testFilterRule("Turns value",
-               "hue-rotate(0.5turn)", 1, "hue-rotate(0.5turn)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(0.5turn)"]);
-
-testFilterRule("Zero value",
-               "hue-rotate(0)", 1, "hue-rotate(0deg)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate(0deg)"]);
-
-testFilterRule("No values",
-               "hue-rotate()", 1, "hue-rotate()",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE"],
-               ["hue-rotate()"]);
-
-testFilterRule("Rule combinations",
-               "hue-rotate(10deg) grayscale(0.25)", 2, "hue-rotate(10deg) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["hue-rotate(10deg)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "invert(1)", 1, "invert(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(1)"]);
-
-testFilterRule("Percentage value",
-               "invert(50%)", 1, "invert(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "invert(1.0)", 1, "invert(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(1)"]);
-
-testFilterRule("Zero value",
-               "invert(0)", 1, "invert(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(0)"]);
-
-testFilterRule("No values",
-               "invert()", 1, "invert()",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert()"]);
-
-testFilterRule("Multiple values",
-               "invert(0.5) invert(0.25)", 2, "invert(0.5) invert(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-               ["invert(0.5)", "invert(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "invert(0.5) grayscale(0.25)", 2, "invert(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_INVERT", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["invert(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-               "opacity(1)", 1, "opacity(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(1)"]);
-
-testFilterRule("Percentage value",
-               "opacity(50%)", 1, "opacity(50%)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(50%)"]);
-
-testFilterRule("Float value converts to integer",
-               "opacity(1.0)", 1, "opacity(1)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(1)"]);
-
-testFilterRule("Zero value",
-               "opacity(0)", 1, "opacity(0)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(0)"]);
-
-testFilterRule("No values",
-               "opacity()", 1, "opacity()",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity()"]);
-
-testFilterRule("Multiple values",
-               "opacity(0.5) opacity(0.25)", 2, "opacity(0.5) opacity(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-               ["opacity(0.5)", "opacity(0.25)"]);
-
-testFilterRule("Rule combinations",
-               "opacity(0.5) grayscale(0.25)", 2, "opacity(0.5) grayscale(0.25)",
-               ["WebKitCSSFilterValue.CSS_FILTER_OPACITY", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-               ["opacity(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Integer value",
-              "brightness(1)", 1, "brightness(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(1)"]);
-
-testFilterRule("Percentage value",
-              "brightness(50%)", 1, "brightness(50%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(50%)"]);
-
-testFilterRule("Float value converts to integer",
-              "brightness(1.0)", 1, "brightness(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(1)"]);
-
-testFilterRule("Zero value",
-              "brightness(0)", 1, "brightness(0)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(0)"]);
-
-testFilterRule("No values",
-              "brightness()", 1, "brightness()",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness()"]);
-
-testFilterRule("Multiple values",
-              "brightness(0.5) brightness(0.25)", 2, "brightness(0.5) brightness(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(0.5)", "brightness(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "brightness(0.5) grayscale(0.25)", 2, "brightness(0.5) grayscale(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-              ["brightness(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Parameter less than -100%",
-              "brightness(-1.1)", 1, "brightness(-1.1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(-1.1)"]);
-
-testFilterRule("Parameter more than 100%",
-              "brightness(101%)", 1, "brightness(101%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["brightness(101%)"]);
-
-testFilterRule("Rule combinations",
-              "grayscale(0.25) brightness(0.5)", 2, "grayscale(0.25) brightness(0.5)",
-              [ "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-              ["grayscale(0.25)", "brightness(0.5)"]);
-
-testFilterRule("Integer value",
-              "contrast(1)", 1, "contrast(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(1)"]);
-
-testFilterRule("Percentage value",
-              "contrast(50%)", 1, "contrast(50%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(50%)"]);
-
-testFilterRule("Percentage value > 1",
-              "contrast(250%)", 1, "contrast(250%)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(250%)"]);
-
-testFilterRule("Float value converts to integer",
-              "contrast(1.0)", 1, "contrast(1)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(1)"]);
-
-testFilterRule("Zero value",
-              "contrast(0)", 1, "contrast(0)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(0)"]);
-
-testFilterRule("No values",
-              "contrast()", 1, "contrast()",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast()"]);
-
-testFilterRule("Value greater than one",
-              "contrast(2)", 1, "contrast(2)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(2)"]);
-
-testFilterRule("Multiple values",
-              "contrast(0.5) contrast(0.25)", 2, "contrast(0.5) contrast(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["contrast(0.5)", "contrast(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "contrast(0.5) grayscale(0.25)", 2, "contrast(0.5) grayscale(0.25)",
-              ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-              ["contrast(0.5)", "grayscale(0.25)"]);
-
-testFilterRule("Rule combinations",
-              "grayscale(0.25) contrast(0.5)", 2, "grayscale(0.25) contrast(0.5)",
-              [ "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-              ["grayscale(0.25)", "contrast(0.5)"]);
-
-testFilterRule("One zero to px",
-               "blur(0)", 1, "blur(0px)",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur(0px)"]);
-
-testFilterRule("One length",
-               "blur(10px)", 1, "blur(10px)",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur(10px)"]);
-
-testFilterRule("No values",
-               "blur()", 1, "blur()",
-               ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-               ["blur()"]);
-
-testFilterRule("Color then three values",
-              "drop-shadow(red 1px 2px 3px)", 1, "drop-shadow(red 1px 2px 3px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(red 1px 2px 3px)"]);
-
-testFilterRule("Three values then color",
-              "drop-shadow(1px 2px 3px red)", 1, "drop-shadow(red 1px 2px 3px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(red 1px 2px 3px)"]);
-
-testFilterRule("Color then three values with zero length",
-              "drop-shadow(#abc 0 0 0)", 1, "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
-
-testFilterRule("Three values with zero length",
-              "drop-shadow(0 0 0)", 1, "drop-shadow(0px 0px 0px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(0px 0px 0px)"]);
-
-testFilterRule("Two values no color",
-              "drop-shadow(1px 2px)", 1, "drop-shadow(1px 2px)",
-              ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-              ["drop-shadow(1px 2px)"]);
-
-testFilterRule("Multiple operations",
-               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)", 8,
-               "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px) drop-shadow(green 1px 2px 3px)",
-               [
-                   "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_BLUR",
-                   "WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"
-               ],
-               [
-                   "grayscale(0.5)",
-                   "sepia(0.25)",
-                   "saturate(0.75)",
-                   "hue-rotate(35deg)",
-                   "invert(0.2)",
-                   "opacity(0.9)",
-                   "blur(5px)",
-                   "drop-shadow(green 1px 2px 3px)"
-               ]);
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/filter-property.js b/LayoutTests/css3/filters/script-tests/filter-property.js
deleted file mode 100644 (file)
index ec52794..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-description("Test the parsing of the -webkit-filter property.");
-
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-var stylesheet = styleElement.sheet;
-
-// add a -webkit-filter property to the start of the stylesheet
-stylesheet.addRule("body", "-webkit-filter: url(#a) url(#b)", 0);
-
-var cssRule = stylesheet.cssRules.item(0);
-
-shouldBe("cssRule.type", "1");
-
-var declaration = cssRule.style;
-shouldBe("declaration.length", "1");
-shouldBe("declaration.getPropertyValue('-webkit-filter')", "'url(#a) url(#b)'");
-
-successfullyParsed = true;
diff --git a/LayoutTests/css3/filters/script-tests/unprefixed.js b/LayoutTests/css3/filters/script-tests/unprefixed.js
deleted file mode 100644 (file)
index a3b883a..0000000
+++ /dev/null
@@ -1,383 +0,0 @@
-description("Test that -webkit-filter matches filter.");
-
-// These have to be global for the test helpers to see them.
-var stylesheet, filterStyle, subRule;
-var styleElement = document.createElement("style");
-document.head.appendChild(styleElement);
-stylesheet = styleElement.sheet;
-
-function testComputedFilterRule(description, rule, expectedLength, expectedTypes, expectedTexts)
-{
-    debug("");
-    debug(description + " : " + rule);
-
-    stylesheet.insertRule("body { -webkit-filter: " + rule + "; }", 0);
-
-    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue("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("No values",
-                       "grayscale()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                       ["grayscale(1)"]);
-
-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("No values",
-                       "sepia()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SEPIA"],
-                       ["sepia(1)"]);
-
-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("No values",
-                       "saturate()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_SATURATE"],
-                       ["saturate(1)"]);
-
-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("No values",
-                       "hue-rotate()", 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("No values",
-                       "invert()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_INVERT"],
-                       ["invert(1)"]);
-
-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("No values",
-                       "opacity()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_OPACITY"],
-                       ["opacity(1)"]);
-
-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("Integer value",
-                      "brightness(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "brightness(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "brightness(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("No values",
-                      "brightness()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0)"]);
-
-testComputedFilterRule("Multiple values",
-                      "brightness(0.5) brightness(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS"],
-                      ["brightness(0.5)", "brightness(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "brightness(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["brightness(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("Integer value",
-                      "contrast(1)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Value greater than 1",
-                      "contrast(2)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(2)"]);
-
-testComputedFilterRule("Float value converts to integer",
-                      "contrast(1.0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Zero value",
-                      "contrast(0)", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0)"]);
-
-testComputedFilterRule("No values",
-                      "contrast()", 1,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(1)"]);
-
-testComputedFilterRule("Multiple values",
-                      "contrast(0.5) contrast(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"],
-                      ["contrast(0.5)", "contrast(0.25)"]);
-
-testComputedFilterRule("Rule combinations",
-                      "contrast(0.5) grayscale(0.25)", 2,
-                      ["WebKitCSSFilterValue.CSS_FILTER_CONTRAST", "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE"],
-                      ["contrast(0.5)", "grayscale(0.25)"]);
-
-testComputedFilterRule("One zero to px",
-                       "blur(0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(2em)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(32px)"]);
-
-testComputedFilterRule("One length",
-                       "blur(5px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(5px)"]);
-
-testComputedFilterRule("No values",
-                       "blur()", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_BLUR"],
-                       ["blur(0px)"]);
-
-testComputedFilterRule("Color then three values",
-                       "drop-shadow(red 1px 2px 3px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Three values then color",
-                       "drop-shadow(1px 2px 3px red)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
-
-testComputedFilterRule("Color then three values with zero length",
-                       "drop-shadow(#abc 0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
-
-testComputedFilterRule("Three values with zero length",
-                       "drop-shadow(0 0 0)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
-
-testComputedFilterRule("Two values no color",
-                       "drop-shadow(1px 2px)", 1,
-                       ["WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW"],
-                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
-
-testComputedFilterRule("Multiple operations",
-                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
-                       [
-                           "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_BLUR",
-               ],
-                       [
-                           "grayscale(0.5)",
-                           "sepia(0.25)",
-                           "saturate(0.75)",
-                           "hue-rotate(35deg)",
-                           "invert(0.2)",
-                           "opacity(0.9)",
-                           "blur(5px)"
-               ]);
-
-testComputedFilterRule("Percentage values",
-                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
-                      [
-                          "WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE",
-                          "WebKitCSSFilterValue.CSS_FILTER_SEPIA",
-                          "WebKitCSSFilterValue.CSS_FILTER_SATURATE",
-                          "WebKitCSSFilterValue.CSS_FILTER_INVERT",
-                          "WebKitCSSFilterValue.CSS_FILTER_OPACITY",
-                          "WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS",
-                          "WebKitCSSFilterValue.CSS_FILTER_CONTRAST"
-              ],
-                      [
-                          "grayscale(0.5)",
-                          "sepia(0.25)",
-                          "saturate(0.75)",
-                          "invert(0.2)",
-                          "opacity(0.9)",
-                          "brightness(0.6)",
-                          "contrast(0.3)"
-              ]);
-
-successfullyParsed = true;
index 78ca4e3..40a9a9a 100644 (file)
@@ -6,384 +6,291 @@ 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)'
+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)'
+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)'
+PASS subRule.cssText is "url(#a)"
+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)'
+PASS subRule.cssText is "grayscale(1)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "grayscale(0)"
 
 No values : grayscale()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
+PASS subRule.cssText is "grayscale(1)"
 
 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)'
+PASS subRule.cssText is "grayscale(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "sepia(0)"
 
 No values : sepia()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
+PASS subRule.cssText is "sepia(1)"
 
 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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+PASS subRule.cssText is "sepia(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "saturate(0)"
 
 No values : saturate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
+PASS subRule.cssText is "saturate(1)"
 
 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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+PASS subRule.cssText is "saturate(0.5)"
+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)'
+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)'
+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)'
+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)'
+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)'
+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)'
+PASS subRule.cssText is "hue-rotate(0deg)"
 
 No values : hue-rotate()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
+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)'
+PASS subRule.cssText is "hue-rotate(10deg)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "invert(0)"
 
 No values : invert()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
+PASS subRule.cssText is "invert(1)"
 
 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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+PASS subRule.cssText is "invert(0.5)"
+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)'
+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)'
+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)'
+PASS subRule.cssText is "opacity(0)"
 
 No values : opacity()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
+PASS subRule.cssText is "opacity(1)"
 
 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)'
+PASS subRule.cssText is "opacity(0.5)"
+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)'
+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : brightness(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Float value converts to integer : brightness(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
+PASS subRule.cssText is "brightness(1)"
 
 Zero value : brightness(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 No values : brightness()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
+PASS subRule.cssText is "brightness(0)"
 
 Multiple values : brightness(0.5) brightness(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
 
 Rule combinations : brightness(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 Integer value : contrast(1)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Value greater than 1 : contrast(2)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
+PASS subRule.cssText is "contrast(2)"
 
 Float value converts to integer : contrast(1.0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Zero value : contrast(0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
+PASS subRule.cssText is "contrast(0)"
 
 No values : contrast()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
+PASS subRule.cssText is "contrast(1)"
 
 Multiple values : contrast(0.5) contrast(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
 
 Rule combinations : contrast(0.5) grayscale(0.25)
 PASS filterStyle.length is 2
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.5)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0.25)'
+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
 
 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)'
+PASS subRule.cssText is "blur(0px)"
 
 One length : blur(2em)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
+PASS subRule.cssText is "blur(32px)"
 
 One length : blur(5px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "blur(5px)"
 
 No values : blur()
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
+PASS subRule.cssText is "blur(0px)"
 
 Color then three values : drop-shadow(red 1px 2px 3px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Three values then color : drop-shadow(1px 2px 3px red)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
 
 Color then three values with zero length : drop-shadow(#abc 0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
 
 Three values with zero length : drop-shadow(0 0 0)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
 
 Two values no color : drop-shadow(1px 2px)
 PASS filterStyle.length is 1
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
 
 Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
 PASS filterStyle.length is 7
-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_BLUR
-PASS subRule.cssText is 'blur(5px)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "hue-rotate(35deg)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "blur(5px)"
 
 Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
 PASS filterStyle.length is 7
-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_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_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0.6)'
-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0.3)'
+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
+PASS subRule.cssText is "saturate(0.75)"
+PASS subRule.cssText is "invert(0.2)"
+PASS subRule.cssText is "opacity(0.9)"
+PASS subRule.cssText is "brightness(0.6)"
+PASS subRule.cssText is "contrast(0.3)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index af497be..987f9eb 100644 (file)
@@ -6,7 +6,309 @@
 <body>
 <p id="description"></p>
 <div id="console"></div>
-<script src="script-tests/unprefixed.js"></script>
+<script>
+description("Test that -webkit-filter matches filter.");
+
+// These have to be global for the test helpers to see them.
+var stylesheet, filterStyle, subRule;
+var styleElement = document.createElement("style");
+document.head.appendChild(styleElement);
+stylesheet = styleElement.sheet;
+
+function testComputedFilterRule(description, rule, expectedLength, expectedTexts)
+{
+    debug("");
+    debug(`${description} : ${rule}`);
+
+    stylesheet.insertRule(`body { -webkit-filter: ${rule}; }`, 0);
+
+    filterStyle = window.getComputedStyle(document.body).getPropertyCSSValue("filter");
+    shouldBe("filterStyle.length", "" + expectedLength);
+    for (var i = 0; i < expectedLength; i++) {
+        subRule = filterStyle[i];
+        shouldBe("subRule.cssText", `"${expectedTexts[i]}"`);
+    }
+    stylesheet.deleteRule(0);
+}
+
+testComputedFilterRule("Basic reference",
+                       "url('#a')", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Bare unquoted reference converting to quoted form",
+                       "url(#a)", 1,
+                       ["url(#a)"]);
+
+testComputedFilterRule("Multiple references",
+                       "url('#a') url('#b')", 2,
+                       ["url(#a)", "url(#b)"]);
+
+testComputedFilterRule("Reference as 2nd value",
+                       "grayscale(1) url('#a')", 2,
+                       ["grayscale(1)", "url(#a)"]);
+
+testComputedFilterRule("Integer value",
+                       "grayscale(1)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "grayscale(1.0)", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "grayscale(0)", 1,
+                       ["grayscale(0)"]);
+
+testComputedFilterRule("No values",
+                       "grayscale()", 1,
+                       ["grayscale(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "grayscale(0.5) grayscale(0.25)", 2,
+                       ["grayscale(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "sepia(1)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "sepia(1.0)", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "sepia(0)", 1,
+                       ["sepia(0)"]);
+
+testComputedFilterRule("No values",
+                       "sepia()", 1,
+                       ["sepia(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "sepia(0.5) sepia(0.25)", 2,
+                       ["sepia(0.5)", "sepia(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "sepia(0.5) grayscale(0.25)", 2,
+                       ["sepia(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "saturate(1)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "saturate(1.0)", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "saturate(0)", 1,
+                       ["saturate(0)"]);
+
+testComputedFilterRule("No values",
+                       "saturate()", 1,
+                       ["saturate(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "saturate(0.5) saturate(0.25)", 2,
+                       ["saturate(0.5)", "saturate(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "saturate(0.5) grayscale(0.25)", 2,
+                       ["saturate(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Degrees value as integer",
+                       "hue-rotate(10deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Degrees float value converts to integer",
+                       "hue-rotate(10.0deg)", 1,
+                       ["hue-rotate(10deg)"]);
+
+testComputedFilterRule("Radians value",
+                       "hue-rotate(10rad)", 1,
+                       ["hue-rotate(572.9577951308232deg)"]);
+
+testComputedFilterRule("Gradians value",
+                       "hue-rotate(10grad)", 1,
+                       ["hue-rotate(9deg)"]);
+
+testComputedFilterRule("Turns value",
+                       "hue-rotate(0.5turn)", 1,
+                       ["hue-rotate(180deg)"]);
+
+testComputedFilterRule("Zero value",
+                       "hue-rotate(0)", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("No values",
+                       "hue-rotate()", 1,
+                       ["hue-rotate(0deg)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "hue-rotate(10deg) grayscale(0.25)", 2,
+                       ["hue-rotate(10deg)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "invert(1)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "invert(1.0)", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "invert(0)", 1,
+                       ["invert(0)"]);
+
+testComputedFilterRule("No values",
+                       "invert()", 1,
+                       ["invert(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "invert(0.5) invert(0.25)", 2,
+                       ["invert(0.5)", "invert(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "invert(0.5) grayscale(0.25)", 2,
+                       ["invert(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                       "opacity(1)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                       "opacity(1.0)", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Zero value",
+                       "opacity(0)", 1,
+                       ["opacity(0)"]);
+
+testComputedFilterRule("No values",
+                       "opacity()", 1,
+                       ["opacity(1)"]);
+
+testComputedFilterRule("Multiple values",
+                       "opacity(0.5) opacity(0.25)", 2,
+                       ["opacity(0.5)", "opacity(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                       "opacity(0.5) grayscale(0.25)", 2,
+                       ["opacity(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "brightness(1)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "brightness(1.0)", 1,
+                      ["brightness(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "brightness(0)", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("No values",
+                      "brightness()", 1,
+                      ["brightness(0)"]);
+
+testComputedFilterRule("Multiple values",
+                      "brightness(0.5) brightness(0.25)", 2,
+                      ["brightness(0.5)", "brightness(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "brightness(0.5) grayscale(0.25)", 2,
+                      ["brightness(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("Integer value",
+                      "contrast(1)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Value greater than 1",
+                      "contrast(2)", 1,
+                      ["contrast(2)"]);
+
+testComputedFilterRule("Float value converts to integer",
+                      "contrast(1.0)", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Zero value",
+                      "contrast(0)", 1,
+                      ["contrast(0)"]);
+
+testComputedFilterRule("No values",
+                      "contrast()", 1,
+                      ["contrast(1)"]);
+
+testComputedFilterRule("Multiple values",
+                      "contrast(0.5) contrast(0.25)", 2,
+                      ["contrast(0.5)", "contrast(0.25)"]);
+
+testComputedFilterRule("Rule combinations",
+                      "contrast(0.5) grayscale(0.25)", 2,
+                      ["contrast(0.5)", "grayscale(0.25)"]);
+
+testComputedFilterRule("One zero to px",
+                       "blur(0)", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(2em)", 1,
+                       ["blur(32px)"]);
+
+testComputedFilterRule("One length",
+                       "blur(5px)", 1,
+                       ["blur(5px)"]);
+
+testComputedFilterRule("No values",
+                       "blur()", 1,
+                       ["blur(0px)"]);
+
+testComputedFilterRule("Color then three values",
+                       "drop-shadow(red 1px 2px 3px)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Three values then color",
+                       "drop-shadow(1px 2px 3px red)", 1,
+                       ["drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"]);
+
+testComputedFilterRule("Color then three values with zero length",
+                       "drop-shadow(#abc 0 0 0)", 1,
+                       ["drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"]);
+
+testComputedFilterRule("Three values with zero length",
+                       "drop-shadow(0 0 0)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"]);
+
+testComputedFilterRule("Two values no color",
+                       "drop-shadow(1px 2px)", 1,
+                       ["drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"]);
+
+testComputedFilterRule("Multiple operations",
+                       "grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)", 7,
+                       [
+                           "grayscale(0.5)",
+                           "sepia(0.25)",
+                           "saturate(0.75)",
+                           "hue-rotate(35deg)",
+                           "invert(0.2)",
+                           "opacity(0.9)",
+                           "blur(5px)"
+                       ]);
+
+testComputedFilterRule("Percentage values",
+                      "grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)", 7,
+                      [
+                          "grayscale(0.5)",
+                          "sepia(0.25)",
+                          "saturate(0.75)",
+                          "invert(0.2)",
+                          "opacity(0.9)",
+                          "brightness(0.6)",
+                          "contrast(0.3)"
+                      ]);
+
+successfullyParsed = true;
+</script>
 <script src="../../resources/js-test-post.js"></script>
 </body>
 </html>
index cfc94c0..725642a 100644 (file)
@@ -1973,11 +1973,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index 8a9f6ce..0b2b80e 100644 (file)
@@ -2048,11 +2048,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index c4298e9..d02f090 100644 (file)
@@ -2303,11 +2303,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index 03e2324..d24bf44 100644 (file)
@@ -2343,11 +2343,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index a6be6f1..bbeac9b 100644 (file)
@@ -2368,11 +2368,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index 5f77888..b0aa2f9 100644 (file)
@@ -2368,11 +2368,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index beffb19..83677b5 100644 (file)
@@ -1768,11 +1768,6 @@ PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnPrope
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').value is WebKitCSSFilterValue
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('get') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').hasOwnProperty('set') is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').enumerable is false
-PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSFilterValue').configurable is true
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
 PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
index c1c7027..5a0974d 100644 (file)
@@ -368,7 +368,6 @@ set(WebCore_NON_SVG_IDL_FILES
     css/StyleMedia.idl
     css/StyleSheet.idl
     css/StyleSheetList.idl
-    css/WebKitCSSFilterValue.idl
     css/WebKitCSSMatrix.idl
     css/WebKitCSSRegionRule.idl
     css/WebKitCSSTransformValue.idl
@@ -1370,7 +1369,6 @@ set(WebCore_SOURCES
     css/StyleSheetList.cpp
     css/TransformFunctions.cpp
     css/ViewportStyleResolver.cpp
-    css/WebKitCSSFilterValue.cpp
     css/WebKitCSSMatrix.cpp
     css/WebKitCSSRegionRule.cpp
     css/WebKitCSSTransformValue.cpp
diff --git