<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208253] trunk</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208253">208253</a></dd>
<dt>Author</dt> <dd>dino@apple.com</dd>
<dt>Date</dt> <dd>2016-11-01 15:31:52 -0700 (Tue, 01 Nov 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove WebKitCSSFilterValue to make Hyatt happy
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:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropaddremoveaddbackdropfilterhtml">trunk/LayoutTests/css3/filters/backdrop/add-remove-add-backdrop-filter.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertycomputedstyleexpectedtxt">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertycomputedstylehtml">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsingexpectedtxt">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsinginvalidhtml">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-invalid.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsinghtml">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyhtml">trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property.html</a></li>
<li><a href="#trunkLayoutTestscss3filterseffectreferencedeletecrashhtml">trunk/LayoutTests/css3/filters/effect-reference-delete-crash.html</a></li>
<li><a href="#trunkLayoutTestscss3filterseffectreferenceresetstyledeletecrashhtml">trunk/LayoutTests/css3/filters/effect-reference-reset-style-delete-crash.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertycomputedstyleexpectedtxt">trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertycomputedstylehtml">trunk/LayoutTests/css3/filters/filter-property-computed-style.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertyparsingexpectedtxt">trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertyparsinginvalidhtml">trunk/LayoutTests/css3/filters/filter-property-parsing-invalid.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertyparsinghtml">trunk/LayoutTests/css3/filters/filter-property-parsing.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersfilterpropertyhtml">trunk/LayoutTests/css3/filters/filter-property.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersunprefixedexpectedtxt">trunk/LayoutTests/css3/filters/unprefixed-expected.txt</a></li>
<li><a href="#trunkLayoutTestscss3filtersunprefixedhtml">trunk/LayoutTests/css3/filters/unprefixed.html</a></li>
<li><a href="#trunkLayoutTestsjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformefljsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacwk1jsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkLayoutTestsplatformwinjsdomglobalconstructorsattributesexpectedtxt">trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcescpp">trunk/Source/WebCore/DerivedSources.cpp</a></li>
<li><a href="#trunkSourceWebCoreDerivedSourcesmake">trunk/Source/WebCore/DerivedSources.make</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSValueCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSAllInOnecpp">trunk/Source/WebCore/css/CSSAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSComputedStyleDeclarationcpp">trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSValuecpp">trunk/Source/WebCore/css/CSSValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssCSSValueh">trunk/Source/WebCore/css/CSSValue.h</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolvercpp">trunk/Source/WebCore/css/StyleResolver.cpp</a></li>
<li><a href="#trunkSourceWebCorecssStyleResolverh">trunk/Source/WebCore/css/StyleResolver.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParsercpp">trunk/Source/WebCore/css/parser/CSSParser.cpp</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSParserh">trunk/Source/WebCore/css/parser/CSSParser.h</a></li>
<li><a href="#trunkSourceWebCorecssparserCSSPropertyParsercpp">trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertycomputedstylejs">trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyparsinginvalidjs">trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyparsingjs">trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyjs">trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsTEMPLATEhtml">trunk/LayoutTests/css3/filters/script-tests/TEMPLATE.html</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestseffectreferencedeletecrashjs">trunk/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestseffectreferenceresetstyledeletecrashjs">trunk/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsfilterpropertycomputedstylejs">trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsfilterpropertyparsinginvalidjs">trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsfilterpropertyparsingjs">trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsfilterpropertyjs">trunk/LayoutTests/css3/filters/script-tests/filter-property.js</a></li>
<li><a href="#trunkLayoutTestscss3filtersscripttestsunprefixedjs">trunk/LayoutTests/css3/filters/script-tests/unprefixed.js</a></li>
<li><a href="#trunkSourceWebCorecssWebKitCSSFilterValuecpp">trunk/Source/WebCore/css/WebKitCSSFilterValue.cpp</a></li>
<li><a href="#trunkSourceWebCorecssWebKitCSSFilterValueh">trunk/Source/WebCore/css/WebKitCSSFilterValue.h</a></li>
<li><a href="#trunkSourceWebCorecssWebKitCSSFilterValueidl">trunk/Source/WebCore/css/WebKitCSSFilterValue.idl</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/ChangeLog        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,3 +1,47 @@
</span><ins>+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:
+
</ins><span class="cx"> 2016-11-01 Ryan Haddad <ryanhaddad@apple.com>
</span><span class="cx">
</span><span class="cx"> Marking fast/preloader/image-srcset.html as flaky on macOS.
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropaddremoveaddbackdropfilterhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/add-remove-add-backdrop-filter.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/add-remove-add-backdrop-filter.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/add-remove-add-backdrop-filter.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> <script>
</span><span class="cx"> if (window.testRunner)
</span><span class="cx"> testRunner.waitUntilDone();
</span><del>-
</del><ins>+
</ins><span class="cx"> function doTest()
</span><span class="cx"> {
</span><span class="cx"> var backdrop = document.getElementById('blur');
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertycomputedstyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,384 +6,291 @@
</span><span class="cx">
</span><span class="cx"> Basic reference : url('#a')
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Bare unquoted reference converting to quoted form : url(#a)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Multiple references : url('#a') url('#b')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
</ins><span class="cx">
</span><span class="cx"> Reference as 2nd value : grayscale(1) url('#a')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Integer value : grayscale(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : grayscale(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : grayscale(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
</del><ins>+PASS subRule.cssText is "grayscale(0)"
</ins><span class="cx">
</span><span class="cx"> No values : grayscale()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : grayscale(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : sepia(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : sepia(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : sepia(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
</del><ins>+PASS subRule.cssText is "sepia(0)"
</ins><span class="cx">
</span><span class="cx"> No values : sepia()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : sepia(0.5) sepia(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : sepia(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : saturate(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : saturate(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : saturate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
</del><ins>+PASS subRule.cssText is "saturate(0)"
</ins><span class="cx">
</span><span class="cx"> No values : saturate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : saturate(0.5) saturate(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : saturate(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Degrees value as integer : hue-rotate(10deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Degrees float value converts to integer : hue-rotate(10.0deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Radians value : hue-rotate(10rad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(572.9577951308232deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
</ins><span class="cx">
</span><span class="cx"> Gradians value : hue-rotate(10grad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(9deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(9deg)"
</ins><span class="cx">
</span><span class="cx"> Turns value : hue-rotate(0.5turn)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(180deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(180deg)"
</ins><span class="cx">
</span><span class="cx"> Zero value : hue-rotate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> No values : hue-rotate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : hue-rotate(10deg) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : invert(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : invert(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : invert(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
</del><ins>+PASS subRule.cssText is "invert(0)"
</ins><span class="cx">
</span><span class="cx"> No values : invert()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : invert(0.5) invert(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : invert(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : opacity(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : opacity(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : opacity(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
</del><ins>+PASS subRule.cssText is "opacity(0)"
</ins><span class="cx">
</span><span class="cx"> No values : opacity()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : opacity(0.5) opacity(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : opacity(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : brightness(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : brightness(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : brightness(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> No values : brightness()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : brightness(0.5) brightness(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : brightness(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : contrast(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Value greater than 1 : contrast(2)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
</del><ins>+PASS subRule.cssText is "contrast(2)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : contrast(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : contrast(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
</del><ins>+PASS subRule.cssText is "contrast(0)"
</ins><span class="cx">
</span><span class="cx"> No values : contrast()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : contrast(0.5) contrast(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : contrast(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> One zero to px : blur(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(2em)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
</del><ins>+PASS subRule.cssText is "blur(32px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(5px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
</del><ins>+PASS subRule.cssText is "blur(5px)"
</ins><span class="cx">
</span><span class="cx"> No values : blur()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values : drop-shadow(red 1px 2px 3px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Three values then color : drop-shadow(1px 2px 3px red)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values with zero length : drop-shadow(#abc 0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Three values with zero length : drop-shadow(0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Two values no color : drop-shadow(1px 2px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
</ins><span class="cx">
</span><span class="cx"> Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx">
</span><span class="cx"> Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertycomputedstylehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,309 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/backdropfilter-property-computed-style.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -7,899 +7,797 @@
</span><span class="cx"> Basic reference : url('#a')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Bare unquoted reference converting to quoted form : url(#a)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Multiple references : url('#a') url('#b')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'url(#a) url(#b)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "url(#a) url(#b)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
</ins><span class="cx">
</span><span class="cx"> Reference as 2nd value : grayscale(1) url('#a')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1) url(#a)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1) url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Integer value : grayscale(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : grayscale(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(50%)'
</del><ins>+PASS subRule.cssText is "grayscale(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : grayscale(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : grayscale(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
</del><ins>+PASS subRule.cssText is "grayscale(0)"
</ins><span class="cx">
</span><span class="cx"> No values : grayscale()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale()'
</del><ins>+PASS subRule.cssText is "grayscale()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : grayscale(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : sepia(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : sepia(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(50%)'
</del><ins>+PASS subRule.cssText is "sepia(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : sepia(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : sepia(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
</del><ins>+PASS subRule.cssText is "sepia(0)"
</ins><span class="cx">
</span><span class="cx"> No values : sepia()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia()'
</del><ins>+PASS subRule.cssText is "sepia()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : sepia(0.5) sepia(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) sepia(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) sepia(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : sepia(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'sepia(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "sepia(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : saturate(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : saturate(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(50%)'
</del><ins>+PASS subRule.cssText is "saturate(50%)"
</ins><span class="cx">
</span><span class="cx"> Percentage value > 1 : saturate(250%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(250%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(250%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(250%)'
</del><ins>+PASS subRule.cssText is "saturate(250%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : saturate(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Input value > 1 : saturate(5.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(5.5)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(5.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(5.5)'
</del><ins>+PASS subRule.cssText is "saturate(5.5)"
</ins><span class="cx">
</span><span class="cx"> Zero value : saturate(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
</del><ins>+PASS subRule.cssText is "saturate(0)"
</ins><span class="cx">
</span><span class="cx"> No values : saturate()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate()'
</del><ins>+PASS subRule.cssText is "saturate()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : saturate(0.5) saturate(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) saturate(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) saturate(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : saturate(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'saturate(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "saturate(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Degrees value as integer : hue-rotate(10deg)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Degrees float value converts to integer : hue-rotate(10.0deg)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Radians value : hue-rotate(10rad)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10rad)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10rad)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10rad)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10rad)"
</ins><span class="cx">
</span><span class="cx"> Gradians value : hue-rotate(10grad)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10grad)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10grad)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10grad)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10grad)"
</ins><span class="cx">
</span><span class="cx"> Turns value : hue-rotate(0.5turn)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0.5turn)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0.5turn)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0.5turn)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0.5turn)"
</ins><span class="cx">
</span><span class="cx"> Zero value : hue-rotate(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(0deg)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(0deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> No values : hue-rotate()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate()'
</del><ins>+PASS subRule.cssText is "hue-rotate()"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : hue-rotate(10deg) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'hue-rotate(10deg) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "hue-rotate(10deg) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : invert(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : invert(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(50%)'
</del><ins>+PASS subRule.cssText is "invert(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : invert(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : invert(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
</del><ins>+PASS subRule.cssText is "invert(0)"
</ins><span class="cx">
</span><span class="cx"> No values : invert()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert()'
</del><ins>+PASS subRule.cssText is "invert()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : invert(0.5) invert(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) invert(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) invert(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : invert(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'invert(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "invert(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : opacity(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : opacity(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(50%)'
</del><ins>+PASS subRule.cssText is "opacity(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : opacity(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : opacity(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
</del><ins>+PASS subRule.cssText is "opacity(0)"
</ins><span class="cx">
</span><span class="cx"> No values : opacity()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity()'
</del><ins>+PASS subRule.cssText is "opacity()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : opacity(0.5) opacity(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) opacity(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) opacity(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : opacity(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'opacity(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "opacity(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : brightness(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : brightness(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(50%)'
</del><ins>+PASS subRule.cssText is "brightness(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : brightness(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : brightness(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> No values : brightness()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness()'
</del><ins>+PASS subRule.cssText is "brightness()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : brightness(0.5) brightness(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) brightness(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) brightness(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : brightness(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Parameter less than -100% : brightness(-1.1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(-1.1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(-1.1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(-1.1)'
</del><ins>+PASS subRule.cssText is "brightness(-1.1)"
</ins><span class="cx">
</span><span class="cx"> Parameter more than 100% : brightness(101%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'brightness(101%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "brightness(101%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(101%)'
</del><ins>+PASS subRule.cssText is "brightness(101%)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : grayscale(0.25) brightness(0.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) brightness(0.5)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) brightness(0.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "brightness(0.5)"
</ins><span class="cx">
</span><span class="cx"> Integer value : contrast(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : contrast(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(50%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(50%)'
</del><ins>+PASS subRule.cssText is "contrast(50%)"
</ins><span class="cx">
</span><span class="cx"> Percentage value > 1 : contrast(250%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(250%)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(250%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(250%)'
</del><ins>+PASS subRule.cssText is "contrast(250%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : contrast(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(1)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : contrast(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
</del><ins>+PASS subRule.cssText is "contrast(0)"
</ins><span class="cx">
</span><span class="cx"> No values : contrast()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast()'
</del><ins>+PASS subRule.cssText is "contrast()"
</ins><span class="cx">
</span><span class="cx"> Value greater than one : contrast(2)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(2)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(2)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
</del><ins>+PASS subRule.cssText is "contrast(2)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : contrast(0.5) contrast(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) contrast(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) contrast(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : contrast(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'contrast(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "contrast(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : grayscale(0.25) contrast(0.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'grayscale(0.25) contrast(0.5)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "grayscale(0.25) contrast(0.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "contrast(0.5)"
</ins><span class="cx">
</span><span class="cx"> One zero to px : blur(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(0px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(10px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur(10px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur(10px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(10px)'
</del><ins>+PASS subRule.cssText is "blur(10px)"
</ins><span class="cx">
</span><span class="cx"> No values : blur()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'blur()'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "blur()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur()'
</del><ins>+PASS subRule.cssText is "blur()"
</ins><span class="cx">
</span><span class="cx"> Color then three values : drop-shadow(red 1px 2px 3px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Three values then color : drop-shadow(1px 2px 3px red)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values with zero length : drop-shadow(#abc 0 0 0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Three values with zero length : drop-shadow(0 0 0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(0px 0px 0px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(0px 0px 0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Two values no color : drop-shadow(1px 2px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('-webkit-backdrop-filter') is 'drop-shadow(1px 2px)'
</del><ins>+PASS declaration.getPropertyValue('-webkit-backdrop-filter') is "drop-shadow(1px 2px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(1px 2px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(1px 2px)"
</ins><span class="cx">
</span><span class="cx"> 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)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 8
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsinginvalidhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-invalid.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-invalid.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing-invalid.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,107 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/backdropfilter-property-parsing-invalid.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyparsinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property-parsing.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,382 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/backdropfilter-property-parsing.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropbackdropfilterpropertyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/backdropfilter-property.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,26 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/backdropfilter-property.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertycomputedstylejs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-computed-style.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,383 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyparsinginvalidjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing-invalid.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyparsingjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property-parsing.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,460 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersbackdropscripttestsbackdropfilterpropertyjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/backdrop/script-tests/backdropfilter-property.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filterseffectreferencedeletecrashhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/effect-reference-delete-crash.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/effect-reference-delete-crash.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/effect-reference-delete-crash.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -12,7 +12,16 @@
</span><span class="cx"> </filter>
</span><span class="cx"> </defs>
</span><span class="cx"> </svg>
</span><del>- <script src="script-tests/effect-reference-delete-crash.js"></script>
</del><ins>+ <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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filterseffectreferenceresetstyledeletecrashhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/effect-reference-reset-style-delete-crash.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/effect-reference-reset-style-delete-crash.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/effect-reference-reset-style-delete-crash.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -12,7 +12,16 @@
</span><span class="cx"> </filter>
</span><span class="cx"> </defs>
</span><span class="cx"> </svg>
</span><del>- <script src="script-tests/effect-reference-delete-crash.js"></script>
</del><ins>+ <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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertycomputedstyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,384 +6,291 @@
</span><span class="cx">
</span><span class="cx"> Basic reference : url('#a')
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Bare unquoted reference converting to quoted form : url(#a)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Multiple references : url('#a') url('#b')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
</ins><span class="cx">
</span><span class="cx"> Reference as 2nd value : grayscale(1) url('#a')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Integer value : grayscale(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : grayscale(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : grayscale(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
</del><ins>+PASS subRule.cssText is "grayscale(0)"
</ins><span class="cx">
</span><span class="cx"> No values : grayscale()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : grayscale(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : sepia(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : sepia(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : sepia(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
</del><ins>+PASS subRule.cssText is "sepia(0)"
</ins><span class="cx">
</span><span class="cx"> No values : sepia()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : sepia(0.5) sepia(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : sepia(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : saturate(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : saturate(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : saturate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
</del><ins>+PASS subRule.cssText is "saturate(0)"
</ins><span class="cx">
</span><span class="cx"> No values : saturate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : saturate(0.5) saturate(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : saturate(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Degrees value as integer : hue-rotate(10deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Degrees float value converts to integer : hue-rotate(10.0deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Radians value : hue-rotate(10rad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(572.9577951308232deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
</ins><span class="cx">
</span><span class="cx"> Gradians value : hue-rotate(10grad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(9deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(9deg)"
</ins><span class="cx">
</span><span class="cx"> Turns value : hue-rotate(0.5turn)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(180deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(180deg)"
</ins><span class="cx">
</span><span class="cx"> Zero value : hue-rotate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> No values : hue-rotate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : hue-rotate(10deg) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : invert(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : invert(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : invert(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
</del><ins>+PASS subRule.cssText is "invert(0)"
</ins><span class="cx">
</span><span class="cx"> No values : invert()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : invert(0.5) invert(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : invert(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : opacity(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : opacity(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : opacity(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
</del><ins>+PASS subRule.cssText is "opacity(0)"
</ins><span class="cx">
</span><span class="cx"> No values : opacity()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : opacity(0.5) opacity(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : opacity(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : brightness(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : brightness(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : brightness(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> No values : brightness()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : brightness(0.5) brightness(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : brightness(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : contrast(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Value greater than 1 : contrast(2)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
</del><ins>+PASS subRule.cssText is "contrast(2)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : contrast(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : contrast(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
</del><ins>+PASS subRule.cssText is "contrast(0)"
</ins><span class="cx">
</span><span class="cx"> No values : contrast()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : contrast(0.5) contrast(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : contrast(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> One zero to px : blur(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(2em)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
</del><ins>+PASS subRule.cssText is "blur(32px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(5px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
</del><ins>+PASS subRule.cssText is "blur(5px)"
</ins><span class="cx">
</span><span class="cx"> No values : blur()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values : drop-shadow(red 1px 2px 3px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Three values then color : drop-shadow(1px 2px 3px red)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values with zero length : drop-shadow(#abc 0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Three values with zero length : drop-shadow(0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Two values no color : drop-shadow(1px 2px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
</ins><span class="cx">
</span><span class="cx"> Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx">
</span><span class="cx"> Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertycomputedstylehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property-computed-style.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property-computed-style.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property-computed-style.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,308 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/filter-property-computed-style.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertyparsingexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property-parsing-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -7,899 +7,797 @@
</span><span class="cx"> Basic reference : url('#a')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'url(#a)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Bare unquoted reference converting to quoted form : url(#a)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'url(#a)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Multiple references : url('#a') url('#b')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'url(#a) url(#b)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "url(#a) url(#b)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
</ins><span class="cx">
</span><span class="cx"> Reference as 2nd value : grayscale(1) url('#a')
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(1) url(#a)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(1) url(#a)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Integer value : grayscale(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : grayscale(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(50%)'
</del><ins>+PASS subRule.cssText is "grayscale(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : grayscale(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : grayscale(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
</del><ins>+PASS subRule.cssText is "grayscale(0)"
</ins><span class="cx">
</span><span class="cx"> No values : grayscale()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale()'
</del><ins>+PASS subRule.cssText is "grayscale()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : grayscale(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : sepia(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : sepia(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(50%)'
</del><ins>+PASS subRule.cssText is "sepia(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : sepia(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : sepia(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
</del><ins>+PASS subRule.cssText is "sepia(0)"
</ins><span class="cx">
</span><span class="cx"> No values : sepia()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia()'
</del><ins>+PASS subRule.cssText is "sepia()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : sepia(0.5) sepia(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(0.5) sepia(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(0.5) sepia(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : sepia(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'sepia(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "sepia(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : saturate(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : saturate(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(50%)'
</del><ins>+PASS subRule.cssText is "saturate(50%)"
</ins><span class="cx">
</span><span class="cx"> Percentage value > 1 : saturate(250%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(250%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(250%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(250%)'
</del><ins>+PASS subRule.cssText is "saturate(250%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : saturate(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Input value > 1 : saturate(5.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(5.5)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(5.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(5.5)'
</del><ins>+PASS subRule.cssText is "saturate(5.5)"
</ins><span class="cx">
</span><span class="cx"> Zero value : saturate(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
</del><ins>+PASS subRule.cssText is "saturate(0)"
</ins><span class="cx">
</span><span class="cx"> No values : saturate()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate()'
</del><ins>+PASS subRule.cssText is "saturate()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : saturate(0.5) saturate(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(0.5) saturate(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(0.5) saturate(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : saturate(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'saturate(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "saturate(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Degrees value as integer : hue-rotate(10deg)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Degrees float value converts to integer : hue-rotate(10.0deg)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Radians value : hue-rotate(10rad)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10rad)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(10rad)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10rad)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10rad)"
</ins><span class="cx">
</span><span class="cx"> Gradians value : hue-rotate(10grad)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10grad)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(10grad)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10grad)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10grad)"
</ins><span class="cx">
</span><span class="cx"> Turns value : hue-rotate(0.5turn)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(0.5turn)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(0.5turn)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0.5turn)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0.5turn)"
</ins><span class="cx">
</span><span class="cx"> Zero value : hue-rotate(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(0deg)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(0deg)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> No values : hue-rotate()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate()'
</del><ins>+PASS subRule.cssText is "hue-rotate()"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : hue-rotate(10deg) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'hue-rotate(10deg) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "hue-rotate(10deg) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : invert(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : invert(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(50%)'
</del><ins>+PASS subRule.cssText is "invert(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : invert(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : invert(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
</del><ins>+PASS subRule.cssText is "invert(0)"
</ins><span class="cx">
</span><span class="cx"> No values : invert()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert()'
</del><ins>+PASS subRule.cssText is "invert()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : invert(0.5) invert(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(0.5) invert(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(0.5) invert(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : invert(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'invert(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "invert(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : opacity(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : opacity(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(50%)'
</del><ins>+PASS subRule.cssText is "opacity(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : opacity(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : opacity(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
</del><ins>+PASS subRule.cssText is "opacity(0)"
</ins><span class="cx">
</span><span class="cx"> No values : opacity()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity()'
</del><ins>+PASS subRule.cssText is "opacity()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : opacity(0.5) opacity(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(0.5) opacity(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(0.5) opacity(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : opacity(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'opacity(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "opacity(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : brightness(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : brightness(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(50%)'
</del><ins>+PASS subRule.cssText is "brightness(50%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : brightness(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : brightness(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> No values : brightness()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness()'
</del><ins>+PASS subRule.cssText is "brightness()"
</ins><span class="cx">
</span><span class="cx"> Multiple values : brightness(0.5) brightness(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(0.5) brightness(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(0.5) brightness(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : brightness(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Parameter less than -100% : brightness(-1.1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(-1.1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(-1.1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(-1.1)'
</del><ins>+PASS subRule.cssText is "brightness(-1.1)"
</ins><span class="cx">
</span><span class="cx"> Parameter more than 100% : brightness(101%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'brightness(101%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "brightness(101%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(101%)'
</del><ins>+PASS subRule.cssText is "brightness(101%)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : grayscale(0.25) brightness(0.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) brightness(0.5)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(0.25) brightness(0.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "brightness(0.5)"
</ins><span class="cx">
</span><span class="cx"> Integer value : contrast(1)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Percentage value : contrast(50%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(50%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(50%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(50%)'
</del><ins>+PASS subRule.cssText is "contrast(50%)"
</ins><span class="cx">
</span><span class="cx"> Percentage value > 1 : contrast(250%)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(250%)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(250%)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(250%)'
</del><ins>+PASS subRule.cssText is "contrast(250%)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : contrast(1.0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(1)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(1)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : contrast(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(0)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(0)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
</del><ins>+PASS subRule.cssText is "contrast(0)"
</ins><span class="cx">
</span><span class="cx"> No values : contrast()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast()'
</del><ins>+PASS subRule.cssText is "contrast()"
</ins><span class="cx">
</span><span class="cx"> Value greater than one : contrast(2)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(2)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(2)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
</del><ins>+PASS subRule.cssText is "contrast(2)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : contrast(0.5) contrast(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(0.5) contrast(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(0.5) contrast(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : contrast(0.5) grayscale(0.25)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'contrast(0.5) grayscale(0.25)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "contrast(0.5) grayscale(0.25)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : grayscale(0.25) contrast(0.5)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'grayscale(0.25) contrast(0.5)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "grayscale(0.25) contrast(0.5)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.25)"
+PASS subRule.cssText is "contrast(0.5)"
</ins><span class="cx">
</span><span class="cx"> One zero to px : blur(0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'blur(0px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "blur(0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(10px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'blur(10px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "blur(10px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(10px)'
</del><ins>+PASS subRule.cssText is "blur(10px)"
</ins><span class="cx">
</span><span class="cx"> No values : blur()
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'blur()'
</del><ins>+PASS declaration.getPropertyValue('filter') is "blur()"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur()'
</del><ins>+PASS subRule.cssText is "blur()"
</ins><span class="cx">
</span><span class="cx"> Color then three values : drop-shadow(red 1px 2px 3px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Three values then color : drop-shadow(1px 2px 3px red)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(red 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(red 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values with zero length : drop-shadow(#abc 0 0 0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Three values with zero length : drop-shadow(0 0 0)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'drop-shadow(0px 0px 0px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "drop-shadow(0px 0px 0px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Two values no color : drop-shadow(1px 2px)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-PASS declaration.getPropertyValue('filter') is 'drop-shadow(1px 2px)'
</del><ins>+PASS declaration.getPropertyValue('filter') is "drop-shadow(1px 2px)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(1px 2px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(1px 2px)"
</ins><span class="cx">
</span><span class="cx"> 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)
</span><span class="cx"> PASS cssRule.type is 1
</span><span class="cx"> PASS declaration.length is 1
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS jsWrapperClass(filterRule) is 'CSSValueList'
</span><span class="cx"> PASS jsWrapperClass(filterRule.__proto__) is 'CSSValueListPrototype'
</span><span class="cx"> PASS jsWrapperClass(filterRule.constructor) is 'Function'
</span><span class="cx"> PASS filterRule.length is 8
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertyparsinginvalidhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property-parsing-invalid.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property-parsing-invalid.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property-parsing-invalid.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,107 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/filter-property-parsing-invalid.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertyparsinghtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property-parsing.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property-parsing.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property-parsing.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,383 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/filter-property-parsing.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersfilterpropertyhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/filter-property.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/filter-property.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/filter-property.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,26 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/filter-property.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsTEMPLATEhtml"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/TEMPLATE.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/TEMPLATE.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/TEMPLATE.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,12 +0,0 @@
</span><del>-<!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>
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestseffectreferencedeletecrashjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/effect-reference-delete-crash.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestseffectreferenceresetstyledeletecrashjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/effect-reference-reset-style-delete-crash.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,8 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsfilterpropertycomputedstylejs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/filter-property-computed-style.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,383 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsfilterpropertyparsinginvalidjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing-invalid.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,98 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsfilterpropertyparsingjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/filter-property-parsing.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,460 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsfilterpropertyjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/filter-property.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/filter-property.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/filter-property.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,18 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersscripttestsunprefixedjs"></a>
<div class="delfile"><h4>Deleted: trunk/LayoutTests/css3/filters/script-tests/unprefixed.js (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/script-tests/unprefixed.js        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/script-tests/unprefixed.js        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,383 +0,0 @@
</span><del>-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;
</del></span></pre></div>
<a id="trunkLayoutTestscss3filtersunprefixedexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/unprefixed-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/unprefixed-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/unprefixed-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,384 +6,291 @@
</span><span class="cx">
</span><span class="cx"> Basic reference : url('#a')
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Bare unquoted reference converting to quoted form : url(#a)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_REFERENCE
-PASS subRule.cssText is 'url(#a)'
</del><ins>+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Multiple references : url('#a') url('#b')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "url(#a)"
+PASS subRule.cssText is "url(#b)"
</ins><span class="cx">
</span><span class="cx"> Reference as 2nd value : grayscale(1) url('#a')
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
+PASS subRule.cssText is "url(#a)"
</ins><span class="cx">
</span><span class="cx"> Integer value : grayscale(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : grayscale(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : grayscale(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(0)'
</del><ins>+PASS subRule.cssText is "grayscale(0)"
</ins><span class="cx">
</span><span class="cx"> No values : grayscale()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_GRAYSCALE
-PASS subRule.cssText is 'grayscale(1)'
</del><ins>+PASS subRule.cssText is "grayscale(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : grayscale(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "grayscale(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : sepia(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : sepia(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : sepia(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(0)'
</del><ins>+PASS subRule.cssText is "sepia(0)"
</ins><span class="cx">
</span><span class="cx"> No values : sepia()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SEPIA
-PASS subRule.cssText is 'sepia(1)'
</del><ins>+PASS subRule.cssText is "sepia(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : sepia(0.5) sepia(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "sepia(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : sepia(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "sepia(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : saturate(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : saturate(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : saturate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(0)'
</del><ins>+PASS subRule.cssText is "saturate(0)"
</ins><span class="cx">
</span><span class="cx"> No values : saturate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_SATURATE
-PASS subRule.cssText is 'saturate(1)'
</del><ins>+PASS subRule.cssText is "saturate(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : saturate(0.5) saturate(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "saturate(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : saturate(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "saturate(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Degrees value as integer : hue-rotate(10deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Degrees float value converts to integer : hue-rotate(10.0deg)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(10deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
</ins><span class="cx">
</span><span class="cx"> Radians value : hue-rotate(10rad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(572.9577951308232deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
</ins><span class="cx">
</span><span class="cx"> Gradians value : hue-rotate(10grad)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(9deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(9deg)"
</ins><span class="cx">
</span><span class="cx"> Turns value : hue-rotate(0.5turn)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(180deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(180deg)"
</ins><span class="cx">
</span><span class="cx"> Zero value : hue-rotate(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> No values : hue-rotate()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_HUE_ROTATE
-PASS subRule.cssText is 'hue-rotate(0deg)'
</del><ins>+PASS subRule.cssText is "hue-rotate(0deg)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : hue-rotate(10deg) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "hue-rotate(10deg)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : invert(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : invert(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : invert(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(0)'
</del><ins>+PASS subRule.cssText is "invert(0)"
</ins><span class="cx">
</span><span class="cx"> No values : invert()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_INVERT
-PASS subRule.cssText is 'invert(1)'
</del><ins>+PASS subRule.cssText is "invert(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : invert(0.5) invert(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "invert(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : invert(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "invert(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : opacity(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : opacity(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : opacity(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(0)'
</del><ins>+PASS subRule.cssText is "opacity(0)"
</ins><span class="cx">
</span><span class="cx"> No values : opacity()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_OPACITY
-PASS subRule.cssText is 'opacity(1)'
</del><ins>+PASS subRule.cssText is "opacity(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : opacity(0.5) opacity(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "opacity(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : opacity(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "opacity(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : brightness(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : brightness(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(1)'
</del><ins>+PASS subRule.cssText is "brightness(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : brightness(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> No values : brightness()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BRIGHTNESS
-PASS subRule.cssText is 'brightness(0)'
</del><ins>+PASS subRule.cssText is "brightness(0)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : brightness(0.5) brightness(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "brightness(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : brightness(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "brightness(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> Integer value : contrast(1)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Value greater than 1 : contrast(2)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(2)'
</del><ins>+PASS subRule.cssText is "contrast(2)"
</ins><span class="cx">
</span><span class="cx"> Float value converts to integer : contrast(1.0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Zero value : contrast(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(0)'
</del><ins>+PASS subRule.cssText is "contrast(0)"
</ins><span class="cx">
</span><span class="cx"> No values : contrast()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_CONTRAST
-PASS subRule.cssText is 'contrast(1)'
</del><ins>+PASS subRule.cssText is "contrast(1)"
</ins><span class="cx">
</span><span class="cx"> Multiple values : contrast(0.5) contrast(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "contrast(0.25)"
</ins><span class="cx">
</span><span class="cx"> Rule combinations : contrast(0.5) grayscale(0.25)
</span><span class="cx"> PASS filterStyle.length is 2
</span><del>-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)'
</del><ins>+PASS subRule.cssText is "contrast(0.5)"
+PASS subRule.cssText is "grayscale(0.25)"
</ins><span class="cx">
</span><span class="cx"> One zero to px : blur(0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(2em)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(32px)'
</del><ins>+PASS subRule.cssText is "blur(32px)"
</ins><span class="cx">
</span><span class="cx"> One length : blur(5px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(5px)'
</del><ins>+PASS subRule.cssText is "blur(5px)"
</ins><span class="cx">
</span><span class="cx"> No values : blur()
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_BLUR
-PASS subRule.cssText is 'blur(0px)'
</del><ins>+PASS subRule.cssText is "blur(0px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values : drop-shadow(red 1px 2px 3px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Three values then color : drop-shadow(1px 2px 3px red)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(255, 0, 0) 1px 2px 3px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(255, 0, 0) 1px 2px 3px)"
</ins><span class="cx">
</span><span class="cx"> Color then three values with zero length : drop-shadow(#abc 0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgb(170, 187, 204) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgb(170, 187, 204) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Three values with zero length : drop-shadow(0 0 0)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 0px 0px 0px)"
</ins><span class="cx">
</span><span class="cx"> Two values no color : drop-shadow(1px 2px)
</span><span class="cx"> PASS filterStyle.length is 1
</span><del>-PASS subRule.operationType is WebKitCSSFilterValue.CSS_FILTER_DROP_SHADOW
-PASS subRule.cssText is 'drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)'
</del><ins>+PASS subRule.cssText is "drop-shadow(rgba(0, 0, 0, 0) 1px 2px 0px)"
</ins><span class="cx">
</span><span class="cx"> Multiple operations : grayscale(0.5) sepia(0.25) saturate(0.75) hue-rotate(35deg) invert(0.2) opacity(0.9) blur(5px)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx">
</span><span class="cx"> Percentage values : grayscale(50%) sepia(25%) saturate(75%) invert(20%) opacity(90%) brightness(60%) contrast(30%)
</span><span class="cx"> PASS filterStyle.length is 7
</span><del>-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)'
</del><ins>+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)"
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestscss3filtersunprefixedhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/filters/unprefixed.html (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/filters/unprefixed.html        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/css3/filters/unprefixed.html        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -6,7 +6,309 @@
</span><span class="cx"> <body>
</span><span class="cx"> <p id="description"></p>
</span><span class="cx"> <div id="console"></div>
</span><del>-<script src="script-tests/unprefixed.js"></script>
</del><ins>+<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>
</ins><span class="cx"> <script src="../../resources/js-test-post.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span></span></pre></div>
<a id="trunkLayoutTestsjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1973,11 +1973,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformefljsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/efl/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -2048,11 +2048,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformgtkjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/gtk/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -2303,11 +2303,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/mac/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -2368,11 +2368,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacwk1jsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -2343,11 +2343,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformmacyosemitejsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -2368,11 +2368,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkLayoutTestsplatformwinjsdomglobalconstructorsattributesexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/LayoutTests/platform/win/js/dom/global-constructors-attributes-expected.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1768,11 +1768,6 @@
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').hasOwnProperty('set') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').enumerable is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitAnimationEvent').configurable is true
</span><del>-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
</del><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').value is WebKitCSSMatrix
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('get') is false
</span><span class="cx"> PASS Object.getOwnPropertyDescriptor(global, 'WebKitCSSMatrix').hasOwnProperty('set') is false
</span></span></pre></div>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/CMakeLists.txt        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -368,7 +368,6 @@
</span><span class="cx"> css/StyleMedia.idl
</span><span class="cx"> css/StyleSheet.idl
</span><span class="cx"> css/StyleSheetList.idl
</span><del>- css/WebKitCSSFilterValue.idl
</del><span class="cx"> css/WebKitCSSMatrix.idl
</span><span class="cx"> css/WebKitCSSRegionRule.idl
</span><span class="cx"> css/WebKitCSSTransformValue.idl
</span><span class="lines">@@ -1370,7 +1369,6 @@
</span><span class="cx"> css/StyleSheetList.cpp
</span><span class="cx"> css/TransformFunctions.cpp
</span><span class="cx"> css/ViewportStyleResolver.cpp
</span><del>- css/WebKitCSSFilterValue.cpp
</del><span class="cx"> css/WebKitCSSMatrix.cpp
</span><span class="cx"> css/WebKitCSSRegionRule.cpp
</span><span class="cx"> css/WebKitCSSTransformValue.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/ChangeLog        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,3 +1,58 @@
</span><ins>+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.
+
+ 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):
+
</ins><span class="cx"> 2016-11-01 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Add ViewportAPI to features.json
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/DerivedSources.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -639,7 +639,6 @@
</span><span class="cx"> #include "JSVoidCallback.cpp"
</span><span class="cx"> #include "JSWaveShaperNode.cpp"
</span><span class="cx"> #include "JSWebKitAnimationEvent.cpp"
</span><del>-#include "JSWebKitCSSFilterValue.cpp"
</del><span class="cx"> #include "JSWebKitCSSTransformValue.cpp"
</span><span class="cx"> #include "JSWebKitCSSMatrix.cpp"
</span><span class="cx"> #include "JSWebKitCSSRegionRule.cpp"
</span></span></pre></div>
<a id="trunkSourceWebCoreDerivedSourcesmake"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/DerivedSources.make (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/DerivedSources.make        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/DerivedSources.make        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -277,7 +277,6 @@
</span><span class="cx"> $(WebCore)/css/StyleMedia.idl \
</span><span class="cx"> $(WebCore)/css/StyleSheet.idl \
</span><span class="cx"> $(WebCore)/css/StyleSheetList.idl \
</span><del>- $(WebCore)/css/WebKitCSSFilterValue.idl \
</del><span class="cx"> $(WebCore)/css/WebKitCSSMatrix.idl \
</span><span class="cx"> $(WebCore)/css/WebKitCSSRegionRule.idl \
</span><span class="cx"> $(WebCore)/css/WebKitCSSTransformValue.idl \
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1326,10 +1326,6 @@
</span><span class="cx">                 2EF1BFEB121C9F4200C27627 /* FileStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EF1BFE9121C9F4200C27627 /* FileStream.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 2EF1BFF9121CB0CE00C27627 /* FileStreamClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EF1BFF8121CB0CE00C27627 /* FileStreamClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 3103B7DF1DB01567008BB890 /* ColorHash.h in Headers */ = {isa = PBXBuildFile; fileRef = 3103B7DE1DB01556008BB890 /* ColorHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */; };
-                3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
-                310603741432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */; };
-                310603751432819C00ABF4BA /* JSWebKitCSSFilterValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */; };
</del><span class="cx">                 31078CC71880AAB5008099DC /* OESTextureHalfFloatLinear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31078CC21880A6A6008099DC /* OESTextureHalfFloatLinear.cpp */; };
</span><span class="cx">                 31078CC81880AABB008099DC /* OESTextureHalfFloatLinear.h in Headers */ = {isa = PBXBuildFile; fileRef = 31078CC31880A6A6008099DC /* OESTextureHalfFloatLinear.h */; };
</span><span class="cx">                 31078CC91880AAC9008099DC /* JSOESTextureHalfFloatLinear.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31078CC51880AAAA008099DC /* JSOESTextureHalfFloatLinear.cpp */; };
</span><span class="lines">@@ -5095,7 +5091,7 @@
</span><span class="cx">                 BC00F0150E0A189500FD04E3 /* JSFile.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0110E0A189500FD04E3 /* JSFile.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 BC00F0160E0A189500FD04E3 /* JSFileList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC00F0120E0A189500FD04E3 /* JSFileList.cpp */; };
</span><span class="cx">                 BC00F0170E0A189500FD04E3 /* JSFileList.h in Headers */ = {isa = PBXBuildFile; fileRef = BC00F0130E0A189500FD04E3 /* JSFileList.h */; };
</span><del>-                BC02A63C0E09A9CF004B6D2B /* CSSFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02A63B0E09A9CF004B6D2B /* CSSFunctionValue.h */; };
</del><ins>+                BC02A63C0E09A9CF004B6D2B /* CSSFunctionValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BC02A63B0E09A9CF004B6D2B /* CSSFunctionValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 BC02A6460E09AAE9004B6D2B /* CSSFunctionValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC02A6450E09AAE9004B6D2B /* CSSFunctionValue.cpp */; };
</span><span class="cx">                 BC06ED060BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC06ED040BFD5BAE00856E9D /* JSHTMLTableSectionElement.cpp */; };
</span><span class="cx">                 BC06ED070BFD5BAE00856E9D /* JSHTMLTableSectionElement.h in Headers */ = {isa = PBXBuildFile; fileRef = BC06ED050BFD5BAE00856E9D /* JSHTMLTableSectionElement.h */; };
</span><span class="lines">@@ -8382,11 +8378,6 @@
</span><span class="cx">                 2EF1BFE9121C9F4200C27627 /* FileStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileStream.h; sourceTree = "<group>"; };
</span><span class="cx">                 2EF1BFF8121CB0CE00C27627 /* FileStreamClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileStreamClient.h; sourceTree = "<group>"; };
</span><span class="cx">                 3103B7DE1DB01556008BB890 /* ColorHash.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColorHash.h; sourceTree = "<group>"; };
</span><del>-                3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebKitCSSFilterValue.cpp; sourceTree = "<group>"; };
-                3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitCSSFilterValue.h; sourceTree = "<group>"; };
-                3106036E14327D2E00ABF4BA /* WebKitCSSFilterValue.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebKitCSSFilterValue.idl; sourceTree = "<group>"; };
-                310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWebKitCSSFilterValue.cpp; sourceTree = "<group>"; };
-                310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWebKitCSSFilterValue.h; sourceTree = "<group>"; };
</del><span class="cx">                 31078CC21880A6A6008099DC /* OESTextureHalfFloatLinear.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = OESTextureHalfFloatLinear.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 31078CC31880A6A6008099DC /* OESTextureHalfFloatLinear.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OESTextureHalfFloatLinear.h; sourceTree = "<group>"; };
</span><span class="cx">                 31078CC41880A6A6008099DC /* OESTextureHalfFloatLinear.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = OESTextureHalfFloatLinear.idl; sourceTree = "<group>"; };
</span><span class="lines">@@ -20123,8 +20114,6 @@
</span><span class="cx">                                 BCE013990C0BEF180043860A /* JSStyleSheet.h */,
</span><span class="cx">                                 A84EBD820CB8C97700079609 /* JSStyleSheetList.cpp */,
</span><span class="cx">                                 A84EBD810CB8C97700079609 /* JSStyleSheetList.h */,
</span><del>-                                310603721432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp */,
-                                310603731432819C00ABF4BA /* JSWebKitCSSFilterValue.h */,
</del><span class="cx">                                 4983913D0F1E767500C23782 /* JSWebKitCSSMatrix.cpp */,
</span><span class="cx">                                 4983913E0F1E767500C23782 /* JSWebKitCSSMatrix.h */,
</span><span class="cx">                                 8ACC24CD148E24B200EFCC0D /* JSWebKitCSSRegionRule.cpp */,
</span><span class="lines">@@ -23242,9 +23231,6 @@
</span><span class="cx">                                 FB484F4B171F821E00040755 /* TransformFunctions.h */,
</span><span class="cx">                                 3FFFF9AB159D9B060020BBD5 /* ViewportStyleResolver.cpp */,
</span><span class="cx">                                 3FFFF9AC159D9B060020BBD5 /* ViewportStyleResolver.h */,
</span><del>-                                3106036C14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp */,
-                                3106036D14327D2E00ABF4BA /* WebKitCSSFilterValue.h */,
-                                3106036E14327D2E00ABF4BA /* WebKitCSSFilterValue.idl */,
</del><span class="cx">                                 498391550F1E776900C23782 /* WebKitCSSMatrix.cpp */,
</span><span class="cx">                                 498391560F1E776900C23782 /* WebKitCSSMatrix.h */,
</span><span class="cx">                                 498391570F1E776900C23782 /* WebKitCSSMatrix.idl */,
</span><span class="lines">@@ -26223,7 +26209,6 @@
</span><span class="cx">                                 6F995A3A1A70833700A735F4 /* JSWebGLVertexArrayObject.h in Headers */,
</span><span class="cx">                                 77EF62F412F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.h in Headers */,
</span><span class="cx">                                 31C0FF3E0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.h in Headers */,
</span><del>-                                310603751432819C00ABF4BA /* JSWebKitCSSFilterValue.h in Headers */,
</del><span class="cx">                                 498391400F1E767500C23782 /* JSWebKitCSSMatrix.h in Headers */,
</span><span class="cx">                                 8AD0A59514C88336000D83C5 /* JSWebKitCSSRegionRule.h in Headers */,
</span><span class="cx">                                 31611E5B0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.h in Headers */,
</span><span class="lines">@@ -27818,7 +27803,6 @@
</span><span class="cx">                                 31C0FF220E4CEB6E007D6FE5 /* WebKitAnimationEvent.h in Headers */,
</span><span class="cx">                                 5DFEBAB718592B6D00C75BEB /* WebKitAvailability.h in Headers */,
</span><span class="cx">                                 976D6C7C122B8A3D001FD1F7 /* WebKitBlobBuilder.h in Headers */,
</span><del>-                                3106037014327D2E00ABF4BA /* WebKitCSSFilterValue.h in Headers */,
</del><span class="cx">                                 498391590F1E776900C23782 /* WebKitCSSMatrix.h in Headers */,
</span><span class="cx">                                 8AA61D00144D595B00F37350 /* WebKitCSSRegionRule.h in Headers */,
</span><span class="cx">                                 BC9ADD230CC4032600098C4C /* WebKitCSSTransformValue.h in Headers */,
</span><span class="lines">@@ -30014,7 +29998,6 @@
</span><span class="cx">                                 6F995A391A70833700A735F4 /* JSWebGLVertexArrayObject.cpp in Sources */,
</span><span class="cx">                                 77EF62F312F9DB7400C77BD2 /* JSWebGLVertexArrayObjectOES.cpp in Sources */,
</span><span class="cx">                                 31C0FF3D0E4CEFAC007D6FE5 /* JSWebKitAnimationEvent.cpp in Sources */,
</span><del>-                                310603741432819C00ABF4BA /* JSWebKitCSSFilterValue.cpp in Sources */,
</del><span class="cx">                                 4983913F0F1E767500C23782 /* JSWebKitCSSMatrix.cpp in Sources */,
</span><span class="cx">                                 8AD0A59414C88336000D83C5 /* JSWebKitCSSRegionRule.cpp in Sources */,
</span><span class="cx">                                 31611E5A0E1C4DE000F6A579 /* JSWebKitCSSTransformValue.cpp in Sources */,
</span><span class="lines">@@ -31294,7 +31277,6 @@
</span><span class="cx">                                 1A7E19461C5863BE00CCDDF3 /* WebKitAdditions.mm in Sources */,
</span><span class="cx">                                 31C0FF210E4CEB6E007D6FE5 /* WebKitAnimationEvent.cpp in Sources */,
</span><span class="cx">                                 976D6C7B122B8A3D001FD1F7 /* WebKitBlobBuilder.cpp in Sources */,
</span><del>-                                3106036F14327D2E00ABF4BA /* WebKitCSSFilterValue.cpp in Sources */,
</del><span class="cx">                                 498391580F1E776900C23782 /* WebKitCSSMatrix.cpp in Sources */,
</span><span class="cx">                                 8AA61CFF144D595B00F37350 /* WebKitCSSRegionRule.cpp in Sources */,
</span><span class="cx">                                 BC9ADD800CC4092200098C4C /* WebKitCSSTransformValue.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSValueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/bindings/js/JSCSSValueCustom.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -33,11 +33,9 @@
</span><span class="cx"> #include "JSNode.h"
</span><span class="cx"> #include "JSSVGColor.h"
</span><span class="cx"> #include "JSSVGPaint.h"
</span><del>-#include "JSWebKitCSSFilterValue.h"
</del><span class="cx"> #include "JSWebKitCSSTransformValue.h"
</span><span class="cx"> #include "SVGColor.h"
</span><span class="cx"> #include "SVGPaint.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx">
</span><span class="cx"> using namespace JSC;
</span><span class="lines">@@ -68,8 +66,6 @@
</span><span class="cx"> {
</span><span class="cx"> if (value->isWebKitCSSTransformValue())
</span><span class="cx"> return createWrapper<WebKitCSSTransformValue>(globalObject, WTFMove(value));
</span><del>- if (value->isWebKitCSSFilterValue())
- return createWrapper<WebKitCSSFilterValue>(globalObject, WTFMove(value));
</del><span class="cx"> if (value->isValueList())
</span><span class="cx"> return createWrapper<CSSValueList>(globalObject, WTFMove(value));
</span><span class="cx"> if (value->isSVGPaint())
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSAllInOne.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSAllInOne.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/CSSAllInOne.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -125,7 +125,6 @@
</span><span class="cx"> #include "StyleSheetList.cpp"
</span><span class="cx"> #include "TransformFunctions.cpp"
</span><span class="cx"> #include "ViewportStyleResolver.cpp"
</span><del>-#include "WebKitCSSFilterValue.cpp"
</del><span class="cx"> #include "WebKitCSSMatrix.cpp"
</span><span class="cx"> #include "WebKitCSSRegionRule.cpp"
</span><span class="cx"> #include "WebKitCSSTransformValue.cpp"
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSComputedStyleDeclarationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -75,7 +75,6 @@
</span><span class="cx"> #include "StyleResolver.h"
</span><span class="cx"> #include "StyleScope.h"
</span><span class="cx"> #include "Text.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx"> #include "WebKitFontFamilyNames.h"
</span><span class="cx"> #include "WillChangeData.h"
</span><span class="lines">@@ -915,87 +914,77 @@
</span><span class="cx">
</span><span class="cx"> auto list = CSSValueList::createSpaceSeparated();
</span><span class="cx">
</span><del>- RefPtr<WebKitCSSFilterValue> filterValue;
-
</del><span class="cx"> Vector<RefPtr<FilterOperation>>::const_iterator end = filterOperations.operations().end();
</span><span class="cx"> for (Vector<RefPtr<FilterOperation>>::const_iterator it = filterOperations.operations().begin(); it != end; ++it) {
</span><span class="cx"> FilterOperation& filterOperation = **it;
</span><del>- switch (filterOperation.type()) {
- case FilterOperation::REFERENCE: {
</del><ins>+
+ if (filterOperation.type() == FilterOperation::REFERENCE) {
</ins><span class="cx"> ReferenceFilterOperation& referenceOperation = downcast<ReferenceFilterOperation>(filterOperation);
</span><del>- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ReferenceFilterOperation);
- filterValue->append(cssValuePool.createValue(referenceOperation.url(), CSSPrimitiveValue::CSS_URI));
- break;
</del><ins>+ list.get().append(cssValuePool.createValue(referenceOperation.url(), CSSPrimitiveValue::CSS_URI));
+ } else {
+ RefPtr<CSSFunctionValue> filterValue;
+ switch (filterOperation.type()) {
+ case FilterOperation::GRAYSCALE: {
+ filterValue = CSSFunctionValue::create(CSSValueGrayscale);
+ filterValue->append(cssValuePool.createValue(downcast<BasicColorMatrixFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::SEPIA: {
+ filterValue = CSSFunctionValue::create(CSSValueSepia);
+ filterValue->append(cssValuePool.createValue(downcast<BasicColorMatrixFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::SATURATE: {
+ filterValue = CSSFunctionValue::create(CSSValueSaturate);
+ filterValue->append(cssValuePool.createValue(downcast<BasicColorMatrixFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::HUE_ROTATE: {
+ filterValue = CSSFunctionValue::create(CSSValueHueRotate);
+ filterValue->append(cssValuePool.createValue(downcast<BasicColorMatrixFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_DEG));
+ break;
+ }
+ case FilterOperation::INVERT: {
+ filterValue = CSSFunctionValue::create(CSSValueInvert);
+ filterValue->append(cssValuePool.createValue(downcast<BasicComponentTransferFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::OPACITY: {
+ filterValue = CSSFunctionValue::create(CSSValueOpacity);
+ filterValue->append(cssValuePool.createValue(downcast<BasicComponentTransferFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::BRIGHTNESS: {
+ filterValue = CSSFunctionValue::create(CSSValueBrightness);
+ filterValue->append(cssValuePool.createValue(downcast<BasicComponentTransferFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::CONTRAST: {
+ filterValue = CSSFunctionValue::create(CSSValueContrast);
+ filterValue->append(cssValuePool.createValue(downcast<BasicComponentTransferFilterOperation>(filterOperation).amount(), CSSPrimitiveValue::CSS_NUMBER));
+ break;
+ }
+ case FilterOperation::BLUR: {
+ filterValue = CSSFunctionValue::create(CSSValueBlur);
+ filterValue->append(adjustLengthForZoom(downcast<BlurFilterOperation>(filterOperation).stdDeviation(), style, adjust));
+ break;
+ }
+ case FilterOperation::DROP_SHADOW: {
+ DropShadowFilterOperation& dropShadowOperation = downcast<DropShadowFilterOperation>(filterOperation);
+ filterValue = CSSFunctionValue::create(CSSValueDropShadow);
+ // We want our computed style to look like that of a text shadow (has neither spread nor inset style).
+ ShadowData shadowData = ShadowData(dropShadowOperation.location(), dropShadowOperation.stdDeviation(), 0, Normal, false, dropShadowOperation.color());
+ filterValue->append(valueForShadow(&shadowData, CSSPropertyTextShadow, style, adjust));
+ break;
+ }
+ default:
+ ASSERT_NOT_REACHED();
+ filterValue = CSSFunctionValue::create(CSSValueInvalid);
+ break;
+ }
+ list.get().append(filterValue.releaseNonNull());
</ins><span class="cx"> }
</span><del>- case FilterOperation::GRAYSCALE: {
- BasicColorMatrixFilterOperation& colorMatrixOperation = downcast<BasicColorMatrixFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::GrayscaleFilterOperation);
- filterValue->append(cssValuePool.createValue(colorMatrixOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::SEPIA: {
- BasicColorMatrixFilterOperation& colorMatrixOperation = downcast<BasicColorMatrixFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SepiaFilterOperation);
- filterValue->append(cssValuePool.createValue(colorMatrixOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::SATURATE: {
- BasicColorMatrixFilterOperation& colorMatrixOperation = downcast<BasicColorMatrixFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::SaturateFilterOperation);
- filterValue->append(cssValuePool.createValue(colorMatrixOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::HUE_ROTATE: {
- BasicColorMatrixFilterOperation& colorMatrixOperation = downcast<BasicColorMatrixFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::HueRotateFilterOperation);
- filterValue->append(cssValuePool.createValue(colorMatrixOperation.amount(), CSSPrimitiveValue::CSS_DEG));
- break;
- }
- case FilterOperation::INVERT: {
- BasicComponentTransferFilterOperation& componentTransferOperation = downcast<BasicComponentTransferFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::InvertFilterOperation);
- filterValue->append(cssValuePool.createValue(componentTransferOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::OPACITY: {
- BasicComponentTransferFilterOperation& componentTransferOperation = downcast<BasicComponentTransferFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::OpacityFilterOperation);
- filterValue->append(cssValuePool.createValue(componentTransferOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::BRIGHTNESS: {
- BasicComponentTransferFilterOperation& brightnessOperation = downcast<BasicComponentTransferFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::BrightnessFilterOperation);
- filterValue->append(cssValuePool.createValue(brightnessOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::CONTRAST: {
- BasicComponentTransferFilterOperation& contrastOperation = downcast<BasicComponentTransferFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ContrastFilterOperation);
- filterValue->append(cssValuePool.createValue(contrastOperation.amount(), CSSPrimitiveValue::CSS_NUMBER));
- break;
- }
- case FilterOperation::BLUR: {
- BlurFilterOperation& blurOperation = downcast<BlurFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::BlurFilterOperation);
- filterValue->append(adjustLengthForZoom(blurOperation.stdDeviation(), style, adjust));
- break;
- }
- case FilterOperation::DROP_SHADOW: {
- DropShadowFilterOperation& dropShadowOperation = downcast<DropShadowFilterOperation>(filterOperation);
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::DropShadowFilterOperation);
- // We want our computed style to look like that of a text shadow (has neither spread nor inset style).
- ShadowData shadowData = ShadowData(dropShadowOperation.location(), dropShadowOperation.stdDeviation(), 0, Normal, false, dropShadowOperation.color());
- filterValue->append(valueForShadow(&shadowData, CSSPropertyTextShadow, style, adjust));
- break;
- }
- default:
- filterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::UnknownFilterOperation);
- break;
- }
- list.get().append(filterValue.releaseNonNull());
</del><span class="cx"> }
</span><del>-
</del><span class="cx"> return WTFMove(list);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/CSSValue.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -65,7 +65,6 @@
</span><span class="cx"> #include "CSSVariableValue.h"
</span><span class="cx"> #include "SVGColor.h"
</span><span class="cx"> #include "SVGPaint.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx">
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="lines">@@ -231,8 +230,6 @@
</span><span class="cx"> return compareCSSValues<CSSCalcValue>(*this, other);
</span><span class="cx"> case ImageSetClass:
</span><span class="cx"> return compareCSSValues<CSSImageSetValue>(*this, other);
</span><del>- case WebKitCSSFilterClass:
- return compareCSSValues<WebKitCSSFilterValue>(*this, other);
</del><span class="cx"> case SVGColorClass:
</span><span class="cx"> return compareCSSValues<SVGColor>(*this, other);
</span><span class="cx"> case SVGPaintClass:
</span><span class="lines">@@ -345,8 +342,6 @@
</span><span class="cx"> return downcast<CSSCalcValue>(*this).customCSSText();
</span><span class="cx"> case ImageSetClass:
</span><span class="cx"> return downcast<CSSImageSetValue>(*this).customCSSText();
</span><del>- case WebKitCSSFilterClass:
- return downcast<WebKitCSSFilterValue>(*this).customCSSText();
</del><span class="cx"> case SVGColorClass:
</span><span class="cx"> return downcast<SVGColor>(*this).customCSSText();
</span><span class="cx"> case SVGPaintClass:
</span><span class="lines">@@ -491,9 +486,6 @@
</span><span class="cx"> case FilterImageClass:
</span><span class="cx"> delete downcast<CSSFilterImageValue>(this);
</span><span class="cx"> return;
</span><del>- case WebKitCSSFilterClass:
- delete downcast<WebKitCSSFilterValue>(this);
- return;
</del><span class="cx"> case SVGColorClass:
</span><span class="cx"> delete downcast<SVGColor>(this);
</span><span class="cx"> return;
</span><span class="lines">@@ -540,8 +532,6 @@
</span><span class="cx"> case ImageClass:
</span><span class="cx"> case CursorImageClass:
</span><span class="cx"> return downcast<CSSImageValue>(*this).cloneForCSSOM();
</span><del>- case WebKitCSSFilterClass:
- return downcast<WebKitCSSFilterValue>(*this).cloneForCSSOM();
</del><span class="cx"> case WebKitCSSTransformClass:
</span><span class="cx"> return downcast<WebKitCSSTransformValue>(*this).cloneForCSSOM();
</span><span class="cx"> case ImageSetClass:
</span></span></pre></div>
<a id="trunkSourceWebCorecssCSSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/CSSValue.h (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/CSSValue.h        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/CSSValue.h        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -111,7 +111,6 @@
</span><span class="cx"> bool isLineBoxContainValue() const { return m_classType == LineBoxContainClass; }
</span><span class="cx"> bool isCalcValue() const {return m_classType == CalculationClass; }
</span><span class="cx"> bool isFilterImageValue() const { return m_classType == FilterImageClass; }
</span><del>- bool isWebKitCSSFilterValue() const { return m_classType == WebKitCSSFilterClass; }
</del><span class="cx"> bool isContentDistributionValue() const { return m_classType == CSSContentDistributionClass; }
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> bool isGridAutoRepeatValue() const { return m_classType == GridAutoRepeatClass; }
</span><span class="lines">@@ -217,7 +216,6 @@
</span><span class="cx"> // List class types must appear after ValueListClass.
</span><span class="cx"> ValueListClass,
</span><span class="cx"> ImageSetClass,
</span><del>- WebKitCSSFilterClass,
</del><span class="cx"> WebKitCSSTransformClass,
</span><span class="cx"> #if ENABLE(CSS_GRID_LAYOUT)
</span><span class="cx"> GridLineNamesClass,
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolvercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/StyleResolver.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -133,7 +133,6 @@
</span><span class="cx"> #include "UserAgentStyleSheets.h"
</span><span class="cx"> #include "ViewportStyleResolver.h"
</span><span class="cx"> #include "VisitedLinkState.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include "WebKitCSSRegionRule.h"
</span><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx"> #include "WebKitFontFamilyNames.h"
</span><span class="lines">@@ -1842,34 +1841,35 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static FilterOperation::OperationType filterOperationForType(WebKitCSSFilterValue::FilterOperationType type)
</del><ins>+static FilterOperation::OperationType filterOperationForType(CSSValueID type)
</ins><span class="cx"> {
</span><span class="cx"> switch (type) {
</span><del>- case WebKitCSSFilterValue::ReferenceFilterOperation:
</del><ins>+ case CSSValueUrl:
</ins><span class="cx"> return FilterOperation::REFERENCE;
</span><del>- case WebKitCSSFilterValue::GrayscaleFilterOperation:
</del><ins>+ case CSSValueGrayscale:
</ins><span class="cx"> return FilterOperation::GRAYSCALE;
</span><del>- case WebKitCSSFilterValue::SepiaFilterOperation:
</del><ins>+ case CSSValueSepia:
</ins><span class="cx"> return FilterOperation::SEPIA;
</span><del>- case WebKitCSSFilterValue::SaturateFilterOperation:
</del><ins>+ case CSSValueSaturate:
</ins><span class="cx"> return FilterOperation::SATURATE;
</span><del>- case WebKitCSSFilterValue::HueRotateFilterOperation:
</del><ins>+ case CSSValueHueRotate:
</ins><span class="cx"> return FilterOperation::HUE_ROTATE;
</span><del>- case WebKitCSSFilterValue::InvertFilterOperation:
</del><ins>+ case CSSValueInvert:
</ins><span class="cx"> return FilterOperation::INVERT;
</span><del>- case WebKitCSSFilterValue::OpacityFilterOperation:
</del><ins>+ case CSSValueOpacity:
</ins><span class="cx"> return FilterOperation::OPACITY;
</span><del>- case WebKitCSSFilterValue::BrightnessFilterOperation:
</del><ins>+ case CSSValueBrightness:
</ins><span class="cx"> return FilterOperation::BRIGHTNESS;
</span><del>- case WebKitCSSFilterValue::ContrastFilterOperation:
</del><ins>+ case CSSValueContrast:
</ins><span class="cx"> return FilterOperation::CONTRAST;
</span><del>- case WebKitCSSFilterValue::BlurFilterOperation:
</del><ins>+ case CSSValueBlur:
</ins><span class="cx"> return FilterOperation::BLUR;
</span><del>- case WebKitCSSFilterValue::DropShadowFilterOperation:
</del><ins>+ case CSSValueDropShadow:
</ins><span class="cx"> return FilterOperation::DROP_SHADOW;
</span><del>- case WebKitCSSFilterValue::UnknownFilterOperation:
- return FilterOperation::NONE;
</del><ins>+ default:
+ break;
</ins><span class="cx"> }
</span><ins>+ ASSERT_NOT_REACHED();
</ins><span class="cx"> return FilterOperation::NONE;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1889,21 +1889,12 @@
</span><span class="cx">
</span><span class="cx"> FilterOperations operations;
</span><span class="cx"> for (auto& currentValue : downcast<CSSValueList>(inValue)) {
</span><del>- if (!is<WebKitCSSFilterValue>(currentValue.get()))
- continue;
</del><span class="cx">
</span><del>- auto& filterValue = downcast<WebKitCSSFilterValue>(currentValue.get());
- FilterOperation::OperationType operationType = filterOperationForType(filterValue.operationType());
-
- if (operationType == FilterOperation::REFERENCE) {
- if (filterValue.length() != 1)
</del><ins>+ if (is<CSSPrimitiveValue>(currentValue.get())) {
+ auto& primitiveValue = downcast<CSSPrimitiveValue>(currentValue.get());
+ if (!primitiveValue.isURI())
</ins><span class="cx"> continue;
</span><del>- auto& argument = *filterValue.itemWithoutBoundsCheck(0);
</del><span class="cx">
</span><del>- if (!is<CSSPrimitiveValue>(argument))
- continue;
-
- auto& primitiveValue = downcast<CSSPrimitiveValue>(argument);
</del><span class="cx"> String cssUrl = primitiveValue.stringValue();
</span><span class="cx"> URL url = m_state.document().completeURL(cssUrl);
</span><span class="cx">
</span><span class="lines">@@ -1912,13 +1903,20 @@
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+ if (!is<CSSFunctionValue>(currentValue.get()))
+ continue;
+
+ auto& filterValue = downcast<CSSFunctionValue>(currentValue.get());
+ FilterOperation::OperationType operationType = filterOperationForType(filterValue.name());
+ auto args = filterValue.arguments();
+
</ins><span class="cx"> // Check that all parameters are primitive values, with the
</span><span class="cx"> // exception of drop shadow which has a CSSShadowValue parameter.
</span><span class="cx"> const CSSPrimitiveValue* firstValue = nullptr;
</span><del>- if (operationType != FilterOperation::DROP_SHADOW) {
</del><ins>+ if (args && operationType != FilterOperation::DROP_SHADOW) {
</ins><span class="cx"> bool haveNonPrimitiveValue = false;
</span><del>- for (unsigned j = 0; j < filterValue.length(); ++j) {
- if (!is<CSSPrimitiveValue>(*filterValue.itemWithoutBoundsCheck(j))) {
</del><ins>+ for (unsigned j = 0; j < args->length(); ++j) {
+ if (!is<CSSPrimitiveValue>(*args->itemWithoutBoundsCheck(j))) {
</ins><span class="cx"> haveNonPrimitiveValue = true;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -1925,16 +1923,16 @@
</span><span class="cx"> }
</span><span class="cx"> if (haveNonPrimitiveValue)
</span><span class="cx"> continue;
</span><del>- if (filterValue.length())
- firstValue = downcast<CSSPrimitiveValue>(filterValue.itemWithoutBoundsCheck(0));
</del><ins>+ if (args->length())
+ firstValue = downcast<CSSPrimitiveValue>(args->itemWithoutBoundsCheck(0));
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- switch (filterValue.operationType()) {
- case WebKitCSSFilterValue::GrayscaleFilterOperation:
- case WebKitCSSFilterValue::SepiaFilterOperation:
- case WebKitCSSFilterValue::SaturateFilterOperation: {
</del><ins>+ switch (operationType) {
+ case FilterOperation::GRAYSCALE:
+ case FilterOperation::SEPIA:
+ case FilterOperation::SATURATE: {
</ins><span class="cx"> double amount = 1;
</span><del>- if (filterValue.length() == 1) {
</del><ins>+ if (args && args->length() == 1) {
</ins><span class="cx"> amount = firstValue->doubleValue();
</span><span class="cx"> if (firstValue->isPercentage())
</span><span class="cx"> amount /= 100;
</span><span class="lines">@@ -1943,20 +1941,20 @@
</span><span class="cx"> operations.operations().append(BasicColorMatrixFilterOperation::create(amount, operationType));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::HueRotateFilterOperation: {
</del><ins>+ case FilterOperation::HUE_ROTATE: {
</ins><span class="cx"> double angle = 0;
</span><del>- if (filterValue.length() == 1)
</del><ins>+ if (args && args->length() == 1)
</ins><span class="cx"> angle = firstValue->computeDegrees();
</span><span class="cx">
</span><span class="cx"> operations.operations().append(BasicColorMatrixFilterOperation::create(angle, operationType));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::InvertFilterOperation:
- case WebKitCSSFilterValue::BrightnessFilterOperation:
- case WebKitCSSFilterValue::ContrastFilterOperation:
- case WebKitCSSFilterValue::OpacityFilterOperation: {
- double amount = (filterValue.operationType() == WebKitCSSFilterValue::BrightnessFilterOperation) ? 0 : 1;
- if (filterValue.length() == 1) {
</del><ins>+ case FilterOperation::INVERT:
+ case FilterOperation::BRIGHTNESS:
+ case FilterOperation::CONTRAST:
+ case FilterOperation::OPACITY: {
+ double amount = (operationType == FilterOperation::BRIGHTNESS) ? 0 : 1;
+ if (args && args->length() == 1) {
</ins><span class="cx"> amount = firstValue->doubleValue();
</span><span class="cx"> if (firstValue->isPercentage())
</span><span class="cx"> amount /= 100;
</span><span class="lines">@@ -1965,9 +1963,9 @@
</span><span class="cx"> operations.operations().append(BasicComponentTransferFilterOperation::create(amount, operationType));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::BlurFilterOperation: {
</del><ins>+ case FilterOperation::BLUR: {
</ins><span class="cx"> Length stdDeviation = Length(0, Fixed);
</span><del>- if (filterValue.length() >= 1)
</del><ins>+ if (args && args->length() >= 1)
</ins><span class="cx"> stdDeviation = convertToFloatLength(firstValue, state.cssToLengthConversionData());
</span><span class="cx"> if (stdDeviation.isUndefined())
</span><span class="cx"> return false;
</span><span class="lines">@@ -1975,11 +1973,11 @@
</span><span class="cx"> operations.operations().append(BlurFilterOperation::create(stdDeviation));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::DropShadowFilterOperation: {
- if (filterValue.length() != 1)
</del><ins>+ case FilterOperation::DROP_SHADOW: {
+ if (args && args->length() != 1)
</ins><span class="cx"> return false;
</span><span class="cx">
</span><del>- auto& cssValue = *filterValue.itemWithoutBoundsCheck(0);
</del><ins>+ auto& cssValue = *args->itemWithoutBoundsCheck(0);
</ins><span class="cx"> if (!is<CSSShadowValue>(cssValue))
</span><span class="cx"> continue;
</span><span class="cx">
</span><span class="lines">@@ -1995,7 +1993,6 @@
</span><span class="cx"> operations.operations().append(DropShadowFilterOperation::create(location, blur, color.isValid() ? color : Color::transparent));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::UnknownFilterOperation:
</del><span class="cx"> default:
</span><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx"> break;
</span></span></pre></div>
<a id="trunkSourceWebCorecssStyleResolverh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/StyleResolver.h (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/StyleResolver.h        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/StyleResolver.h        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -86,7 +86,6 @@
</span><span class="cx"> class StyledElement;
</span><span class="cx"> class SVGSVGElement;
</span><span class="cx"> class ViewportStyleResolver;
</span><del>-class WebKitCSSFilterValue;
</del><span class="cx"> struct ResourceLoaderOptions;
</span><span class="cx">
</span><span class="cx"> // MatchOnlyUserAgentRules is used in media queries, where relative units
</span></span></pre></div>
<a id="trunkSourceWebCorecssWebKitCSSFilterValuecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/css/WebKitCSSFilterValue.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/WebKitCSSFilterValue.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/WebKitCSSFilterValue.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,100 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011, 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "WebKitCSSFilterValue.h"
-
-#include "CSSValueList.h"
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-WebKitCSSFilterValue::WebKitCSSFilterValue(FilterOperationType operationType)
- : CSSValueList(WebKitCSSFilterClass, SpaceSeparator)
- , m_type(operationType)
-{
-}
-
-String WebKitCSSFilterValue::customCSSText() const
-{
- const char* result = "";
- switch (m_type) {
- case UnknownFilterOperation:
- result = "";
- break;
- case ReferenceFilterOperation:
- return CSSValueList::customCSSText();
- case GrayscaleFilterOperation:
- result = "grayscale(";
- break;
- case SepiaFilterOperation:
- result = "sepia(";
- break;
- case SaturateFilterOperation:
- result = "saturate(";
- break;
- case HueRotateFilterOperation:
- result = "hue-rotate(";
- break;
- case InvertFilterOperation:
- result = "invert(";
- break;
- case OpacityFilterOperation:
- result = "opacity(";
- break;
- case BrightnessFilterOperation:
- result = "brightness(";
- break;
- case ContrastFilterOperation:
- result = "contrast(";
- break;
- case BlurFilterOperation:
- result = "blur(";
- break;
- case DropShadowFilterOperation:
- result = "drop-shadow(";
- break;
- }
-
- return result + CSSValueList::customCSSText() + ')';
-}
-
-WebKitCSSFilterValue::WebKitCSSFilterValue(const WebKitCSSFilterValue& cloneFrom)
- : CSSValueList(cloneFrom)
- , m_type(cloneFrom.m_type)
-{
-}
-
-Ref<WebKitCSSFilterValue> WebKitCSSFilterValue::cloneForCSSOM() const
-{
- return adoptRef(*new WebKitCSSFilterValue(*this));
-}
-
-bool WebKitCSSFilterValue::equals(const WebKitCSSFilterValue& other) const
-{
- return m_type == other.m_type && CSSValueList::equals(other);
-}
-
-}
</del></span></pre></div>
<a id="trunkSourceWebCorecssWebKitCSSFilterValueh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/css/WebKitCSSFilterValue.h (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/WebKitCSSFilterValue.h        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/WebKitCSSFilterValue.h        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,75 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef WebKitCSSFilterValue_h
-#define WebKitCSSFilterValue_h
-
-#include "CSSValueList.h"
-
-namespace WebCore {
-
-class WebKitCSSFilterValue final : public CSSValueList {
-public:
- // NOTE: these have to match the values in the IDL
- enum FilterOperationType {
- UnknownFilterOperation,
- ReferenceFilterOperation,
- GrayscaleFilterOperation,
- SepiaFilterOperation,
- SaturateFilterOperation,
- HueRotateFilterOperation,
- InvertFilterOperation,
- OpacityFilterOperation,
- BrightnessFilterOperation,
- ContrastFilterOperation,
- BlurFilterOperation,
- DropShadowFilterOperation
- };
-
- static Ref<WebKitCSSFilterValue> create(FilterOperationType type)
- {
- return adoptRef(*new WebKitCSSFilterValue(type));
- }
-
- String customCSSText() const;
-
- FilterOperationType operationType() const { return m_type; }
-
- Ref<WebKitCSSFilterValue> cloneForCSSOM() const;
-
- bool equals(const WebKitCSSFilterValue&) const;
-
-private:
- WebKitCSSFilterValue(FilterOperationType);
- WebKitCSSFilterValue(const WebKitCSSFilterValue& cloneFrom);
-
- FilterOperationType m_type;
-};
-
-} // namespace WebCore
-
-SPECIALIZE_TYPE_TRAITS_CSS_VALUE(WebKitCSSFilterValue, isWebKitCSSFilterValue())
-
-#endif // WebKitCSSFilterValue_h
</del></span></pre></div>
<a id="trunkSourceWebCorecssWebKitCSSFilterValueidl"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/css/WebKitCSSFilterValue.idl (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/WebKitCSSFilterValue.idl        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/WebKitCSSFilterValue.idl        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1,48 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-[
- DoNotCheckConstants,
- ImplementationLacksVTable,
-] interface WebKitCSSFilterValue : CSSValueList {
-
- // OperationTypes
-
- const unsigned short CSS_FILTER_REFERENCE = 1;
- const unsigned short CSS_FILTER_GRAYSCALE = 2;
- const unsigned short CSS_FILTER_SEPIA = 3;
- const unsigned short CSS_FILTER_SATURATE = 4;
- const unsigned short CSS_FILTER_HUE_ROTATE = 5;
- const unsigned short CSS_FILTER_INVERT = 6;
- const unsigned short CSS_FILTER_OPACITY = 7;
- const unsigned short CSS_FILTER_BRIGHTNESS = 8;
- const unsigned short CSS_FILTER_CONTRAST = 9;
- const unsigned short CSS_FILTER_BLUR = 10;
- const unsigned short CSS_FILTER_DROP_SHADOW = 11;
-
- readonly attribute unsigned short operationType;
-
- getter CSSValue (unsigned long index);
-};
</del></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParser.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParser.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/parser/CSSParser.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -106,7 +106,6 @@
</span><span class="cx"> #include "StyleRuleImport.h"
</span><span class="cx"> #include "StyleSheetContents.h"
</span><span class="cx"> #include "TextEncoding.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include "WebKitCSSRegionRule.h"
</span><span class="cx"> #include "WebKitCSSTransformValue.h"
</span><span class="cx"> #include <bitset>
</span><span class="lines">@@ -10019,43 +10018,37 @@
</span><span class="cx"> return valueID >= CSSValueClear && valueID <= CSSValueXor;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static void filterInfoForName(const CSSParserString& name, WebKitCSSFilterValue::FilterOperationType& filterType, unsigned& maximumArgumentCount)
</del><ins>+static bool isValidPrimitiveFilterFunction(CSSValueID filterFunction)
</ins><span class="cx"> {
</span><del>- if (equalLettersIgnoringASCIICase(name, "grayscale("))
- filterType = WebKitCSSFilterValue::GrayscaleFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "sepia("))
- filterType = WebKitCSSFilterValue::SepiaFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "saturate("))
- filterType = WebKitCSSFilterValue::SaturateFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "hue-rotate("))
- filterType = WebKitCSSFilterValue::HueRotateFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "invert("))
- filterType = WebKitCSSFilterValue::InvertFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "opacity("))
- filterType = WebKitCSSFilterValue::OpacityFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "brightness("))
- filterType = WebKitCSSFilterValue::BrightnessFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "contrast("))
- filterType = WebKitCSSFilterValue::ContrastFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "blur("))
- filterType = WebKitCSSFilterValue::BlurFilterOperation;
- else if (equalLettersIgnoringASCIICase(name, "drop-shadow(")) {
- filterType = WebKitCSSFilterValue::DropShadowFilterOperation;
- maximumArgumentCount = 4; // x-offset, y-offset, blur-radius, color -- spread and inset style not allowed.
</del><ins>+ switch (filterFunction) {
+ case CSSValueBlur:
+ case CSSValueBrightness:
+ case CSSValueContrast:
+ case CSSValueDropShadow:
+ case CSSValueGrayscale:
+ case CSSValueHueRotate:
+ case CSSValueInvert:
+ case CSSValueOpacity:
+ case CSSValueSaturate:
+ case CSSValueSepia:
+ return true;
+ default:
+ return false;
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<WebKitCSSFilterValue> CSSParser::parseBuiltinFilterArguments(CSSParserValueList& args, WebKitCSSFilterValue::FilterOperationType filterType)
</del><ins>+RefPtr<CSSFunctionValue> CSSParser::parseBuiltinFilterArguments(CSSValueID filterFunction, CSSParserValueList& args)
</ins><span class="cx"> {
</span><del>- auto filterValue = WebKitCSSFilterValue::create(filterType);
</del><ins>+ ASSERT(isValidPrimitiveFilterFunction(filterFunction));
+ auto filterValue = CSSFunctionValue::create(filterFunction);
</ins><span class="cx">
</span><del>- switch (filterType) {
- case WebKitCSSFilterValue::GrayscaleFilterOperation:
- case WebKitCSSFilterValue::SepiaFilterOperation:
- case WebKitCSSFilterValue::SaturateFilterOperation:
- case WebKitCSSFilterValue::InvertFilterOperation:
- case WebKitCSSFilterValue::OpacityFilterOperation:
- case WebKitCSSFilterValue::ContrastFilterOperation: {
</del><ins>+ switch (filterFunction) {
+ case CSSValueGrayscale:
+ case CSSValueSepia:
+ case CSSValueSaturate:
+ case CSSValueInvert:
+ case CSSValueOpacity:
+ case CSSValueContrast: {
</ins><span class="cx"> // One optional argument, 0-1 or 0%-100%, if missing use 100%.
</span><span class="cx"> if (args.size() > 1)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -10068,8 +10061,7 @@
</span><span class="cx"> auto primitiveValue = createPrimitiveNumericValue(argumentWithCalculation);
</span><span class="cx">
</span><span class="cx"> // Saturate and Contrast allow values over 100%.
</span><del>- if (filterType != WebKitCSSFilterValue::SaturateFilterOperation
- && filterType != WebKitCSSFilterValue::ContrastFilterOperation) {
</del><ins>+ if (filterFunction != CSSValueSaturate && filterFunction != CSSValueContrast) {
</ins><span class="cx"> double maxAllowed = primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_PERCENTAGE ? 100.0 : 1.0;
</span><span class="cx"> if (primitiveValue->doubleValue() > maxAllowed)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -10079,7 +10071,7 @@
</span><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::BrightnessFilterOperation: {
</del><ins>+ case CSSValueBrightness: {
</ins><span class="cx"> // One optional argument, if missing use 100%.
</span><span class="cx"> if (args.size() > 1)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -10093,7 +10085,7 @@
</span><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::HueRotateFilterOperation: {
</del><ins>+ case CSSValueHueRotate: {
</ins><span class="cx"> // hue-rotate() takes one optional angle.
</span><span class="cx"> if (args.size() > 1)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -10107,7 +10099,7 @@
</span><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::BlurFilterOperation: {
</del><ins>+ case CSSValueBlur: {
</ins><span class="cx"> // Blur takes a single length. Zero parameters are allowed.
</span><span class="cx"> if (args.size() > 1)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -10121,7 +10113,7 @@
</span><span class="cx"> }
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- case WebKitCSSFilterValue::DropShadowFilterOperation: {
</del><ins>+ case CSSValueDropShadow: {
</ins><span class="cx"> // drop-shadow() takes a single shadow.
</span><span class="cx"> RefPtr<CSSValueList> shadowValueList = parseShadow(args, CSSPropertyFilter);
</span><span class="cx"> if (!shadowValueList || shadowValueList->length() != 1)
</span><span class="lines">@@ -10133,9 +10125,33 @@
</span><span class="cx"> default:
</span><span class="cx"> ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><ins>+
+ // In all cases there should be nothing left over in the function.
+ auto nextArgument = args.next();
+ if (nextArgument)
+ return nullptr;
+
</ins><span class="cx"> return WTFMove(filterValue);
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+// FIXME-NEWPARSER: The code for this is at the end of the file. Since this is only
+// needed while using cssValueKeywordIDForFunctionName for the old CSS parser, I just
+// declared it here.
+template <typename CharacterType> static CSSValueID cssValueKeywordID(const CharacterType* valueKeyword, unsigned length);
+
+static CSSValueID cssValueKeywordIDForFunctionName(const CSSParserString& string)
+{
+ // FIXME-NEWPARSER: We can remove this when the new CSS parser is
+ // enabled and just use cssValueKeywordID. This is just covering
+ // the old parser's crazy behavior of including the '(' in the
+ // function->name.
+ unsigned length = string.length();
+ if (length < 2 || length > maxCSSValueKeywordLength)
+ return CSSValueInvalid;
+
+ return string.is8Bit() ? cssValueKeywordID(string.characters8(), length - 1) : cssValueKeywordID(string.characters16(), length - 1);
+}
+
</ins><span class="cx"> bool CSSParser::parseFilter(CSSParserValueList& valueList, RefPtr<CSSValueList>& result)
</span><span class="cx"> {
</span><span class="cx"> // The filter is a list of functional primitives that specify individual operations.
</span><span class="lines">@@ -10144,20 +10160,13 @@
</span><span class="cx"> if (value->unit != CSSPrimitiveValue::CSS_URI && (value->unit != CSSParserValue::Function || !value->function))
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- WebKitCSSFilterValue::FilterOperationType filterType = WebKitCSSFilterValue::UnknownFilterOperation;
-
</del><span class="cx"> // See if the specified primitive is one we understand.
</span><del>- if (value->unit == CSSPrimitiveValue::CSS_URI) {
- auto referenceFilterValue = WebKitCSSFilterValue::create(WebKitCSSFilterValue::ReferenceFilterOperation);
- referenceFilterValue->append(CSSPrimitiveValue::create(value->string, CSSPrimitiveValue::CSS_URI));
- list->append(WTFMove(referenceFilterValue));
- } else {
- const CSSParserString name = value->function->name;
- unsigned maximumArgumentCount = 1;
</del><ins>+ if (value->unit == CSSPrimitiveValue::CSS_URI)
+ list->append(CSSPrimitiveValue::create(value->string, CSSPrimitiveValue::CSS_URI));
+ else {
+ CSSValueID filterFunction = cssValueKeywordIDForFunctionName(value->function->name);
</ins><span class="cx">
</span><del>- filterInfoForName(name, filterType, maximumArgumentCount);
-
- if (filterType == WebKitCSSFilterValue::UnknownFilterOperation)
</del><ins>+ if (!isValidPrimitiveFilterFunction(filterFunction))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> CSSParserValueList* args = value->function->args.get();
</span><span class="lines">@@ -10164,10 +10173,10 @@
</span><span class="cx"> if (!args)
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- RefPtr<WebKitCSSFilterValue> filterValue = parseBuiltinFilterArguments(*args, filterType);
</del><ins>+ RefPtr<CSSFunctionValue> filterValue = parseBuiltinFilterArguments(filterFunction, *args);
</ins><span class="cx"> if (!filterValue)
</span><span class="cx"> return false;
</span><del>-
</del><ins>+
</ins><span class="cx"> list->append(filterValue.releaseNonNull());
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSParser.h (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSParser.h        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/parser/CSSParser.h        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -23,6 +23,7 @@
</span><span class="cx"> #pragma once
</span><span class="cx">
</span><span class="cx"> #include "CSSCalculationValue.h"
</span><ins>+#include "CSSFunctionValue.h"
</ins><span class="cx"> #include "CSSGradientValue.h"
</span><span class="cx"> #include "CSSParserMode.h"
</span><span class="cx"> #include "CSSParserValues.h"
</span><span class="lines">@@ -34,7 +35,6 @@
</span><span class="cx"> #include "ColorSpace.h"
</span><span class="cx"> #include "MediaQuery.h"
</span><span class="cx"> #include "StyleRuleImport.h"
</span><del>-#include "WebKitCSSFilterValue.h"
</del><span class="cx"> #include <memory>
</span><span class="cx"> #include <wtf/HashMap.h>
</span><span class="cx"> #include <wtf/Vector.h>
</span><span class="lines">@@ -334,7 +334,7 @@
</span><span class="cx"> bool parseFilterImage(CSSParserValueList&, RefPtr<CSSValue>&);
</span><span class="cx">
</span><span class="cx"> bool parseFilter(CSSParserValueList&, RefPtr<CSSValueList>&);
</span><del>- RefPtr<WebKitCSSFilterValue> parseBuiltinFilterArguments(CSSParserValueList&, WebKitCSSFilterValue::FilterOperationType);
</del><ins>+ RefPtr<CSSFunctionValue> parseBuiltinFilterArguments(CSSValueID, CSSParserValueList&);
</ins><span class="cx">
</span><span class="cx"> RefPtr<CSSValue> parseClipPath();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorecssparserCSSPropertyParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp (208252 => 208253)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp        2016-11-01 22:13:18 UTC (rev 208252)
+++ trunk/Source/WebCore/css/parser/CSSPropertyParser.cpp        2016-11-01 22:31:52 UTC (rev 208253)
</span><span class="lines">@@ -1375,7 +1375,7 @@
</span><span class="cx"> if (filterType < CSSValueInvert || filterType > CSSValueDropShadow)
</span><span class="cx"> return nullptr;
</span><span class="cx"> CSSParserTokenRange args = consumeFunction(range);
</span><del>- RefPtr<CSSFunctionValue>filterValue = CSSFunctionValue::create(filterType);
</del><ins>+ RefPtr<CSSFunctionValue> filterValue = CSSFunctionValue::create(filterType);
</ins><span class="cx"> RefPtr<CSSValue> parsedValue;
</span><span class="cx">
</span><span class="cx"> if (filterType == CSSValueDropShadow)
</span></span></pre>
</div>
</div>
</body>
</html>