<!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>[207321] 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/207321">207321</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2016-10-13 21:09:33 -0700 (Thu, 13 Oct 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>Hosts of URLs with non-special schemes should be case-sensitive, and non-ASCII characters in such hosts should be punycode-encoded
https://bugs.webkit.org/show_bug.cgi?id=163413
Reviewed by Tim Horton.
LayoutTests/imported/w3c:
* web-platform-tests/url/url-setters-expected.txt:
Update results. Some more tests are failing, but if my proposal in https://github.com/whatwg/url/issues/148 is accepted,
then these web platform tests will need to be changed. These web platform tests were also failing with the old URL::parse.
Source/WebCore:
This retains compatibility with the canonicalization Chrome, Firefox, and Safari with uppercase characters
in the hosts of URLs with unrecognized schemes. Safari treats such characters as the host, while Firefox
and Chrome treat such characters as part of the path, starting with the "//" after the ':'
Behavior of non-ASCII characters is inconsistent, and since we need to have a host, we should punycode-encode
the host to be consistent with special schemes because percent-encoding hosts sometimes is inconsistent.
This solution was proposed to the spec in https://github.com/whatwg/url/issues/148
Covered by updated API and layout tests.
* platform/URLParser.cpp:
(WebCore::URLParser::parse):
(WebCore::URLParser::percentDecode):
(WebCore::URLParser::domainToASCII):
(WebCore::URLParser::hasInvalidDomainCharacter):
(WebCore::URLParser::parseHostAndPort):
(WebCore::URLParser::formURLDecode):
(WebCore::percentDecode): Deleted.
(WebCore::domainToASCII): Deleted.
(WebCore::hasInvalidDomainCharacter): Deleted.
(WebCore::formURLDecode): Deleted.
* platform/URLParser.h:
Tools:
* TestWebKitAPI/Tests/WebCore/URLParser.cpp:
(TestWebKitAPI::TEST_F):
Update parsing results. There are now fewer differences between the new URLParser and the old URL::parse.
LayoutTests:
* contentfiltering/block-after-add-data-then-allow-unblock-expected.txt:
* contentfiltering/block-after-add-data-then-deny-unblock-expected.txt:
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt:
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt:
* contentfiltering/block-after-response-then-allow-unblock-expected.txt:
* contentfiltering/block-after-response-then-deny-unblock-expected.txt:
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt:
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt:
* fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
* fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
* fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
* fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
* fast/css/getComputedStyle/computed-style-border-image-expected.txt:
* fast/css/getComputedStyle/computed-style-border-image.html:
* fast/css/getComputedStyle/computed-style-cross-fade-expected.txt:
* fast/css/getComputedStyle/computed-style-cross-fade.html:
* fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-background-shorthand.html:
* fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
* fast/loader/url-parse-1-expected.txt:
* fast/url/host-lowercase-per-scheme-expected.txt:
* fast/url/safari-extension-expected.txt:
* http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
Update test expectations. This is how they were before <a href="http://trac.webkit.org/projects/webkit/changeset/207162">r207162</a>, showing that this change to the URLParser increases compatibility.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafteradddatathenallowunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-add-data-then-allow-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafteradddatathendenyunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-add-data-then-deny-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterfinishedaddingdatathenallowunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterfinishedaddingdatathendenyunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterresponsethenallowunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-response-then-allow-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterresponsethendenyunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-response-then-deny-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterwillsendrequestthenallowunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestscontentfilteringblockafterwillsendrequestthendenyunblockexpectedtxt">trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizeexpectedtxt">trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizehtml">trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestyleexpectedtxt">trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestylehtml">trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylecomputedstyleborderimageexpectedtxt">trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylecomputedstyleborderimagehtml">trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylecomputedstylecrossfadeexpectedtxt">trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylecomputedstylecrossfadehtml">trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStylebackgroundshorthandexpectedtxt">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStylebackgroundshorthandhtml">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand.html</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStyleliststyleshorthandexpectedtxt">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastcssgetComputedStylegetComputedStyleliststyleshorthandhtml">trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html</a></li>
<li><a href="#trunkLayoutTestsfastloaderurlparse1expectedtxt">trunk/LayoutTests/fast/loader/url-parse-1-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasturlhostlowercaseperschemeexpectedtxt">trunk/LayoutTests/fast/url/host-lowercase-per-scheme-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasturlsafariextensionexpectedtxt">trunk/LayoutTests/fast/url/safari-extension-expected.txt</a></li>
<li><a href="#trunkLayoutTestshttptestsxmlhttprequestaccesscontrolandredirectsasyncexpectedtxt">trunk/LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformURLParsercpp">trunk/Source/WebCore/platform/URLParser.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformURLParserh">trunk/Source/WebCore/platform/URLParser.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsTestWebKitAPITestsWebCoreURLParsercpp">trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/ChangeLog        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,3 +1,36 @@
</span><ins>+2016-10-13 Alex Christensen <achristensen@webkit.org>
+
+ Hosts of URLs with non-special schemes should be case-sensitive, and non-ASCII characters in such hosts should be punycode-encoded
+ https://bugs.webkit.org/show_bug.cgi?id=163413
+
+ Reviewed by Tim Horton.
+
+ * contentfiltering/block-after-add-data-then-allow-unblock-expected.txt:
+ * contentfiltering/block-after-add-data-then-deny-unblock-expected.txt:
+ * contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt:
+ * contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt:
+ * contentfiltering/block-after-response-then-allow-unblock-expected.txt:
+ * contentfiltering/block-after-response-then-deny-unblock-expected.txt:
+ * contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt:
+ * contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt:
+ * fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
+ * fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
+ * fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
+ * fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
+ * fast/css/getComputedStyle/computed-style-border-image-expected.txt:
+ * fast/css/getComputedStyle/computed-style-border-image.html:
+ * fast/css/getComputedStyle/computed-style-cross-fade-expected.txt:
+ * fast/css/getComputedStyle/computed-style-cross-fade.html:
+ * fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt:
+ * fast/css/getComputedStyle/getComputedStyle-background-shorthand.html:
+ * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
+ * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
+ * fast/loader/url-parse-1-expected.txt:
+ * fast/url/host-lowercase-per-scheme-expected.txt:
+ * fast/url/safari-extension-expected.txt:
+ * http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt:
+ Update test expectations. This is how they were before r207162, showing that this change to the URLParser increases compatibility.
+
</ins><span class="cx"> 2016-10-13 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> [Web IDL] Add support for [SameObject] extended attribute
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafteradddatathenallowunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-add-data-then-allow-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-add-data-then-allow-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-add-data-then-allow-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafteradddatathendenyunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-add-data-then-deny-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-add-data-then-deny-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-add-data-then-deny-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterfinishedaddingdatathenallowunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterfinishedaddingdatathendenyunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterresponsethenallowunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-response-then-allow-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-response-then-allow-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-response-then-allow-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterresponsethendenyunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-response-then-deny-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-response-then-deny-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-response-then-deny-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterwillsendrequestthenallowunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestscontentfilteringblockafterwillsendrequestthendenyunblockexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -13,7 +13,7 @@
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
</span><del>-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/
</del><ins>+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock
</ins><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
</span><span class="cx"> frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -3,7 +3,7 @@
</span><span class="cx"> On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'cover'
</span><span class="cx">
</span><span class="cx"> PASS successfullyParsed is true
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandaftersetbackgroundSizehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -12,7 +12,7 @@
</span><span class="cx">
</span><span class="cx"> e.style.backgroundSize = "cover";
</span><span class="cx"> e.style.background = "center red url(dummy://test.png) no-repeat border-box";
</span><del>- shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'")
</del><ins>+ shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'")
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'cover'");
</span><span class="cx"> debug("")
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestyleexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -3,59 +3,59 @@
</span><span class="cx"> On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'cover'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50% 50% / cover border-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is 'cover'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 20px 50% / contain no-repeat padding-box padding-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'contain'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 20px 50% / contain padding-box padding-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is 'contain'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50px 60px / 50% 75% no-repeat red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50px 60px / 50% 75% no-repeat red'
</ins><span class="cx"> PASS e.style.backgroundSize is '50% 75%'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is '50% 75%'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 0% 0% / 100px 200px repeat border-box content-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is '100px 200px'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px 200px border-box content-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is '100px 200px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50% 50% / auto repeat content-box padding-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'auto'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 50% 50% / auto content-box padding-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is 'auto'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50px 60px / 50% no-repeat fixed red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50px 60px / 50% no-repeat fixed red'
</ins><span class="cx"> PASS e.style.backgroundSize is '50%'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 50px 60px / 50% padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 50px 60px / 50% padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is '50%'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 0% 0% / 100px repeat scroll padding-box border-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is '100px'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is '100px'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span><del>-PASS e.style.background is 'url(dummy://test.png/) 50% 50% / auto repeat fixed content-box content-box red'
</del><ins>+PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'
</ins><span class="cx"> PASS e.style.backgroundSize is 'auto'
</span><span class="cx"> PASS checkStyle() is true
</span><del>-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat fixed 50% 50% / auto content-box content-box'
</del><ins>+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'
</ins><span class="cx"> PASS computedStyle.getPropertyValue("background-size") is 'auto'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastbackgroundsbackgroundshorthandwithbackgroundSizestylehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -23,73 +23,73 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> e.style.background = "center / cover red url(dummy://test.png) no-repeat border-box";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'cover'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50% 50% / cover border-box border-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'cover'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><del>-e.style.background = "red 20px / contain url(dummy://test.png/) no-repeat padding-box";
-shouldBe("e.style.background", "'url(dummy://test.png/) 20px 50% / contain no-repeat padding-box padding-box red'");
</del><ins>+e.style.background = "red 20px / contain url(dummy://test.png) no-repeat padding-box";
+shouldBe("e.style.background", "'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'contain'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 20px 50% / contain padding-box padding-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'contain'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "red url(dummy://test.png) 50px 60px / 50% 75% no-repeat";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 50px 60px / 50% 75% no-repeat red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 50px 60px / 50% 75% no-repeat red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'50% 75%'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'50% 75%'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "red url(dummy://test.png) repeat top left / 100px 200px border-box content-box";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 0% 0% / 100px 200px repeat border-box content-box red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'100px 200px'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px 200px border-box content-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'100px 200px'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "red url(dummy://test.png) repeat 50% / auto auto content-box padding-box";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / auto repeat content-box padding-box red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'auto'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 50% 50% / auto content-box padding-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "url(dummy://test.png) red 50px 60px / 50% no-repeat fixed";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 50px 60px / 50% no-repeat fixed red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 50px 60px / 50% no-repeat fixed red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'50%'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 50px 60px / 50% padding-box border-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 50px 60px / 50% padding-box border-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'50%'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><del>-e.style.background = "red repeat scroll padding-box border-box top left / 100px url(dummy://test.png/)";
-shouldBe("e.style.background", "'url(dummy://test.png/) 0% 0% / 100px repeat scroll padding-box border-box red'");
</del><ins>+e.style.background = "red repeat scroll padding-box border-box top left / 100px url(dummy://test.png)";
+shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'100px'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px padding-box border-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'100px'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "50% / auto fixed url(dummy://test.png) repeat content-box red";
</span><del>-shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / auto repeat fixed content-box content-box red'");
</del><ins>+shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'");
</ins><span class="cx"> shouldBe("e.style.backgroundSize", "'auto'");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span><del>-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat fixed 50% 50% / auto content-box content-box'");
</del><ins>+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'");
</ins><span class="cx"> shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> debug("")
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> debug("")
</span><span class="cx">
</span><span class="cx"> e.style.background = "";
</span><del>-e.style.background = "red / cover url(dummy://test.png/) repeat";
</del><ins>+e.style.background = "red / cover url(dummy://test.png) repeat";
</ins><span class="cx"> shouldBe("e.style.background", "''");
</span><span class="cx"> shouldBe("e.style.backgroundSize", "''");
</span><span class="cx"> shouldBe("checkStyle()", "true");
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylecomputedstyleborderimageexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -4,10 +4,10 @@
</span><span class="cx"> PASS computedBorderImageStyle('12 11 12 11', 'border-image') is 'none'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 12 11 repeat stretch', 'border-image-slice') is '12 11'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png/) 12 11 repeat stretch', 'border-image') is 'url(dummy://test.png/) 12 11 / 1 / 0px repeat stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 12 11 repeat stretch', 'border-image') is 'url(dummy://test.png) 12 11 / 1 / 0px repeat stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 1 2 3 4 repeat stretch', 'border-image-slice') is '1 2 3 4'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image') is 'url(dummy://test.png/) 1 2 3 4 / 1 / 0px repeat stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image') is 'url(dummy://test.png) 1 2 3 4 / 1 / 0px repeat stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 12 repeat stretch', 'border-image-slice') is '12'
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 10 5 5 repeat stretch', 'border-image-slice') is '10 10 5 5'
</span><span class="lines">@@ -15,16 +15,16 @@
</span><span class="cx"> PASS computedBorderImageStyle('url(dummy://test.png) 10 a b c repeat stretch', 'border-image') is 'none'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 20 fill', 'border-image-slice') is '10 20 fill'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image') is 'url(dummy://test.png/) 10 20 fill / 1 / 0px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image') is 'url(dummy://test.png) 10 20 fill / 1 / 0px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source') is 'url(dummy://test.png/)'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source') is 'url(dummy://test.png)'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px repeat stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10', 'border-image-repeat') is 'stretch'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 stretch', 'border-image-repeat') is 'stretch'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 kittens', 'border-image-repeat') is 'stretch'
</span><span class="cx"> PASS computedBorderImageStyle('url(dummy://test.png) 10 kittens', 'border-image') is 'none'
</span><span class="lines">@@ -33,22 +33,22 @@
</span><span class="cx"> PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch stretch fill', 'border-image') is 'none'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 repeat stretch', 'border-image-repeat') is 'repeat stretch'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px repeat stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 round space', 'border-image-repeat') is 'round space'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px round space'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px round space'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 / 13px 1.5em 1em 10px', 'border-image-width') is '13px 24px 16px 10px'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image') is 'url(dummy://test.png/) 10 / 13px 24px 16px 10px / 0px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image') is 'url(dummy://test.png) 10 / 13px 24px 16px 10px / 0px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 / 14px 10%', 'border-image-width') is '14px 10%'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image') is 'url(dummy://test.png/) 10 / 14px 10% / 0px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image') is 'url(dummy://test.png) 10 / 14px 10% / 0px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px', 'border-image-outset') is '11px'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image') is 'url(dummy://test.png/) 10 / 13px / 11px stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image') is 'url(dummy://test.png) 10 / 13px / 11px stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px repeat stretch', 'border-image-outset') is '11px'
</span><del>-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 13px / 11px repeat stretch'
</del><ins>+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 13px / 11px repeat stretch'
</ins><span class="cx"> PASS checkComputedStyleValue() is true
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylecomputedstyleborderimagehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/computed-style-border-image.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -30,10 +30,10 @@
</span><span class="cx"> shouldBe("computedBorderImageStyle('12 11 12 11', 'border-image')", "'none'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 12 11 repeat stretch', 'border-image-slice')", "'12 11'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png/) 12 11 repeat stretch', 'border-image')", "'url(dummy://test.png/) 12 11 / 1 / 0px repeat stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 12 11 repeat stretch', 'border-image')", "'url(dummy://test.png) 12 11 / 1 / 0px repeat stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 1 2 3 4 repeat stretch', 'border-image-slice')", "'1 2 3 4'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image')", "'url(dummy://test.png/) 1 2 3 4 / 1 / 0px repeat stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image')", "'url(dummy://test.png) 1 2 3 4 / 1 / 0px repeat stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 12 repeat stretch', 'border-image-slice')", "'12'");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 10 5 5 repeat stretch', 'border-image-slice')", "'10 10 5 5'");
</span><span class="lines">@@ -41,18 +41,18 @@
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 a b c repeat stretch', 'border-image')", "'none'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 20 fill', 'border-image-slice')", "'10 20 fill'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image')", "'url(dummy://test.png/) 10 20 fill / 1 / 0px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image')", "'url(dummy://test.png) 10 20 fill / 1 / 0px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source')", "'url(dummy://test.png/)'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source')", "'url(dummy://test.png)'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px repeat stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10', 'border-image-repeat')", "'stretch'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 stretch', 'border-image-repeat')", "'stretch'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 kittens', 'border-image-repeat')", "'stretch'");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 kittens', 'border-image')", "'none'");
</span><span class="lines">@@ -61,24 +61,24 @@
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch stretch fill', 'border-image')", "'none'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 repeat stretch', 'border-image-repeat')", "'repeat stretch'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px repeat stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 round space', 'border-image-repeat')", "'round space'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px round space'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px round space'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px 1.5em 1em 10px', 'border-image-width')", "'13px 24px 16px 10px'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image')", "'url(dummy://test.png/) 10 / 13px 24px 16px 10px / 0px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image')", "'url(dummy://test.png) 10 / 13px 24px 16px 10px / 0px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 / 14px 10%', 'border-image-width')", "'14px 10%'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image')", "'url(dummy://test.png/) 10 / 14px 10% / 0px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image')", "'url(dummy://test.png) 10 / 14px 10% / 0px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px / 11px', 'border-image-outset')", "'11px'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image')", "'url(dummy://test.png/) 10 / 13px / 11px stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image')", "'url(dummy://test.png) 10 / 13px / 11px stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px / 11px repeat stretch', 'border-image-outset')", "'11px'");
</span><del>-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 13px / 11px repeat stretch'");
</del><ins>+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 13px / 11px repeat stretch'");
</ins><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> </script>
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylecomputedstylecrossfadeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -3,42 +3,42 @@
</span><span class="cx">
</span><span class="cx"> PASS testCrossfade("opacity: 500%", "opacity") is "1"
</span><span class="cx"> Prefixed
</span><del>-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), url(dummy://example.png/), 50%)", "background-image") is "-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image") is "-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png/), 0.1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png/), 1.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), -20)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0)"
</del><ins>+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image") is "-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png), 0.1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), -20)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0)"
</ins><span class="cx"> Unprefixed
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/), 50%)", "background-image") is "cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
</del><ins>+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image") is "cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
</ins><span class="cx"> Mixed
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
-PASS testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image") is "cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
</del><ins>+PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
+PASS testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
</ins><span class="cx"> Invalid values
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/))", "background-image") is "none"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png),)", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png/), url(dummy://example.png))", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/),)", "background-image") is "none"
</del><ins>+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none"
</ins><span class="cx"> PASS testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image") is "none"
</span><span class="cx"> PASS testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image") is "none"
</span><span class="cx"> PASS testCrossfade("background-image: cross-fade(url(", "background-image") is "none"
</span><span class="cx"> PASS testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image") is "none"
</span><span class="cx"> PASS testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image") is "none"
</span><del>-PASS testCrossfade("background-image: cross-fade(20%, url(dummy://a.png/), url(dummy://b.png/))", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://a.png/),)", "background-image") is "none"
</del><ins>+PASS testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://a.png),)", "background-image") is "none"
</ins><span class="cx"> PASS testCrossfade("background-image: cross-fade(,)", "background-image") is "none"
</span><del>-PASS testCrossfade("background-image: cross-fade(,url(dummy://a.png/))", "background-image") is "none"
</del><ins>+PASS testCrossfade("background-image: cross-fade(,url(dummy://a.png))", "background-image") is "none"
</ins><span class="cx"> PASS testCrossfade("background-image: cross-fade(,,,,,)", "background-image") is "none"
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylecomputedstylecrossfadehtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -25,49 +25,49 @@
</span><span class="cx">
</span><span class="cx"> debug('Prefixed');
</span><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 50%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), url(dummy://example.png/), 50%)", "background-image")', '"-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), 50%)", "background-image")',
- '"-webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image")', '"-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png/), 0.1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png/), 1.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
</del><ins>+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image")', '"-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
+ '"-webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image")', '"-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png), 0.1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
</ins><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
</del><ins>+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
</ins><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), -20)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0)"');
</del><ins>+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), -20)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0)"');
</ins><span class="cx">
</span><span class="cx"> debug('<h2>Unprefixed</h2>');
</span><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/), 50%)", "background-image")', '"cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
</del><ins>+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image")', '"cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
</ins><span class="cx">
</span><span class="cx"> debug('<h2>Mixed</h2>');
</span><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), url(dummy://example.png), 50%)", "background-image")',
- '"-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image")',
- '"-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
-shouldBe('testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image")',
- '"cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
</del><ins>+shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image")',
+ '"-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
+ '"-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
+shouldBe('testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
+ '"cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
</ins><span class="cx">
</span><span class="cx"> debug('<h2>Invalid values</h2>');
</span><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png),)", "background-image")', '"none"');
</del><ins>+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"');
</ins><span class="cx">
</span><del>-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png/), url(dummy://example.png))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/),)", "background-image")', '"none"');
</del><ins>+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"');
</ins><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image")', '"none"');
</span><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image")', '"none"');
</span><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(url(", "background-image")', '"none"');
</span><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image")', '"none"');
</span><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image")', '"none"');
</span><del>-shouldBe('testCrossfade("background-image: cross-fade(20%, url(dummy://a.png/), url(dummy://b.png/))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png/),)", "background-image")', '"none"');
</del><ins>+shouldBe('testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png),)", "background-image")', '"none"');
</ins><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(,)", "background-image")', '"none"');
</span><del>-shouldBe('testCrossfade("background-image: cross-fade(,url(dummy://a.png/))", "background-image")', '"none"');
</del><ins>+shouldBe('testCrossfade("background-image: cross-fade(,url(dummy://a.png))", "background-image")', '"none"');
</ins><span class="cx"> shouldBe('testCrossfade("background-image: cross-fade(,,,,,)", "background-image")', '"none"');
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStylebackgroundshorthandexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -22,9 +22,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -31,7 +31,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'scroll'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -41,9 +41,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'scroll'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -60,9 +60,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -79,9 +79,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -98,9 +98,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -107,7 +107,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -117,9 +117,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -136,9 +136,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'content-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span><span class="lines">@@ -155,9 +155,9 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'content-box'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'padding-box'
</span><span class="cx"> PASS checkComputedStyleValue() is true
</span><del>-PASS computedStyle.getPropertyValue('background') is 'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'
</del><ins>+PASS computedStyle.getPropertyValue('background') is 'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
</span><del>-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').length is 2
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 128
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
</span><del>-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'repeat'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStylebackgroundshorthandhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -47,9 +47,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundImage = "url(dummy://test.png)";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'scroll'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -68,9 +68,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundRepeat = "no-repeat";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'scroll'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -89,9 +89,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundAttachment = "fixed";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -110,9 +110,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundPosition = "right bottom";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -131,9 +131,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundSize = "cover";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -152,9 +152,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundOrigin = "content-box";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -173,9 +173,9 @@
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><span class="cx"> e.style.backgroundClip = "padding-box";
</span><del>-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -182,7 +182,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span><span class="lines">@@ -193,10 +193,10 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue()", "'padding-box'");
</span><span class="cx"> shouldBe("checkComputedStyleValue()", "true");
</span><span class="cx">
</span><del>-e.style.background = "border-box padding-box url(dummy://test.png/) green 45% / contain repeat fixed";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'");
</del><ins>+e.style.background = "border-box padding-box url(dummy://test.png) green 45% / contain repeat fixed";
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "128");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'repeat'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStyleliststyleshorthandexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -3,13 +3,13 @@
</span><span class="cx"> On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
</span><span class="cx">
</span><span class="cx">
</span><del>-PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png/)'
</del><ins>+PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png)'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').length is 3
</span><del>-PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png/)'
</del><ins>+PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png)'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
</span><del>-PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS computedStyle.getPropertyValue('list-style') is 'disc outside none'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').length is 3
</span><span class="lines">@@ -31,13 +31,13 @@
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'none'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'none'
</span><del>-PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png/)'
</del><ins>+PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png)'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').length is 3
</span><del>-PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png/)'
</del><ins>+PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png)'
</ins><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
</span><span class="cx"> PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
</span><del>-PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png/'
</del><ins>+PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
</ins><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span><span class="cx"> TEST COMPLETE
</span></span></pre></div>
<a id="trunkLayoutTestsfastcssgetComputedStylegetComputedStyleliststyleshorthandhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -19,13 +19,13 @@
</span><span class="cx"> computedStyle = window.getComputedStyle(e, null);
</span><span class="cx">
</span><span class="cx"> e.style.listStyle = "circle outside url(dummy://test.png)";
</span><del>-shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png/)'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png)'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').toString()", "'[object CSSValueList]'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').length", "3");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png/)'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png)'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue()", "'circle'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue()", "'outside'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png'");
</ins><span class="cx">
</span><span class="cx"> e.style.listStyle = ""
</span><span class="cx"> e.style.listStyle = "a b c";
</span><span class="lines">@@ -59,13 +59,13 @@
</span><span class="cx"> e.style.listStyleType = "circle";
</span><span class="cx"> e.style.listStylePosition = "outside";
</span><span class="cx"> e.style.listStyleImage = "url(dummy://test.png)";
</span><del>-shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png/)'");
</del><ins>+shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png)'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').toString()", "'[object CSSValueList]'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').length", "3");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png/)'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png)'");
</ins><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue()", "'circle'");
</span><span class="cx"> shouldBe("computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue()", "'outside'");
</span><del>-shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png/'");
</del><ins>+shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png'");
</ins><span class="cx">
</span><span class="cx"> document.body.removeChild(testContainer);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfastloaderurlparse1expectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/loader/url-parse-1-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/loader/url-parse-1-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/loader/url-parse-1-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -41,6 +41,6 @@
</span><span class="cx"> x-webkit:/        x-webkit:/                /
</span><span class="cx"> x-webkit:/test        x-webkit:/test                /test
</span><span class="cx"> x-webkit://        x-webkit://                //
</span><del>-x-webkit://test        x-webkit://test/        test        /
</del><ins>+x-webkit://test        x-webkit://test        test        
</ins><span class="cx"> x-webkit:///        x-webkit:///                ///
</span><span class="cx"> x-webkit:///test        x-webkit:///test                ///test
</span></span></pre></div>
<a id="trunkLayoutTestsfasturlhostlowercaseperschemeexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/url/host-lowercase-per-scheme-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/url/host-lowercase-per-scheme-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/url/host-lowercase-per-scheme-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> PASS src is expected
</span><span class="cx"> PASS src is expected
</span><span class="cx"> PASS src is expected
</span><del>-FAIL src should be ghost://CamelCase/. Was ghost://camelcase/.
</del><ins>+PASS src is expected
</ins><span class="cx"> FAIL src should be ghost://UnicodeF%C3%AAte/. Was ghost://xn--unicodefte-t7a/.
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsfasturlsafariextensionexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/url/safari-extension-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/url/safari-extension-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/fast/url/safari-extension-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -5,7 +5,7 @@
</span><span class="cx">
</span><span class="cx"> PASS src is expected
</span><span class="cx"> PASS src is expected
</span><del>-FAIL src should be safari-extension://com.ApPlE/. Was safari-extension://com.apple/.
</del><ins>+PASS src is expected
</ins><span class="cx"> FAIL src should be safari-extension://com.f%C3%AAte/. Was safari-extension://com.xn--fte-fma/.
</span><span class="cx"> PASS successfullyParsed is true
</span><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestshttptestsxmlhttprequestaccesscontrolandredirectsasyncexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi denied by Cross-Origin Resource Sharing policy: Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin.
</span><span class="cx"> CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?url=http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi due to access control checks.
</span><del>-CONSOLE MESSAGE: Cross-origin redirection to foo://bar.cgi/ denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</del><ins>+CONSOLE MESSAGE: Cross-origin redirection to foo://bar.cgi denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
</ins><span class="cx"> CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?url=foo://bar.cgi&%20%20access-control-allow-origin=http://127.0.0.1:8000 due to access control checks.
</span><span class="cx"> CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?redirect-preflight=true&%20%20url=http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi&%20%20access-control-allow-origin=*. Preflight response is not successful
</span><span class="cx"> CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi. Request header field x-webkit is not allowed by Access-Control-Allow-Headers.
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2016-10-13 Alex Christensen <achristensen@webkit.org>
+
+ Hosts of URLs with non-special schemes should be case-sensitive, and non-ASCII characters in such hosts should be punycode-encoded
+ https://bugs.webkit.org/show_bug.cgi?id=163413
+
+ Reviewed by Tim Horton.
+
+ * web-platform-tests/url/url-setters-expected.txt:
+ Update results. Some more tests are failing, but if my proposal in https://github.com/whatwg/url/issues/148 is accepted,
+ then these web platform tests will need to be changed. These web platform tests were also failing with the old URL::parse.
+
</ins><span class="cx"> 2016-10-11 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> select.options may return too many option elements
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,14 +1,14 @@
</span><span class="cx">
</span><span class="cx"> PASS Loading data…
</span><del>-PASS Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.
-PASS Setting <a://example.net>.protocol = 'b'
-PASS Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased
-PASS Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected
-PASS Setting <a://example.net>.protocol = '0b' No leading digit
-PASS Setting <a://example.net>.protocol = '+b' No leading punctuation
-PASS Setting <a://example.net>.protocol = 'bC0+-.'
-PASS Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable
-PASS Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected
</del><ins>+FAIL Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. assert_equals: expected "a://example.net/" but got "a://example.net"
+FAIL Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net/" but got "b://example.net"
+FAIL Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net/" but got "b://example.net"
+FAIL Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
+FAIL Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net/" but got "a://example.net"
+FAIL Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net/" but got "a://example.net"
+FAIL Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net/" but got "bc0+-.://example.net"
+FAIL Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net/" but got "a://example.net"
+FAIL Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
</ins><span class="cx"> FAIL Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104 assert_equals: expected "http://example.net/" but got "b://example.net/"
</span><span class="cx"> FAIL Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
</span><span class="cx"> FAIL Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104 assert_equals: expected "ssh://me@example.net/" but got "http://me@example.net/"
</span><span class="lines">@@ -16,7 +16,7 @@
</span><span class="cx"> PASS Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored
</span><span class="cx"> FAIL Setting <file:///home/you/index.html>.username = 'me' No host means no username assert_equals: expected "file:///home/you/index.html" but got "file://me@/home/you/index.html"
</span><span class="cx"> FAIL Setting <unix:/run/foo.socket>.username = 'me' No host means no username assert_equals: expected "unix:/run/foo.socket" but got "unix://me@/run/foo.socket"
</span><del>-FAIL Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username assert_equals: expected "mailto:you@example.net" but got "mailto://me%40you@example.net/"
</del><ins>+FAIL Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username assert_equals: expected "mailto:you@example.net" but got "mailto://me%40you@example.net"
</ins><span class="cx"> PASS Setting <http://example.net>.username = 'me'
</span><span class="cx"> PASS Setting <http://:secret@example.net>.username = 'me'
</span><span class="cx"> PASS Setting <http://me@example.net>.username = ''
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/Source/WebCore/ChangeLog        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,3 +1,33 @@
</span><ins>+2016-10-13 Alex Christensen <achristensen@webkit.org>
+
+ Hosts of URLs with non-special schemes should be case-sensitive, and non-ASCII characters in such hosts should be punycode-encoded
+ https://bugs.webkit.org/show_bug.cgi?id=163413
+
+ Reviewed by Tim Horton.
+
+ This retains compatibility with the canonicalization Chrome, Firefox, and Safari with uppercase characters
+ in the hosts of URLs with unrecognized schemes. Safari treats such characters as the host, while Firefox
+ and Chrome treat such characters as part of the path, starting with the "//" after the ':'
+ Behavior of non-ASCII characters is inconsistent, and since we need to have a host, we should punycode-encode
+ the host to be consistent with special schemes because percent-encoding hosts sometimes is inconsistent.
+
+ This solution was proposed to the spec in https://github.com/whatwg/url/issues/148
+
+ Covered by updated API and layout tests.
+
+ * platform/URLParser.cpp:
+ (WebCore::URLParser::parse):
+ (WebCore::URLParser::percentDecode):
+ (WebCore::URLParser::domainToASCII):
+ (WebCore::URLParser::hasInvalidDomainCharacter):
+ (WebCore::URLParser::parseHostAndPort):
+ (WebCore::URLParser::formURLDecode):
+ (WebCore::percentDecode): Deleted.
+ (WebCore::domainToASCII): Deleted.
+ (WebCore::hasInvalidDomainCharacter): Deleted.
+ (WebCore::formURLDecode): Deleted.
+ * platform/URLParser.h:
+
</ins><span class="cx"> 2016-10-13 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> [Web IDL] Add support for [SameObject] extended attribute
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URLParser.cpp (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URLParser.cpp        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/Source/WebCore/platform/URLParser.cpp        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1871,9 +1871,12 @@
</span><span class="cx"> failure();
</span><span class="cx"> return;
</span><span class="cx"> } else {
</span><del>- syntaxViolation(c);
- appendToASCIIBuffer('/');
- m_url.m_pathEnd = m_url.m_portEnd + 1;
</del><ins>+ if (m_urlIsSpecial) {
+ syntaxViolation(c);
+ appendToASCIIBuffer('/');
+ m_url.m_pathEnd = m_url.m_portEnd + 1;
+ } else
+ m_url.m_pathEnd = m_url.m_portEnd;
</ins><span class="cx"> }
</span><span class="cx"> m_url.m_pathAfterLastSlash = m_url.m_pathEnd;
</span><span class="cx"> m_url.m_queryEnd = m_url.m_pathEnd;
</span><span class="lines">@@ -1885,9 +1888,12 @@
</span><span class="cx"> failure();
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- syntaxViolation(c);
- appendToASCIIBuffer('/');
- m_url.m_pathEnd = m_url.m_portEnd + 1;
</del><ins>+ if (m_urlIsSpecial) {
+ syntaxViolation(c);
+ appendToASCIIBuffer('/');
+ m_url.m_pathEnd = m_url.m_portEnd + 1;
+ } else
+ m_url.m_pathEnd = m_url.m_portEnd;
</ins><span class="cx"> m_url.m_pathAfterLastSlash = m_url.m_pathEnd;
</span><span class="cx"> m_url.m_queryEnd = m_url.m_pathEnd;
</span><span class="cx"> m_url.m_fragmentEnd = m_url.m_pathEnd;
</span><span class="lines">@@ -2422,9 +2428,8 @@
</span><span class="cx"> return address;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-const size_t defaultInlineBufferSize = 2048;
-
-static Vector<LChar, defaultInlineBufferSize> percentDecode(const LChar* input, size_t length)
</del><ins>+template<typename CharacterType>
+Vector<LChar, URLParser::defaultInlineBufferSize> URLParser::percentDecode(const LChar* input, size_t length, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition)
</ins><span class="cx"> {
</span><span class="cx"> Vector<LChar, defaultInlineBufferSize> output;
</span><span class="cx"> output.reserveInitialCapacity(length);
</span><span class="lines">@@ -2435,6 +2440,7 @@
</span><span class="cx"> output.uncheckedAppend(byte);
</span><span class="cx"> else if (length > 2 && i < length - 2) {
</span><span class="cx"> if (isASCIIHexDigit(input[i + 1]) && isASCIIHexDigit(input[i + 2])) {
</span><ins>+ syntaxViolation(iteratorForSyntaxViolationPosition);
</ins><span class="cx"> output.uncheckedAppend(toASCIIHexValue(input[i + 1], input[i + 2]));
</span><span class="cx"> i += 2;
</span><span class="cx"> } else
</span><span class="lines">@@ -2444,6 +2450,27 @@
</span><span class="cx"> }
</span><span class="cx"> return output;
</span><span class="cx"> }
</span><ins>+
+Vector<LChar, URLParser::defaultInlineBufferSize> URLParser::percentDecode(const LChar* input, size_t length)
+{
+ Vector<LChar, defaultInlineBufferSize> output;
+ output.reserveInitialCapacity(length);
+
+ for (size_t i = 0; i < length; ++i) {
+ uint8_t byte = input[i];
+ if (byte != '%')
+ output.uncheckedAppend(byte);
+ else if (length > 2 && i < length - 2) {
+ if (isASCIIHexDigit(input[i + 1]) && isASCIIHexDigit(input[i + 2])) {
+ output.uncheckedAppend(toASCIIHexValue(input[i + 1], input[i + 2]));
+ i += 2;
+ } else
+ output.uncheckedAppend(byte);
+ } else
+ output.uncheckedAppend(byte);
+ }
+ return output;
+}
</ins><span class="cx">
</span><span class="cx"> ALWAYS_INLINE static bool containsOnlyASCII(const String& string)
</span><span class="cx"> {
</span><span class="lines">@@ -2452,7 +2479,8 @@
</span><span class="cx"> return charactersAreAllASCII(string.characters16(), string.length());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static Optional<Vector<LChar, defaultInlineBufferSize>> domainToASCII(const String& domain)
</del><ins>+template<typename CharacterType>
+Optional<Vector<LChar, URLParser::defaultInlineBufferSize>> URLParser::domainToASCII(const String& domain, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition)
</ins><span class="cx"> {
</span><span class="cx"> Vector<LChar, defaultInlineBufferSize> ascii;
</span><span class="cx"> if (containsOnlyASCII(domain)) {
</span><span class="lines">@@ -2460,13 +2488,29 @@
</span><span class="cx"> if (domain.is8Bit()) {
</span><span class="cx"> const LChar* characters = domain.characters8();
</span><span class="cx"> ascii.reserveInitialCapacity(length);
</span><del>- for (size_t i = 0; i < length; ++i)
- ascii.uncheckedAppend(toASCIILower(characters[i]));
</del><ins>+ if (m_urlIsSpecial) {
+ for (size_t i = 0; i < length; ++i) {
+ if (UNLIKELY(isASCIIUpper(characters[i])))
+ syntaxViolation(iteratorForSyntaxViolationPosition);
+ ascii.uncheckedAppend(toASCIILower(characters[i]));
+ }
+ } else {
+ for (size_t i = 0; i < length; ++i)
+ ascii.uncheckedAppend(characters[i]);
+ }
</ins><span class="cx"> } else {
</span><span class="cx"> const UChar* characters = domain.characters16();
</span><span class="cx"> ascii.reserveInitialCapacity(length);
</span><del>- for (size_t i = 0; i < length; ++i)
- ascii.uncheckedAppend(toASCIILower(characters[i]));
</del><ins>+ if (m_urlIsSpecial) {
+ for (size_t i = 0; i < length; ++i) {
+ if (UNLIKELY(isASCIIUpper(characters[i])))
+ syntaxViolation(iteratorForSyntaxViolationPosition);
+ ascii.uncheckedAppend(toASCIILower(characters[i]));
+ }
+ } else {
+ for (size_t i = 0; i < length; ++i)
+ ascii.uncheckedAppend(characters[i]);
+ }
</ins><span class="cx"> }
</span><span class="cx"> return ascii;
</span><span class="cx"> }
</span><span class="lines">@@ -2491,6 +2535,8 @@
</span><span class="cx"> ASSERT(!isASCIIUpper(hostnameBuffer[i]));
</span><span class="cx"> }
</span><span class="cx"> ascii.append(hostnameBuffer, numCharactersConverted);
</span><ins>+ if (domain != StringView(ascii.data(), ascii.size()))
+ syntaxViolation(iteratorForSyntaxViolationPosition);
</ins><span class="cx"> return ascii;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2498,7 +2544,7 @@
</span><span class="cx"> return Nullopt;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static bool hasInvalidDomainCharacter(const Vector<LChar, defaultInlineBufferSize>& asciiDomain)
</del><ins>+bool URLParser::hasInvalidDomainCharacter(const Vector<LChar, URLParser::defaultInlineBufferSize>& asciiDomain)
</ins><span class="cx"> {
</span><span class="cx"> for (size_t i = 0; i < asciiDomain.size(); ++i) {
</span><span class="cx"> if (isInvalidDomainCharacter(asciiDomain[i]))
</span><span class="lines">@@ -2606,9 +2652,12 @@
</span><span class="cx"> }
</span><span class="cx"> for (; hostIterator != iterator; ++hostIterator) {
</span><span class="cx"> if (LIKELY(!isTabOrNewline(*hostIterator))) {
</span><del>- if (UNLIKELY(isASCIIUpper(*hostIterator)))
- syntaxViolation(hostIterator);
- appendToASCIIBuffer(toASCIILower(*hostIterator));
</del><ins>+ if (m_urlIsSpecial) {
+ if (UNLIKELY(isASCIIUpper(*hostIterator)))
+ syntaxViolation(hostIterator);
+ appendToASCIIBuffer(toASCIILower(*hostIterator));
+ } else
+ appendToASCIIBuffer(*hostIterator);
</ins><span class="cx"> } else
</span><span class="cx"> syntaxViolation(hostIterator);
</span><span class="cx"> }
</span><span class="lines">@@ -2619,14 +2668,19 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- syntaxViolation(iterator);
</del><ins>+ auto hostBegin = iterator;
</ins><span class="cx">
</span><span class="cx"> Vector<LChar, defaultInlineBufferSize> utf8Encoded;
</span><span class="cx"> for (; !iterator.atEnd(); ++iterator) {
</span><del>- if (isTabOrNewline(*iterator))
</del><ins>+ if (UNLIKELY(isTabOrNewline(*iterator))) {
+ syntaxViolation(hostBegin);
</ins><span class="cx"> continue;
</span><ins>+ }
</ins><span class="cx"> if (*iterator == ':')
</span><span class="cx"> break;
</span><ins>+ if (UNLIKELY(!isASCII(*iterator)))
+ syntaxViolation(hostBegin);
+
</ins><span class="cx"> uint8_t buffer[U8_MAX_LENGTH];
</span><span class="cx"> int32_t offset = 0;
</span><span class="cx"> UBool error = false;
</span><span class="lines">@@ -2635,9 +2689,11 @@
</span><span class="cx"> // FIXME: Check error.
</span><span class="cx"> utf8Encoded.append(buffer, offset);
</span><span class="cx"> }
</span><del>- Vector<LChar, defaultInlineBufferSize> percentDecoded = percentDecode(utf8Encoded.data(), utf8Encoded.size());
</del><ins>+ Vector<LChar, defaultInlineBufferSize> percentDecoded = percentDecode(utf8Encoded.data(), utf8Encoded.size(), hostBegin);
</ins><span class="cx"> String domain = String::fromUTF8(percentDecoded.data(), percentDecoded.size());
</span><del>- auto asciiDomain = domainToASCII(domain);
</del><ins>+ if (domain != StringView(percentDecoded.data(), percentDecoded.size()))
+ syntaxViolation(hostBegin);
+ auto asciiDomain = domainToASCII(domain, hostBegin);
</ins><span class="cx"> if (!asciiDomain || hasInvalidDomainCharacter(asciiDomain.value()))
</span><span class="cx"> return false;
</span><span class="cx"> Vector<LChar, defaultInlineBufferSize>& asciiDomainValue = asciiDomain.value();
</span><span class="lines">@@ -2661,7 +2717,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static Optional<String> formURLDecode(StringView input)
</del><ins>+Optional<String> URLParser::formURLDecode(StringView input)
</ins><span class="cx"> {
</span><span class="cx"> auto utf8 = input.utf8(StrictConversion);
</span><span class="cx"> if (utf8.isNull())
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformURLParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/URLParser.h (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/URLParser.h        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/Source/WebCore/platform/URLParser.h        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -57,6 +57,7 @@
</span><span class="cx"> const void* m_inputBegin { nullptr };
</span><span class="cx">
</span><span class="cx"> bool m_didSeeSyntaxViolation { false };
</span><ins>+ const static size_t defaultInlineBufferSize = 2048;
</ins><span class="cx">
</span><span class="cx"> template<typename CharacterType> void parse(const CharacterType*, const unsigned length, const URL&, const TextEncoding&);
</span><span class="cx"> template<typename CharacterType> void parseAuthority(CodePointIterator<CharacterType>);
</span><span class="lines">@@ -86,6 +87,11 @@
</span><span class="cx"> template<typename UnsignedIntegerType> void appendNumberToASCIIBuffer(UnsignedIntegerType);
</span><span class="cx"> template<bool(*isInCodeSet)(UChar32), typename CharacterType> void utf8PercentEncode(const CodePointIterator<CharacterType>&);
</span><span class="cx"> template<typename CharacterType> void utf8QueryEncode(const CodePointIterator<CharacterType>&);
</span><ins>+ template<typename CharacterType> Optional<Vector<LChar, defaultInlineBufferSize>> domainToASCII(const String&, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition);
+ template<typename CharacterType> Vector<LChar, defaultInlineBufferSize> percentDecode(const LChar*, size_t, const CodePointIterator<CharacterType>& iteratorForSyntaxViolationPosition);
+ static Vector<LChar, defaultInlineBufferSize> percentDecode(const LChar*, size_t);
+ static Optional<String> formURLDecode(StringView input);
+ static bool hasInvalidDomainCharacter(const Vector<LChar, defaultInlineBufferSize>&);
</ins><span class="cx"> void percentEncodeByte(uint8_t);
</span><span class="cx"> void appendToASCIIBuffer(UChar32);
</span><span class="cx"> void appendToASCIIBuffer(const char*, size_t);
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/Tools/ChangeLog        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -1,5 +1,16 @@
</span><span class="cx"> 2016-10-13 Alex Christensen <achristensen@webkit.org>
</span><span class="cx">
</span><ins>+ Hosts of URLs with non-special schemes should be case-sensitive, and non-ASCII characters in such hosts should be punycode-encoded
+ https://bugs.webkit.org/show_bug.cgi?id=163413
+
+ Reviewed by Tim Horton.
+
+ * TestWebKitAPI/Tests/WebCore/URLParser.cpp:
+ (TestWebKitAPI::TEST_F):
+ Update parsing results. There are now fewer differences between the new URLParser and the old URL::parse.
+
+2016-10-13 Alex Christensen <achristensen@webkit.org>
+
</ins><span class="cx"> Rebase API tests after r207305.
</span><span class="cx">
</span><span class="cx"> * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
</span></span></pre></div>
<a id="trunkToolsTestWebKitAPITestsWebCoreURLParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp (207320 => 207321)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp        2016-10-14 02:58:18 UTC (rev 207320)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/URLParser.cpp        2016-10-14 04:09:33 UTC (rev 207321)
</span><span class="lines">@@ -656,9 +656,7 @@
</span><span class="cx"> checkRelativeURLDifferences(":foo.com\\", "notspecial://example.org/foo/bar",
</span><span class="cx"> {"notspecial", "", "", "example.org", 0, "/foo/:foo.com\\", "", "", "notspecial://example.org/foo/:foo.com\\"},
</span><span class="cx"> {"notspecial", "", "", "example.org", 0, "/foo/:foo.com/", "", "", "notspecial://example.org/foo/:foo.com/"});
</span><del>- checkURLDifferences("sc://pa",
- {"sc", "", "", "pa", 0, "/", "", "", "sc://pa/"},
- {"sc", "", "", "pa", 0, "", "", "", "sc://pa"});
</del><ins>+ checkURL("sc://pa", {"sc", "", "", "pa", 0, "", "", "", "sc://pa"});
</ins><span class="cx"> checkRelativeURLDifferences("notspecial:\\\\foo.com\\", "http://example.org/foo/bar",
</span><span class="cx"> {"notspecial", "", "", "", 0, "\\\\foo.com\\", "", "", "notspecial:\\\\foo.com\\"},
</span><span class="cx"> {"notspecial", "", "", "foo.com", 0, "/", "", "", "notspecial://foo.com/"});
</span><span class="lines">@@ -789,7 +787,7 @@
</span><span class="cx"> {"notspecial", "@test@test", "", "example", 800, "/path@end", "", "", "notspecial://%40test%40test@example:800/path@end"},
</span><span class="cx"> {"", "", "", "", 0, "", "", "", "notspecial://@test@test@example:800/path@end"});
</span><span class="cx"> checkURLDifferences("notspecial://@test@test@example:800\\path@end",
</span><del>- {"notspecial", "@test@test@example", "800\\path", "end", 0, "/", "", "", "notspecial://%40test%40test%40example:800%5Cpath@end/"},
</del><ins>+ {"notspecial", "@test@test@example", "800\\path", "end", 0, "", "", "", "notspecial://%40test%40test%40example:800%5Cpath@end"},
</ins><span class="cx"> {"", "", "", "", 0, "", "", "", "notspecial://@test@test@example:800\\path@end"});
</span><span class="cx"> checkURLDifferences("http://%48OsT",
</span><span class="cx"> {"http", "", "", "host", 0, "/", "", "", "http://host/"},
</span><span class="lines">@@ -893,15 +891,14 @@
</span><span class="cx"> checkRelativeURLDifferences("http://f:010/c", "http://example.org/foo/bar",
</span><span class="cx"> {"http", "", "", "f", 10, "/c", "", "", "http://f:10/c"},
</span><span class="cx"> {"http", "", "", "f", 10, "/c", "", "", "http://f:010/c"});
</span><del>- checkURLDifferences("notspecial://HoSt",
- {"notspecial", "", "", "host", 0, "/", "", "", "notspecial://host/"},
- {"notspecial", "", "", "HoSt", 0, "", "", "", "notspecial://HoSt"});
</del><ins>+ checkURL("notspecial://HoSt", {"notspecial", "", "", "HoSt", 0, "", "", "", "notspecial://HoSt"});
+ checkURLDifferences("notspecial://H%6FSt",
+ {"notspecial", "", "", "HoSt", 0, "", "", "", "notspecial://HoSt"},
+ {"notspecial", "", "", "H%6FSt", 0, "", "", "", "notspecial://H%6FSt"});
</ins><span class="cx"> checkURLDifferences("notspecial://H%4fSt",
</span><del>- {"notspecial", "", "", "host", 0, "/", "", "", "notspecial://host/"},
</del><ins>+ {"notspecial", "", "", "HOSt", 0, "", "", "", "notspecial://HOSt"},
</ins><span class="cx"> {"notspecial", "", "", "H%4fSt", 0, "", "", "", "notspecial://H%4fSt"});
</span><del>- checkURLDifferences(utf16String(u"notspecial://H😍ßt"),
- {"notspecial", "", "", "xn--hsst-qc83c", 0, "/", "", "", "notspecial://xn--hsst-qc83c/"},
- {"notspecial", "", "", "xn--hsst-qc83c", 0, "", "", "", "notspecial://xn--hsst-qc83c"}, testTabsValueForSurrogatePairs);
</del><ins>+ checkURL(utf16String(u"notspecial://H😍ßt"), {"notspecial", "", "", "xn--hsst-qc83c", 0, "", "", "", "notspecial://xn--hsst-qc83c"}, testTabsValueForSurrogatePairs);
</ins><span class="cx"> checkURLDifferences("http://[ffff:aaaa:cccc:eeee:bbbb:dddd:255.255.255.255]/",
</span><span class="cx"> {"http", "", "", "[ffff:aaaa:cccc:eeee:bbbb:dddd:ffff:ffff]", 0, "/", "", "", "http://[ffff:aaaa:cccc:eeee:bbbb:dddd:ffff:ffff]/"},
</span><span class="cx"> {"http", "", "", "[ffff:aaaa:cccc:eeee:bbbb:dddd:255.255.255.255]", 0, "/", "", "", "http://[ffff:aaaa:cccc:eeee:bbbb:dddd:255.255.255.255]/"}, TestTabs::No);
</span><span class="lines">@@ -1046,26 +1043,17 @@
</span><span class="cx"> {"wss", "", "", "host", 444, "/", "", "", "wss://host:444/"},
</span><span class="cx"> {"wss", "", "", "host", 444, "", "", "", "wss://host:444"});
</span><span class="cx">
</span><del>- // 990 is the default ftps port in URL::parse, but it's not in the URL spec. Maybe it should be.
</del><span class="cx"> checkURL("fTpS://host:990/", {"ftps", "", "", "host", 990, "/", "", "", "ftps://host:990/"});
</span><span class="cx"> checkURL("ftps://host:990/", {"ftps", "", "", "host", 990, "/", "", "", "ftps://host:990/"});
</span><span class="cx"> checkURL("ftps://host:991/", {"ftps", "", "", "host", 991, "/", "", "", "ftps://host:991/"});
</span><del>- checkURLDifferences("ftps://host:990",
- {"ftps", "", "", "host", 990, "/", "", "", "ftps://host:990/"},
- {"ftps", "", "", "host", 990, "", "", "", "ftps://host:990"});
- checkURLDifferences("ftps://host:991",
- {"ftps", "", "", "host", 991, "/", "", "", "ftps://host:991/"},
- {"ftps", "", "", "host", 991, "", "", "", "ftps://host:991"});
</del><ins>+ checkURL("ftps://host:990", {"ftps", "", "", "host", 990, "", "", "", "ftps://host:990"});
+ checkURL("ftps://host:991", {"ftps", "", "", "host", 991, "", "", "", "ftps://host:991"});
</ins><span class="cx">
</span><span class="cx"> checkURL("uNkNoWn://host:80/", {"unknown", "", "", "host", 80, "/", "", "", "unknown://host:80/"});
</span><span class="cx"> checkURL("unknown://host:80/", {"unknown", "", "", "host", 80, "/", "", "", "unknown://host:80/"});
</span><span class="cx"> checkURL("unknown://host:81/", {"unknown", "", "", "host", 81, "/", "", "", "unknown://host:81/"});
</span><del>- checkURLDifferences("unknown://host:80",
- {"unknown", "", "", "host", 80, "/", "", "", "unknown://host:80/"},
- {"unknown", "", "", "host", 80, "", "", "", "unknown://host:80"});
- checkURLDifferences("unknown://host:81",
- {"unknown", "", "", "host", 81, "/", "", "", "unknown://host:81/"},
- {"unknown", "", "", "host", 81, "", "", "", "unknown://host:81"});
</del><ins>+ checkURL("unknown://host:80", {"unknown", "", "", "host", 80, "", "", "", "unknown://host:80"});
+ checkURL("unknown://host:81", {"unknown", "", "", "host", 81, "", "", "", "unknown://host:81"});
</ins><span class="cx">
</span><span class="cx"> checkURL("file://host:0", {"file", "", "", "host", 0, "/", "", "", "file://host:0/"});
</span><span class="cx"> checkURL("file://host:80", {"file", "", "", "host", 80, "/", "", "", "file://host:80/"});
</span><span class="lines">@@ -1141,6 +1129,7 @@
</span><span class="cx"> shouldFail("http://[a:b:c:d:e:f:g:h:127.0.0.1]");
</span><span class="cx"> shouldFail("http://[a:b:c:d:e:f:127.0.0.0x11]"); // Chrome treats this as hex, Firefox and the spec fail
</span><span class="cx"> shouldFail("http://[a:b:c:d:e:f:127.0.-0.1]");
</span><ins>+ shouldFail("asdf://space InHost");
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // These are in the spec but not in the web platform tests.
</span><span class="lines">@@ -1148,9 +1137,7 @@
</span><span class="cx"> {
</span><span class="cx"> checkURL("about:\a\aabc", {"about", "", "", "", 0, "%07%07abc", "", "", "about:%07%07abc"});
</span><span class="cx"> checkURL("notspecial:\t\t\n\t", {"notspecial", "", "", "", 0, "", "", "", "notspecial:"});
</span><del>- checkURLDifferences("notspecial\t\t\n\t:\t\t\n\t/\t\t\n\t/\t\t\n\thost",
- {"notspecial", "", "", "host", 0, "/", "", "", "notspecial://host/"},
- {"notspecial", "", "", "host", 0, "", "", "", "notspecial://host"});
</del><ins>+ checkURL("notspecial\t\t\n\t:\t\t\n\t/\t\t\n\t/\t\t\n\thost", {"notspecial", "", "", "host", 0, "", "", "", "notspecial://host"});
</ins><span class="cx"> checkRelativeURL("http:", "http://example.org/foo/bar?query#fragment", {"http", "", "", "example.org", 0, "/foo/bar", "query", "", "http://example.org/foo/bar?query"});
</span><span class="cx"> checkRelativeURLDifferences("ws:", "http://example.org/foo/bar",
</span><span class="cx"> {"ws", "", "", "", 0, "", "", "", "ws:"},
</span></span></pre>
</div>
</div>
</body>
</html>