<!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>[211620] trunk/LayoutTests/imported/w3c</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/211620">211620</a></dd>
<dt>Author</dt> <dd>achristensen@apple.com</dd>
<dt>Date</dt> <dd>2017-02-02 22:20:56 -0800 (Thu, 02 Feb 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Update URL web platform tests
https://bugs.webkit.org/show_bug.cgi?id=167777
Reviewed by Ryosuke Niwa.
* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-origin-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml-expected.txt:
* web-platform-tests/url/a-element-origin-xhtml.xhtml:
* web-platform-tests/url/a-element-origin.html:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/a-element-xhtml.xhtml:
* web-platform-tests/url/a-element.html:
* web-platform-tests/url/setters_tests.json:
* web-platform-tests/url/url-constructor-expected.txt:
* web-platform-tests/url/url-origin-expected.txt:
* web-platform-tests/url/url-setters-expected.txt:
* web-platform-tests/url/urlencoded-parser-expected.txt: Added.
* web-platform-tests/url/urlencoded-parser.html: Added.
* web-platform-tests/url/urlsearchparams-constructor-expected.txt:
* web-platform-tests/url/urlsearchparams-constructor.html:
* web-platform-tests/url/urlsearchparams-sort-expected.txt:
* web-platform-tests/url/urlsearchparams-sort.html:
* web-platform-tests/url/urltestdata.json:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cChangeLog">trunk/LayoutTests/imported/w3c/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlxhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlaelementhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlsetters_testsjson">trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurloriginexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-origin-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsettersexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamsconstructorexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamsconstructorhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamssortexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamssorthtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort.html</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurltestdatajson">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json</a></li>
</ul>
<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlencodedparserexpectedtxt">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser-expected.txt</a></li>
<li><a href="#trunkLayoutTestsimportedw3cwebplatformtestsurlurlencodedparserhtml">trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser.html</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsimportedw3cChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/ChangeLog (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/ChangeLog        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/ChangeLog        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -1,3 +1,30 @@
</span><ins>+2017-02-02 Alex Christensen <achristensen@webkit.org>
+
+ Update URL web platform tests
+ https://bugs.webkit.org/show_bug.cgi?id=167777
+
+ Reviewed by Ryosuke Niwa.
+
+ * web-platform-tests/url/a-element-expected.txt:
+ * web-platform-tests/url/a-element-origin-expected.txt:
+ * web-platform-tests/url/a-element-origin-xhtml-expected.txt:
+ * web-platform-tests/url/a-element-origin-xhtml.xhtml:
+ * web-platform-tests/url/a-element-origin.html:
+ * web-platform-tests/url/a-element-xhtml-expected.txt:
+ * web-platform-tests/url/a-element-xhtml.xhtml:
+ * web-platform-tests/url/a-element.html:
+ * web-platform-tests/url/setters_tests.json:
+ * web-platform-tests/url/url-constructor-expected.txt:
+ * web-platform-tests/url/url-origin-expected.txt:
+ * web-platform-tests/url/url-setters-expected.txt:
+ * web-platform-tests/url/urlencoded-parser-expected.txt: Added.
+ * web-platform-tests/url/urlencoded-parser.html: Added.
+ * web-platform-tests/url/urlsearchparams-constructor-expected.txt:
+ * web-platform-tests/url/urlsearchparams-constructor.html:
+ * web-platform-tests/url/urlsearchparams-sort-expected.txt:
+ * web-platform-tests/url/urlsearchparams-sort.html:
+ * web-platform-tests/url/urltestdata.json:
+
</ins><span class="cx"> 2017-02-02 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> {}.toString.call(crossOriginWindow) should return "[object Object]"
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> PASS Parsing: </:23> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::23> against <http://example.org/foo/bar>
</span><del>-FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
</del><ins>+PASS Parsing: <foo://> against <http://example.org/foo/bar>
</ins><span class="cx"> PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http::@c:29> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
</span><span class="lines">@@ -261,6 +261,8 @@
</span><span class="cx"> PASS Parsing: <http://www.foo。bar.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://zyx.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/>
</span><ins>+PASS Parsing: <https://�> against <about:blank>
+PASS Parsing: <https://%EF%BF%BD> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://Go.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%41.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/>
</span><span class="lines">@@ -323,9 +325,27 @@
</span><span class="cx"> PASS Parsing: <data:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <javascript:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <mailto:/../> against <about:blank>
</span><del>-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: href expected "sc://xn--ida.test/" but got "sc://%C3%B1.test/"
</del><ins>+PASS Parsing: <sc://ñ.test/> against <about:blank>
+PASS Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank>
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <sc://@/> against <about:blank>
+PASS Parsing: <sc://te@s:t@/> against <about:blank>
+PASS Parsing: <sc://:/> against <about:blank>
+PASS Parsing: <sc://:12/> against <about:blank>
+PASS Parsing: <sc://[/> against <about:blank>
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <x> against <sc://ñ>
</ins><span class="cx"> PASS Parsing: <sc:\../> against <about:blank>
</span><span class="cx"> PASS Parsing: <sc::a@example.net> against <about:blank>
</span><ins>+PASS Parsing: <ftp://example.com%80/> against <about:blank>
+PASS Parsing: <ftp://example.com%A0/> against <about:blank>
+PASS Parsing: <https://example.com%80/> against <about:blank>
+PASS Parsing: <https://example.com%A0/> against <about:blank>
+PASS Parsing: <ftp://%e2%98%83> against <about:blank>
+PASS Parsing: <https://%e2%98%83> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -356,6 +376,8 @@
</span><span class="cx"> FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> PASS Parsing: <http://256.256.256.256.256> against <http://other.com/>
</span><ins>+PASS Parsing: <file:///C%3A/> against <about:blank>
+PASS Parsing: <file:///C%7C/> against <about:blank>
</ins><span class="cx"> PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html>
</span><span class="cx"> FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
</span><span class="cx"> PASS Parsing: <..> against <file:///>
</span><span class="lines">@@ -365,4 +387,28 @@
</span><span class="cx"> PASS Parsing: <..> against <file:///ab:/>
</span><span class="cx"> PASS Parsing: <..> against <file:///1:/>
</span><span class="cx"> PASS Parsing: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Parsing: <http://?> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://#> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <sc://ñ> against <about:blank>
+PASS Parsing: <sc://ñ?x> against <about:blank>
+PASS Parsing: <sc://ñ#x> against <about:blank>
+PASS Parsing: <#x> against <sc://ñ>
+PASS Parsing: <?x> against <sc://ñ>
+PASS Parsing: <sc://?> against <about:blank>
+PASS Parsing: <sc://#> against <about:blank>
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "///"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "////"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+PASS Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank>
+PASS Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank>
+PASS Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank>
+PASS Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank>
+PASS Parsing: <rsync://foo@host:911/sup> against <about:blank>
+PASS Parsing: <git://github.com/foo/bar.git> against <about:blank>
+PASS Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank>
+PASS Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank>
+PASS Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank>
+PASS Parsing: <git+https://github.com/foo/bar> against <about:blank>
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank>
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank>
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -245,8 +245,12 @@
</span><span class="cx"> PASS Parsing origin: <javascript:/../> against <about:blank>
</span><span class="cx"> FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
</span><span class="cx"> FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1.test"
</span><ins>+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://%1f!\"$&'()*+,-.;<=>^_`{|}~"
+FAIL Parsing origin: <x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
</ins><span class="cx"> FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><span class="cx"> FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><ins>+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
</ins><span class="cx"> PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -273,4 +277,21 @@
</span><span class="cx"> PASS Parsing origin: <http://0xffffffff> against <http://other.com/>
</span><span class="cx"> PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/>
</span><span class="cx"> PASS Parsing origin: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <#x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <?x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://foobar.com"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://foobar.com:23"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://10.10.10.10:7777"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://somehost:6379"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://host:911"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://github.com"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://myserver.com:6999"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://fw.example.org:9999"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://localhost:389"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://github.com"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -245,8 +245,12 @@
</span><span class="cx"> PASS Parsing origin: <javascript:/../> against <about:blank>
</span><span class="cx"> FAIL Parsing origin: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
</span><span class="cx"> FAIL Parsing origin: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1.test"
</span><ins>+FAIL Parsing origin: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://%1f!\"$&'()*+,-.;<=>^_`{|}~"
+FAIL Parsing origin: <x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
</ins><span class="cx"> FAIL Parsing origin: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><span class="cx"> FAIL Parsing origin: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><ins>+FAIL Parsing origin: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Parsing origin: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
</ins><span class="cx"> PASS Parsing origin: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Parsing origin: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Parsing origin: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -273,4 +277,21 @@
</span><span class="cx"> PASS Parsing origin: <http://0xffffffff> against <http://other.com/>
</span><span class="cx"> PASS Parsing origin: <http://256.256.256.256.256> against <http://other.com/>
</span><span class="cx"> PASS Parsing origin: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Parsing origin: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <#x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <?x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Parsing origin: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://foobar.com"
+FAIL Parsing origin: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://foobar.com:23"
+FAIL Parsing origin: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://10.10.10.10:7777"
+FAIL Parsing origin: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://somehost:6379"
+FAIL Parsing origin: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://host:911"
+FAIL Parsing origin: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://github.com"
+FAIL Parsing origin: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://myserver.com:6999"
+FAIL Parsing origin: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://fw.example.org:9999"
+FAIL Parsing origin: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://localhost:389"
+FAIL Parsing origin: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://github.com"
+FAIL Parsing origin: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Parsing origin: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginxhtmlxhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin-xhtml.xhtml        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -12,4 +12,4 @@
</span><span class="cx"> <script src="a-element-origin.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span><del>-<!-- Other dependencies: urltestdata.json -->
</del><ins>+<!-- Other dependencies: urltestdata.json -->
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementoriginhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-origin.html        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -5,4 +5,4 @@
</span><span class="cx"> <base id=base>
</span><span class="cx"> <div id=log></div>
</span><span class="cx"> <script src=a-element-origin.js></script>
</span><del>-<!-- Other dependencies: urltestdata.json -->
</del><ins>+<!-- Other dependencies: urltestdata.json -->
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> PASS Parsing: </:23> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::23> against <http://example.org/foo/bar>
</span><del>-FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
</del><ins>+PASS Parsing: <foo://> against <http://example.org/foo/bar>
</ins><span class="cx"> PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http::@c:29> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
</span><span class="lines">@@ -261,6 +261,8 @@
</span><span class="cx"> PASS Parsing: <http://www.foo。bar.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://zyx.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/>
</span><ins>+PASS Parsing: <https://�> against <about:blank>
+PASS Parsing: <https://%EF%BF%BD> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://Go.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%41.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/>
</span><span class="lines">@@ -323,9 +325,27 @@
</span><span class="cx"> PASS Parsing: <data:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <javascript:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <mailto:/../> against <about:blank>
</span><del>-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: href expected "sc://xn--ida.test/" but got "sc://%C3%B1.test/"
</del><ins>+PASS Parsing: <sc://ñ.test/> against <about:blank>
+PASS Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank>
+FAIL Parsing: <sc://\0/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc:// /> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://%/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <sc://@/> against <about:blank>
+PASS Parsing: <sc://te@s:t@/> against <about:blank>
+PASS Parsing: <sc://:/> against <about:blank>
+PASS Parsing: <sc://:12/> against <about:blank>
+PASS Parsing: <sc://[/> against <about:blank>
+FAIL Parsing: <sc://\/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <sc://]/> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <x> against <sc://ñ>
</ins><span class="cx"> PASS Parsing: <sc:\../> against <about:blank>
</span><span class="cx"> PASS Parsing: <sc::a@example.net> against <about:blank>
</span><ins>+PASS Parsing: <ftp://example.com%80/> against <about:blank>
+PASS Parsing: <ftp://example.com%A0/> against <about:blank>
+PASS Parsing: <https://example.com%80/> against <about:blank>
+PASS Parsing: <https://example.com%A0/> against <about:blank>
+PASS Parsing: <ftp://%e2%98%83> against <about:blank>
+PASS Parsing: <https://%e2%98%83> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -356,6 +376,8 @@
</span><span class="cx"> FAIL Parsing: <http://0xffffffff1> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
</span><span class="cx"> PASS Parsing: <http://256.256.256.256.256> against <http://other.com/>
</span><ins>+PASS Parsing: <file:///C%3A/> against <about:blank>
+PASS Parsing: <file:///C%7C/> against <about:blank>
</ins><span class="cx"> PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html>
</span><span class="cx"> FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
</span><span class="cx"> PASS Parsing: <..> against <file:///>
</span><span class="lines">@@ -365,4 +387,28 @@
</span><span class="cx"> PASS Parsing: <..> against <file:///ab:/>
</span><span class="cx"> PASS Parsing: <..> against <file:///1:/>
</span><span class="cx"> PASS Parsing: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Parsing: <http://?> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+FAIL Parsing: <http://#> against <about:blank> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <sc://ñ> against <about:blank>
+PASS Parsing: <sc://ñ?x> against <about:blank>
+PASS Parsing: <sc://ñ#x> against <about:blank>
+PASS Parsing: <#x> against <sc://ñ>
+PASS Parsing: <?x> against <sc://ñ>
+PASS Parsing: <sc://?> against <about:blank>
+PASS Parsing: <sc://#> against <about:blank>
+FAIL Parsing: <///> against <sc://x/> assert_equals: href expected "sc:///" but got "///"
+FAIL Parsing: <////> against <sc://x/> assert_equals: href expected "sc:////" but got "////"
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+PASS Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank>
+PASS Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank>
+PASS Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank>
+PASS Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank>
+PASS Parsing: <rsync://foo@host:911/sup> against <about:blank>
+PASS Parsing: <git://github.com/foo/bar.git> against <about:blank>
+PASS Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank>
+PASS Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank>
+PASS Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank>
+PASS Parsing: <git+https://github.com/foo/bar> against <about:blank>
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank>
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank>
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementxhtmlxhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml.xhtml        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -12,4 +12,4 @@
</span><span class="cx"> <script src="a-element.js"></script>
</span><span class="cx"> </body>
</span><span class="cx"> </html>
</span><del>-<!-- Other dependencies: urltestdata.json -->
</del><ins>+<!-- Other dependencies: urltestdata.json -->
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlaelementhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element.html        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -5,4 +5,4 @@
</span><span class="cx"> <base id=base>
</span><span class="cx"> <div id=log></div>
</span><span class="cx"> <script src=a-element.js></script>
</span><del>-<!-- Other dependencies: urltestdata.json -->
</del><ins>+<!-- Other dependencies: urltestdata.json -->
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlsetters_testsjson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/setters_tests.json        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -27,7 +27,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -35,7 +35,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "b",
</span><span class="cx"> "expected": {
</span><del>- "href": "b://example.net/",
</del><ins>+ "href": "b://example.net",
</ins><span class="cx"> "protocol": "b:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "B",
</span><span class="cx"> "expected": {
</span><del>- "href": "b://example.net/",
</del><ins>+ "href": "b://example.net",
</ins><span class="cx"> "protocol": "b:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "é",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "0b",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "+b",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "bC0+-.",
</span><span class="cx"> "expected": {
</span><del>- "href": "bc0+-.://example.net/",
</del><ins>+ "href": "bc0+-.://example.net",
</ins><span class="cx"> "protocol": "bc0+-.:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "b,c",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -97,7 +97,7 @@
</span><span class="cx"> "href": "a://example.net",
</span><span class="cx"> "new_value": "bé",
</span><span class="cx"> "expected": {
</span><del>- "href": "a://example.net/",
</del><ins>+ "href": "a://example.net",
</ins><span class="cx"> "protocol": "a:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> "href": "ssh://me@example.net",
</span><span class="cx"> "new_value": "http",
</span><span class="cx"> "expected": {
</span><del>- "href": "ssh://me@example.net/",
</del><ins>+ "href": "ssh://me@example.net",
</ins><span class="cx"> "protocol": "ssh:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> "href": "ssh://me@example.net",
</span><span class="cx"> "new_value": "gopher",
</span><span class="cx"> "expected": {
</span><del>- "href": "ssh://me@example.net/",
</del><ins>+ "href": "ssh://me@example.net",
</ins><span class="cx"> "protocol": "ssh:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> "href": "ssh://me@example.net",
</span><span class="cx"> "new_value": "file",
</span><span class="cx"> "expected": {
</span><del>- "href": "ssh://me@example.net/",
</del><ins>+ "href": "ssh://me@example.net",
</ins><span class="cx"> "protocol": "ssh:"
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="lines">@@ -347,6 +347,88 @@
</span><span class="cx"> ],
</span><span class="cx"> "host": [
</span><span class="cx"> {
</span><ins>+ "comment": "Non-special scheme",
+ "href": "sc://x/",
+ "new_value": "\u0000",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u0009",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u000A",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u000D",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": " ",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "#",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "/",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "?",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "@",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
</ins><span class="cx"> "comment": "Cannot-be-a-base means no host",
</span><span class="cx"> "href": "mailto:me@example.net",
</span><span class="cx"> "new_value": "example.com",
</span><span class="lines">@@ -567,7 +649,7 @@
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="cx"> {
</span><del>- "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain",
</del><ins>+ "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
</ins><span class="cx"> "href": "view-source+http://example.net/path",
</span><span class="cx"> "new_value": "example.com\\stuff",
</span><span class="cx"> "expected": {
</span><span class="lines">@@ -681,6 +763,88 @@
</span><span class="cx"> ],
</span><span class="cx"> "hostname": [
</span><span class="cx"> {
</span><ins>+ "comment": "Non-special scheme",
+ "href": "sc://x/",
+ "new_value": "\u0000",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u0009",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u000A",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "\u000D",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": " ",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "#",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "/",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "?",
+ "expected": {
+ "href": "sc:///",
+ "host": "",
+ "hostname": ""
+ }
+ },
+ {
+ "href": "sc://x/",
+ "new_value": "@",
+ "expected": {
+ "href": "sc://x/",
+ "host": "x",
+ "hostname": "x"
+ }
+ },
+ {
</ins><span class="cx"> "comment": "Cannot-be-a-base means no host",
</span><span class="cx"> "href": "mailto:me@example.net",
</span><span class="cx"> "new_value": "example.com",
</span><span class="lines">@@ -824,7 +988,7 @@
</span><span class="cx"> }
</span><span class="cx"> },
</span><span class="cx"> {
</span><del>- "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain",
</del><ins>+ "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts",
</ins><span class="cx"> "href": "view-source+http://example.net/path",
</span><span class="cx"> "new_value": "example.com\\stuff",
</span><span class="cx"> "expected": {
</span><span class="lines">@@ -1114,6 +1278,33 @@
</span><span class="cx"> "href": "http://example.net/%3F",
</span><span class="cx"> "pathname": "/%3F"
</span><span class="cx"> }
</span><ins>+ },
+ {
+ "comment": "# needs to be encoded",
+ "href": "http://example.net",
+ "new_value": "#",
+ "expected": {
+ "href": "http://example.net/%23",
+ "pathname": "/%23"
+ }
+ },
+ {
+ "comment": "? needs to be encoded, non-special scheme",
+ "href": "sc://example.net",
+ "new_value": "?",
+ "expected": {
+ "href": "sc://example.net/%3F",
+ "pathname": "/%3F"
+ }
+ },
+ {
+ "comment": "# needs to be encoded, non-special scheme",
+ "href": "sc://example.net",
+ "new_value": "#",
+ "expected": {
+ "href": "sc://example.net/%23",
+ "pathname": "/%23"
+ }
</ins><span class="cx"> }
</span><span class="cx"> ],
</span><span class="cx"> "search": [
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> PASS Parsing: </:23> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <::23> against <http://example.org/foo/bar>
</span><del>-FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
</del><ins>+PASS Parsing: <foo://> against <http://example.org/foo/bar>
</ins><span class="cx"> PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http::@c:29> against <http://example.org/foo/bar>
</span><span class="cx"> PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar>
</span><span class="lines">@@ -265,6 +265,8 @@
</span><span class="cx"> PASS Parsing: <http://www.foo。bar.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://zyx.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/>
</span><ins>+PASS Parsing: <https://�> against <about:blank>
+PASS Parsing: <https://%EF%BF%BD> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://Go.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%41.com> against <http://other.com/>
</span><span class="cx"> PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/>
</span><span class="lines">@@ -328,9 +330,32 @@
</span><span class="cx"> PASS Parsing: <data:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <javascript:/../> against <about:blank>
</span><span class="cx"> PASS Parsing: <mailto:/../> against <about:blank>
</span><del>-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: href expected "sc://xn--ida.test/" but got "sc://%C3%B1.test/"
</del><ins>+PASS Parsing: <sc://ñ.test/> against <about:blank>
+PASS Parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank>
+FAIL Parsing: <sc://\0/> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+FAIL Parsing: <sc:// /> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+FAIL Parsing: <sc://%/> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <sc://@/> against <about:blank>
+PASS Parsing: <sc://te@s:t@/> against <about:blank>
+PASS Parsing: <sc://:/> against <about:blank>
+PASS Parsing: <sc://:12/> against <about:blank>
+PASS Parsing: <sc://[/> against <about:blank>
+FAIL Parsing: <sc://\/> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+FAIL Parsing: <sc://]/> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <x> against <sc://ñ>
</ins><span class="cx"> PASS Parsing: <sc:\../> against <about:blank>
</span><span class="cx"> PASS Parsing: <sc::a@example.net> against <about:blank>
</span><ins>+PASS Parsing: <ftp://example.com%80/> against <about:blank>
+PASS Parsing: <ftp://example.com%A0/> against <about:blank>
+PASS Parsing: <https://example.com%80/> against <about:blank>
+PASS Parsing: <https://example.com%A0/> against <about:blank>
+PASS Parsing: <ftp://%e2%98%83> against <about:blank>
+PASS Parsing: <https://%e2%98%83> against <about:blank>
</ins><span class="cx"> PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -366,6 +391,8 @@
</span><span class="cx"> FAIL Parsing: <http://256.256.256.256> against <http://other.com/> assert_throws: function "function () {
</span><span class="cx"> bURL(expected.input, expected.bas..." did not throw
</span><span class="cx"> PASS Parsing: <http://256.256.256.256.256> against <http://other.com/>
</span><ins>+PASS Parsing: <file:///C%3A/> against <about:blank>
+PASS Parsing: <file:///C%7C/> against <about:blank>
</ins><span class="cx"> PASS Parsing: <pix/submit.gif> against <file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html>
</span><span class="cx"> FAIL Parsing: <..> against <file:///C:/> assert_equals: href expected "file:///C:/" but got "file:///"
</span><span class="cx"> PASS Parsing: <..> against <file:///>
</span><span class="lines">@@ -375,4 +402,30 @@
</span><span class="cx"> PASS Parsing: <..> against <file:///ab:/>
</span><span class="cx"> PASS Parsing: <..> against <file:///1:/>
</span><span class="cx"> PASS Parsing: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Parsing: <http://?> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+FAIL Parsing: <http://#> against <about:blank> assert_throws: function "function () {
+ bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <sc://ñ> against <about:blank>
+PASS Parsing: <sc://ñ?x> against <about:blank>
+PASS Parsing: <sc://ñ#x> against <about:blank>
+PASS Parsing: <#x> against <sc://ñ>
+PASS Parsing: <?x> against <sc://ñ>
+PASS Parsing: <sc://?> against <about:blank>
+PASS Parsing: <sc://#> against <about:blank>
+FAIL Parsing: <///> against <sc://x/> Type error
+FAIL Parsing: <////> against <sc://x/> Type error
+FAIL Parsing: <////x/> against <sc://x/> assert_equals: href expected "sc:////x/" but got "sc://x/"
+PASS Parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank>
+PASS Parsing: <telnet://user:pass@foobar.com:23/> against <about:blank>
+PASS Parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank>
+PASS Parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank>
+PASS Parsing: <rsync://foo@host:911/sup> against <about:blank>
+PASS Parsing: <git://github.com/foo/bar.git> against <about:blank>
+PASS Parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank>
+PASS Parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank>
+PASS Parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank>
+PASS Parsing: <git+https://github.com/foo/bar> against <about:blank>
+PASS Parsing: <urn:ietf:rfc:2648> against <about:blank>
+PASS Parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank>
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurloriginexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-origin-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-origin-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-origin-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -245,8 +245,12 @@
</span><span class="cx"> PASS Origin parsing: <javascript:/../> against <about:blank>
</span><span class="cx"> FAIL Origin parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
</span><span class="cx"> FAIL Origin parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1.test"
</span><ins>+FAIL Origin parsing: <sc://!"$&'()*+,-.;<=>^_`{|}~/> against <about:blank> assert_equals: origin expected "null" but got "sc://%1f!\"$&'()*+,-.;<=>^_`{|}~"
+FAIL Origin parsing: <x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
</ins><span class="cx"> FAIL Origin parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><span class="cx"> FAIL Origin parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
</span><ins>+FAIL Origin parsing: <ftp://%e2%98%83> against <about:blank> assert_equals: origin expected "ftp://☃" but got "ftp://xn--n3h"
+FAIL Origin parsing: <https://%e2%98%83> against <about:blank> assert_equals: origin expected "https://☃" but got "https://xn--n3h"
</ins><span class="cx"> PASS Origin parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank>
</span><span class="cx"> PASS Origin parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank>
</span><span class="cx"> PASS Origin parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank>
</span><span class="lines">@@ -273,4 +277,21 @@
</span><span class="cx"> PASS Origin parsing: <http://0xffffffff> against <http://other.com/>
</span><span class="cx"> PASS Origin parsing: <http://256.256.256.256.256> against <http://other.com/>
</span><span class="cx"> PASS Origin parsing: <http://[1:0::]> against <http://example.net/>
</span><ins>+FAIL Origin parsing: <sc://ñ> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Origin parsing: <sc://ñ?x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Origin parsing: <sc://ñ#x> against <about:blank> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Origin parsing: <#x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Origin parsing: <?x> against <sc://ñ> assert_equals: origin expected "null" but got "sc://%c3%b1"
+FAIL Origin parsing: <tftp://foobar.com/someconfig;mode=netascii> against <about:blank> assert_equals: origin expected "null" but got "tftp://foobar.com"
+FAIL Origin parsing: <telnet://user:pass@foobar.com:23/> against <about:blank> assert_equals: origin expected "null" but got "telnet://foobar.com:23"
+FAIL Origin parsing: <ut2004://10.10.10.10:7777/Index.ut2> against <about:blank> assert_equals: origin expected "null" but got "ut2004://10.10.10.10:7777"
+FAIL Origin parsing: <redis://foo:bar@somehost:6379/0?baz=bam&qux=baz> against <about:blank> assert_equals: origin expected "null" but got "redis://somehost:6379"
+FAIL Origin parsing: <rsync://foo@host:911/sup> against <about:blank> assert_equals: origin expected "null" but got "rsync://host:911"
+FAIL Origin parsing: <git://github.com/foo/bar.git> against <about:blank> assert_equals: origin expected "null" but got "git://github.com"
+FAIL Origin parsing: <irc://myserver.com:6999/channel?passwd> against <about:blank> assert_equals: origin expected "null" but got "irc://myserver.com:6999"
+FAIL Origin parsing: <dns://fw.example.org:9999/foo.bar.org?type=TXT> against <about:blank> assert_equals: origin expected "null" but got "dns://fw.example.org:9999"
+FAIL Origin parsing: <ldap://localhost:389/ou=People,o=JNDITutorial> against <about:blank> assert_equals: origin expected "null" but got "ldap://localhost:389"
+FAIL Origin parsing: <git+https://github.com/foo/bar> against <about:blank> assert_equals: origin expected "null" but got "git+https://github.com"
+FAIL Origin parsing: <urn:ietf:rfc:2648> against <about:blank> assert_equals: origin expected "null" but got "urn://"
+FAIL Origin parsing: <tag:joe@example.org,2001:foo/bar> against <about:blank> assert_equals: origin expected "null" but got "tag://"
</ins><span class="cx">
</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 (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -1,32 +1,32 @@
</span><span class="cx">
</span><span class="cx"> PASS Loading data…
</span><del>-FAIL URL: 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 <a>: 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 <area>: 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 URL: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL URL: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL URL: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL URL: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net/" but got "bc0+-.://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net/" but got "bc0+-.://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net/" but got "bc0+-.://example.net"
-FAIL URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL <area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
</del><ins>+PASS URL: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.
+PASS <a>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.
+PASS <area>: Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged.
+PASS URL: Setting <a://example.net>.protocol = 'b'
+PASS <a>: Setting <a://example.net>.protocol = 'b'
+PASS <area>: Setting <a://example.net>.protocol = 'b'
+PASS URL: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased
+PASS <a>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased
+PASS <area>: Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased
+PASS URL: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected
+PASS <a>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected
+PASS <area>: Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected
+PASS URL: Setting <a://example.net>.protocol = '0b' No leading digit
+PASS <a>: Setting <a://example.net>.protocol = '0b' No leading digit
+PASS <area>: Setting <a://example.net>.protocol = '0b' No leading digit
+PASS URL: Setting <a://example.net>.protocol = '+b' No leading punctuation
+PASS <a>: Setting <a://example.net>.protocol = '+b' No leading punctuation
+PASS <area>: Setting <a://example.net>.protocol = '+b' No leading punctuation
+PASS URL: Setting <a://example.net>.protocol = 'bC0+-.'
+PASS <a>: Setting <a://example.net>.protocol = 'bC0+-.'
+PASS <area>: Setting <a://example.net>.protocol = 'bC0+-.'
+PASS URL: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable
+PASS <a>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable
+PASS <area>: Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable
+PASS URL: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected
+PASS <a>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected
+PASS <area>: Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected
</ins><span class="cx"> FAIL URL: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
</span><span class="cx"> FAIL <a>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
</span><span class="cx"> FAIL <area>: Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special assert_equals: expected "http://example.net/" but got "b://example.net/"
</span><span class="lines">@@ -39,15 +39,15 @@
</span><span class="cx"> FAIL URL: 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 <a>: 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 <area>: 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><del>-FAIL URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net/" but got "http://me@example.net/"
-FAIL <a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net/" but got "http://me@example.net/"
-FAIL <area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net/" but got "http://me@example.net/"
-FAIL URL: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net/" but got "gopher://me@example.net/"
-FAIL <a>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net/" but got "gopher://me@example.net/"
-FAIL <area>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net/" but got "gopher://me@example.net/"
-FAIL URL: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net/" but got "ssh://me@example.net"
-FAIL <a>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net/" but got "file://me@example.net"
-FAIL <area>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net/" but got "file://me@example.net"
</del><ins>+FAIL URL: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special assert_equals: expected "ssh://me@example.net" but got "http://me@example.net/"
+FAIL URL: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'gopher' assert_equals: expected "ssh://me@example.net" but got "gopher://me@example.net/"
+PASS URL: Setting <ssh://me@example.net>.protocol = 'file'
+FAIL <a>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me@example.net"
+FAIL <area>: Setting <ssh://me@example.net>.protocol = 'file' assert_equals: expected "ssh://me@example.net" but got "file://me@example.net"
</ins><span class="cx"> FAIL URL: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
</span><span class="cx"> FAIL <a>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
</span><span class="cx"> FAIL <area>: Setting <nonsense:///test>.protocol = 'https' assert_equals: expected "nonsense:///test" but got "https://test/"
</span><span class="lines">@@ -117,6 +117,36 @@
</span><span class="cx"> PASS URL: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.
</span><span class="cx"> PASS <a>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.
</span><span class="cx"> PASS <area>: Setting <http://example.net>.password = '%c3%89té' Bytes already percent-encoded are left as-is.
</span><ins>+FAIL URL: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+FAIL <a>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+FAIL <area>: Setting <sc://x/>.host = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+PASS URL: Setting <sc://x/>.host = '        '
+PASS <a>: Setting <sc://x/>.host = '        '
+PASS <area>: Setting <sc://x/>.host = '        '
+PASS URL: Setting <sc://x/>.host = '
+'
+PASS <a>: Setting <sc://x/>.host = '
+'
+PASS <area>: Setting <sc://x/>.host = '
+'
+PASS URL: Setting <sc://x/>.host = '\r'
+PASS <a>: Setting <sc://x/>.host = '\r'
+PASS <area>: Setting <sc://x/>.host = '\r'
+FAIL URL: Setting <sc://x/>.host = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL <a>: Setting <sc://x/>.host = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL <area>: Setting <sc://x/>.host = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL URL: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL <a>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL <area>: Setting <sc://x/>.host = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL URL: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc:////"
+FAIL <a>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc:////"
+FAIL <area>: Setting <sc://x/>.host = '/' assert_equals: expected "sc:///" but got "sc:////"
+FAIL URL: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://?/"
+FAIL <a>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://?/"
+FAIL <area>: Setting <sc://x/>.host = '?' assert_equals: expected "sc:///" but got "sc://?/"
+PASS URL: Setting <sc://x/>.host = '@'
+FAIL <a>: Setting <sc://x/>.host = '@' assert_equals: expected "sc://x/" but got "sc://@/"
+FAIL <area>: Setting <sc://x/>.host = '@' assert_equals: expected "sc://x/" but got "sc://@/"
</ins><span class="cx"> PASS URL: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host
</span><span class="cx"> PASS <a>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host
</span><span class="cx"> PASS <area>: Setting <mailto:me@example.net>.host = 'example.com' Cannot-be-a-base means no host
</span><span class="lines">@@ -180,9 +210,9 @@
</span><span class="cx"> PASS URL: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes
</span><span class="cx"> PASS <a>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes
</span><span class="cx"> PASS <area>: Setting <http://example.net/path>.host = 'example.com:8080\stuff' Stuff after a \ delimiter is ignored for special schemes
</span><del>-FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
-FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
-FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
</del><ins>+FAIL URL: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.host = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
</ins><span class="cx"> PASS URL: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error
</span><span class="cx"> PASS <a>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error
</span><span class="cx"> PASS <area>: Setting <view-source+http://example.net/path>.host = 'example.com:8080stuff2' Anything other than ASCII digit stops the port parser in a setter but is not an error
</span><span class="lines">@@ -213,6 +243,36 @@
</span><span class="cx"> PASS URL: Setting <http://example.net/>.host = '[::1.]'
</span><span class="cx"> FAIL <a>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
</span><span class="cx"> FAIL <area>: Setting <http://example.net/>.host = '[::1.]' assert_equals: expected "http://example.net/" but got "http://[:0/"
</span><ins>+FAIL URL: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+FAIL <a>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+FAIL <area>: Setting <sc://x/>.hostname = '\0' Non-special scheme assert_equals: expected "sc://x/" but got "sc://%00/"
+PASS URL: Setting <sc://x/>.hostname = '        '
+PASS <a>: Setting <sc://x/>.hostname = '        '
+PASS <area>: Setting <sc://x/>.hostname = '        '
+PASS URL: Setting <sc://x/>.hostname = '
+'
+PASS <a>: Setting <sc://x/>.hostname = '
+'
+PASS <area>: Setting <sc://x/>.hostname = '
+'
+PASS URL: Setting <sc://x/>.hostname = '\r'
+PASS <a>: Setting <sc://x/>.hostname = '\r'
+PASS <area>: Setting <sc://x/>.hostname = '\r'
+FAIL URL: Setting <sc://x/>.hostname = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL <a>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL <area>: Setting <sc://x/>.hostname = ' ' assert_equals: expected "sc://x/" but got "sc:// /"
+FAIL URL: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL <a>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL <area>: Setting <sc://x/>.hostname = '#' assert_equals: expected "sc:///" but got "sc://#/"
+FAIL URL: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <a>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL <area>: Setting <sc://x/>.hostname = '/' assert_equals: expected "sc:///" but got "sc://x/"
+FAIL URL: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://?/"
+FAIL <a>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://?/"
+FAIL <area>: Setting <sc://x/>.hostname = '?' assert_equals: expected "sc:///" but got "sc://?/"
+PASS URL: Setting <sc://x/>.hostname = '@'
+FAIL <a>: Setting <sc://x/>.hostname = '@' assert_equals: expected "sc://x/" but got "sc://@/"
+FAIL <area>: Setting <sc://x/>.hostname = '@' assert_equals: expected "sc://x/" but got "sc://@/"
</ins><span class="cx"> PASS URL: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host
</span><span class="cx"> PASS <a>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host
</span><span class="cx"> PASS <area>: Setting <mailto:me@example.net>.hostname = 'example.com' Cannot-be-a-base means no host
</span><span class="lines">@@ -255,9 +315,9 @@
</span><span class="cx"> FAIL URL: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com/stuff/path"
</span><span class="cx"> FAIL <a>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com/stuff/path"
</span><span class="cx"> FAIL <area>: Setting <http://example.net/path>.hostname = 'example.com\stuff' Stuff after a \ delimiter is ignored for special schemes assert_equals: expected "http://example.com/path" but got "http://example.com/stuff/path"
</span><del>-FAIL URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
-FAIL <a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
-FAIL <area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, and it’s invalid in a domain assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
</del><ins>+FAIL URL: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
+FAIL <a>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
+FAIL <area>: Setting <view-source+http://example.net/path>.hostname = 'example.com\stuff' \ is not a delimiter for non-special schemes, but still forbidden in hosts assert_equals: expected "view-source+http://example.net/path" but got "view-source+http://example.com\\stuff/path"
</ins><span class="cx"> PASS URL: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6
</span><span class="cx"> FAIL <a>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
</span><span class="cx"> FAIL <area>: Setting <http://example.net/>.hostname = '[google.com]' Broken IPv6 assert_equals: expected "http://example.net/" but got "http://[google.com]/"
</span><span class="lines">@@ -345,6 +405,15 @@
</span><span class="cx"> PASS URL: Setting <http://example.net>.pathname = '?' ? needs to be encoded
</span><span class="cx"> PASS <a>: Setting <http://example.net>.pathname = '?' ? needs to be encoded
</span><span class="cx"> PASS <area>: Setting <http://example.net>.pathname = '?' ? needs to be encoded
</span><ins>+PASS URL: Setting <http://example.net>.pathname = '#' # needs to be encoded
+PASS <a>: Setting <http://example.net>.pathname = '#' # needs to be encoded
+PASS <area>: Setting <http://example.net>.pathname = '#' # needs to be encoded
+PASS URL: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme
+PASS <a>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme
+PASS <area>: Setting <sc://example.net>.pathname = '?' ? needs to be encoded, non-special scheme
+PASS URL: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme
+PASS <a>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme
+PASS <area>: Setting <sc://example.net>.pathname = '#' # needs to be encoded, non-special scheme
</ins><span class="cx"> PASS URL: Setting <https://example.net#nav>.search = 'lang=fr'
</span><span class="cx"> PASS <a>: Setting <https://example.net#nav>.search = 'lang=fr'
</span><span class="cx"> PASS <area>: Setting <https://example.net#nav>.search = 'lang=fr'
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlencodedparserexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser-expected.txt (0 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser-expected.txt         (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -0,0 +1,92 @@
</span><ins>+
+PASS URLSearchParams constructed with: test
+FAIL request.formData() with input: test undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: test promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: test=
+FAIL request.formData() with input: test= undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: test= promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %EF%BB%BFtest=%EF%BB%BF
+FAIL request.formData() with input: %EF%BB%BFtest=%EF%BB%BF undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %EF%BB%BFtest=%EF%BB%BF promise_test: Unhandled rejection with value: "Not implemented"
+FAIL URLSearchParams constructed with: %FE%FF assert_array_equals: property 0, expected "��" but got ""
+FAIL request.formData() with input: %FE%FF undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %FE%FF promise_test: Unhandled rejection with value: "Not implemented"
+FAIL URLSearchParams constructed with: %FF%FE assert_array_equals: property 0, expected "��" but got ""
+FAIL request.formData() with input: %FF%FE undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %FF%FE promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: †&†=x
+FAIL request.formData() with input: †&†=x undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: †&†=x promise_test: Unhandled rejection with value: "Not implemented"
+FAIL URLSearchParams constructed with: %C2 assert_array_equals: property 0, expected "�" but got ""
+FAIL request.formData() with input: %C2 undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %C2 promise_test: Unhandled rejection with value: "Not implemented"
+FAIL URLSearchParams constructed with: %C2x assert_array_equals: property 0, expected "�x" but got ""
+FAIL request.formData() with input: %C2x undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %C2x promise_test: Unhandled rejection with value: "Not implemented"
+FAIL URLSearchParams constructed with: _charset_=windows-1252&test=%C2x assert_array_equals: property 1, expected "�x" but got ""
+FAIL request.formData() with input: _charset_=windows-1252&test=%C2x undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: _charset_=windows-1252&test=%C2x promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with:
+FAIL request.formData() with input: undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a
+FAIL request.formData() with input: a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=b
+FAIL request.formData() with input: a=b undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a=b promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=
+FAIL request.formData() with input: a= undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a= promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: =b
+FAIL request.formData() with input: =b undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: =b promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: &
+FAIL request.formData() with input: & undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: & promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: &a
+FAIL request.formData() with input: &a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: &a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a&
+FAIL request.formData() with input: a& undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a& promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a&a
+FAIL request.formData() with input: a&a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a&a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a&b&c
+FAIL request.formData() with input: a&b&c undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a&b&c promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=b&c=d
+FAIL request.formData() with input: a=b&c=d undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a=b&c=d promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=b&c=d&
+FAIL request.formData() with input: a=b&c=d& undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a=b&c=d& promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: &&&a=b&&&&c=d&
+FAIL request.formData() with input: &&&a=b&&&&c=d& undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: &&&a=b&&&&c=d& promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=a&a=b&a=c
+FAIL request.formData() with input: a=a&a=b&a=c undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a=a&a=b&a=c promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a==a
+FAIL request.formData() with input: a==a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a==a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: a=a+b+c+d
+FAIL request.formData() with input: a=a+b+c+d undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: a=a+b+c+d promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %=a
+FAIL request.formData() with input: %=a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %=a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %a=a
+FAIL request.formData() with input: %a=a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %a=a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %a_=a
+FAIL request.formData() with input: %a_=a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %a_=a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %61=a
+FAIL request.formData() with input: %61=a undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %61=a promise_test: Unhandled rejection with value: "Not implemented"
+PASS URLSearchParams constructed with: %61+%4d%4D=
+FAIL request.formData() with input: %61+%4d%4D= undefined is not a function (near '...s-1252"} }).formData()...')
+FAIL response.formData() with input: %61+%4d%4D= promise_test: Unhandled rejection with value: "Not implemented"
+
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlencodedparserhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser.html (0 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser.html         (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlencoded-parser.html        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -0,0 +1,71 @@
</span><ins>+<!doctype html>
+<meta charset=utf-8>
+<title>application/x-www-form-urlencoded parser test</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<div id=log></div>
+<script>
+[
+ { "input": "test", "output": [["test", ""]] },
+ { "input": "\uFEFFtest=\uFEFF", "output": [["\uFEFFtest", "\uFEFF"]] },
+ { "input": "%EF%BB%BFtest=%EF%BB%BF", "output": [["\uFEFFtest", "\uFEFF"]] },
+ { "input": "%FE%FF", "output": [["\uFFFD\uFFFD", ""]] },
+ { "input": "%FF%FE", "output": [["\uFFFD\uFFFD", ""]] },
+ { "input": "†&†=x", "output": [["†", ""], ["†", "x"]] },
+ { "input": "%C2", "output": [["\uFFFD", ""]] },
+ { "input": "%C2x", "output": [["\uFFFDx", ""]] },
+ { "input": "_charset_=windows-1252&test=%C2x", "output": [["_charset_", "windows-1252"], ["test", "\uFFFDx"]] },
+ { "input": '', "output": [] },
+ { "input": 'a', "output": [['a', '']] },
+ { "input": 'a=b', "output": [['a', 'b']] },
+ { "input": 'a=', "output": [['a', '']] },
+ { "input": '=b', "output": [['', 'b']] },
+ { "input": '&', "output": [] },
+ { "input": '&a', "output": [['a', '']] },
+ { "input": 'a&', "output": [['a', '']] },
+ { "input": 'a&a', "output": [['a', ''], ['a', '']] },
+ { "input": 'a&b&c', "output": [['a', ''], ['b', ''], ['c', '']] },
+ { "input": 'a=b&c=d', "output": [['a', 'b'], ['c', 'd']] },
+ { "input": 'a=b&c=d&', "output": [['a', 'b'], ['c', 'd']] },
+ { "input": '&&&a=b&&&&c=d&', "output": [['a', 'b'], ['c', 'd']] },
+ { "input": 'a=a&a=b&a=c', "output": [['a', 'a'], ['a', 'b'], ['a', 'c']] },
+ { "input": 'a==a', "output": [['a', '=a']] },
+ { "input": 'a=a+b+c+d', "output": [['a', 'a b c d']] },
+ { "input": '%=a', "output": [['%', 'a']] },
+ { "input": '%a=a', "output": [['%a', 'a']] },
+ { "input": '%a_=a', "output": [['%a_', 'a']] },
+ { "input": '%61=a', "output": [['a', 'a']] },
+ { "input": '%61+%4d%4D=', "output": [['a MM', '']] }
+].forEach((val) => {
+ test(() => {
+ let sp = new URLSearchParams(val.input),
+ i = 0
+ for (let item of sp) {
+ assert_array_equals(item, val.output[i])
+ i++
+ }
+ }, "URLSearchParams constructed with: " + val.input)
+
+ promise_test(() => {
+ let init = new Request("about:blank", { body: val.input, method: "LADIDA", headers: {"Content-Type": "application/x-www-form-urlencoded;charset=windows-1252"} }).formData()
+ return init.then((fd) => {
+ let i = 0
+ for (let item of fd) {
+ assert_array_equals(item, val.output[i])
+ i++
+ }
+ })
+ }, "request.formData() with input: " + val.input)
+
+ promise_test(() => {
+ let init = new Response(val.input, { headers: {"Content-Type": "application/x-www-form-urlencoded;charset=shift_jis"} }).formData()
+ return init.then((fd) => {
+ let i = 0
+ for (let item of fd) {
+ assert_array_equals(item, val.output[i])
+ i++
+ }
+ })
+ }, "response.formData() with input: " + val.input)
+})
+</script>
</ins></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamsconstructorexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx">
</span><span class="cx"> PASS Basic URLSearchParams construction
</span><span class="cx"> PASS URLSearchParams constructor, no arguments
</span><del>-FAIL URLSearchParams constructor, DOMException.prototype as argument assert_equals: expected "Error=" but got "INDEX_SIZE_ERR=1&DOMSTRING_SIZE_ERR=2&HIERARCHY_REQUEST_ERR=3&WRONG_DOCUMENT_ERR=4&INVALID_CHARACTER_ERR=5&NO_DATA_ALLOWED_ERR=6&NO_MODIFICATION_ALLOWED_ERR=7&NOT_FOUND_ERR=8&NOT_SUPPORTED_ERR=9&INUSE_ATTRIBUTE_ERR=10&INVALID_STATE_ERR=11&SYNTAX_ERR=12&INVALID_MODIFICATION_ERR=13&NAMESPACE_ERR=14&INVALID_ACCESS_ERR=15&VALIDATION_ERR=16&TYPE_MISMATCH_ERR=17&SECURITY_ERR=18&NETWORK_ERR=19&ABORT_ERR=20&URL_MISMATCH_ERR=21&QUOTA_EXCEEDED_ERR=22&TIMEOUT_ERR=23&INVALID_NODE_TYPE_ERR=24&DATA_CLONE_ERR=25"
</del><ins>+PASS URLSearchParams constructor, DOMException.prototype as argument
</ins><span class="cx"> PASS URLSearchParams constructor, empty string as argument
</span><span class="cx"> PASS URLSearchParams constructor, {} as argument
</span><span class="cx"> PASS URLSearchParams constructor, string.
</span><span class="lines">@@ -15,7 +15,8 @@
</span><span class="cx"> PASS Parse %e2%8e%84
</span><span class="cx"> PASS Parse 💩
</span><span class="cx"> PASS Parse %f0%9f%92%a9
</span><del>-FAIL Construct with object with + assert_array_equals: property 0, expected " " but got "+"
</del><ins>+PASS Constructor with sequence of sequences of strings
+PASS Construct with object with +
</ins><span class="cx"> PASS Construct with object with two keys
</span><span class="cx"> PASS Construct with array with two keys
</span><span class="cx"> PASS Custom [Symbol.iterator]
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamsconstructorhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-constructor.html        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -24,7 +24,7 @@
</span><span class="cx">
</span><span class="cx"> test(() => {
</span><span class="cx"> params = new URLSearchParams(DOMException.prototype);
</span><del>- assert_equals(params.toString(), "Error=")
</del><ins>+ assert_equals(params.toString(), "INDEX_SIZE_ERR=1&DOMSTRING_SIZE_ERR=2&HIERARCHY_REQUEST_ERR=3&WRONG_DOCUMENT_ERR=4&INVALID_CHARACTER_ERR=5&NO_DATA_ALLOWED_ERR=6&NO_MODIFICATION_ALLOWED_ERR=7&NOT_FOUND_ERR=8&NOT_SUPPORTED_ERR=9&INUSE_ATTRIBUTE_ERR=10&INVALID_STATE_ERR=11&SYNTAX_ERR=12&INVALID_MODIFICATION_ERR=13&NAMESPACE_ERR=14&INVALID_ACCESS_ERR=15&VALIDATION_ERR=16&TYPE_MISMATCH_ERR=17&SECURITY_ERR=18&NETWORK_ERR=19&ABORT_ERR=20&URL_MISMATCH_ERR=21&QUOTA_EXCEEDED_ERR=22&TIMEOUT_ERR=23&INVALID_NODE_TYPE_ERR=24&DATA_CLONE_ERR=25")
</ins><span class="cx"> }, "URLSearchParams constructor, DOMException.prototype as argument")
</span><span class="cx">
</span><span class="cx"> test(() => {
</span><span class="lines">@@ -135,8 +135,18 @@
</span><span class="cx"> assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
</span><span class="cx"> }, 'Parse %f0%9f%92%a9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
</span><span class="cx">
</span><del>-;[
- { "input": {"+": "%C2"}, "output": [[" ", "\uFFFD"]], "name": "object with +" },
</del><ins>+test(function() {
+ var params = new URLSearchParams([]);
+ assert_true(params != null, 'constructor returned non-null value.');
+ params = new URLSearchParams([['a', 'b'], ['c', 'd']]);
+ assert_equals(params.get("a"), "b");
+ assert_equals(params.get("c"), "d");
+ assert_throws(new TypeError(), function() { new URLSearchParams([[1]]); });
+ assert_throws(new TypeError(), function() { new URLSearchParams([[1,2,3]]); });
+}, "Constructor with sequence of sequences of strings");
+
+[
+ { "input": {"+": "%C2"}, "output": [["+", "%C2"]], "name": "object with +" },
</ins><span class="cx"> { "input": {c: "x", a: "?"}, "output": [["c", "x"], ["a", "?"]], "name": "object with two keys" },
</span><span class="cx"> { "input": [["c", "x"], ["a", "?"]], "output": [["c", "x"], ["a", "?"]], "name": "array with two keys" }
</span><span class="cx"> ].forEach((val) => {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamssortexpectedtxt"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort-expected.txt (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort-expected.txt        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort-expected.txt        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -7,4 +7,6 @@
</span><span class="cx"> PASS URL parse and sort: ffi&🌈
</span><span class="cx"> PASS Parse and sort: é&e�&é
</span><span class="cx"> PASS URL parse and sort: é&e�&é
</span><ins>+PASS Parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g
+PASS URL parse and sort: z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g
</ins><span class="cx">
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurlsearchparamssorthtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort.html (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort.html        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urlsearchparams-sort.html        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -20,6 +20,10 @@
</span><span class="cx"> {
</span><span class="cx"> "input": "é&e\uFFFD&e\u0301",
</span><span class="cx"> "output": [["e\u0301", ""], ["e\uFFFD", ""], ["é", ""]]
</span><ins>+ },
+ {
+ "input": "z=z&a=a&z=y&a=b&z=x&a=c&z=w&a=d&z=v&a=e&z=u&a=f&z=t&a=g",
+ "output": [["a", "a"], ["a", "b"], ["a", "c"], ["a", "d"], ["a", "e"], ["a", "f"], ["a", "g"], ["z", "z"], ["z", "y"], ["z", "x"], ["z", "w"], ["z", "v"], ["z", "u"], ["z", "t"]]
</ins><span class="cx"> }
</span><span class="cx"> ].forEach((val) => {
</span><span class="cx"> test(() => {
</span></span></pre></div>
<a id="trunkLayoutTestsimportedw3cwebplatformtestsurlurltestdatajson"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json (211619 => 211620)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-02-03 04:50:04 UTC (rev 211619)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/urltestdata.json        2017-02-03 06:20:56 UTC (rev 211620)
</span><span class="lines">@@ -553,7 +553,7 @@
</span><span class="cx"> {
</span><span class="cx"> "input": "foo://",
</span><span class="cx"> "base": "http://example.org/foo/bar",
</span><del>- "href": "foo:///",
</del><ins>+ "href": "foo://",
</ins><span class="cx"> "origin": "null",
</span><span class="cx"> "protocol": "foo:",
</span><span class="cx"> "username": "",
</span><span class="lines">@@ -561,7 +561,7 @@
</span><span class="cx"> "host": "",
</span><span class="cx"> "hostname": "",
</span><span class="cx"> "port": "",
</span><del>- "pathname": "/",
</del><ins>+ "pathname": "",
</ins><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><span class="cx"> },
</span><span class="lines">@@ -3548,6 +3548,17 @@
</span><span class="cx"> "base": "http://other.com/",
</span><span class="cx"> "failure": true
</span><span class="cx"> },
</span><ins>+ "U+FFFD is disallowed",
+ {
+ "input": "https://\ufffd",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "https://%EF%BF%BD",
+ "base": "about:blank",
+ "failure": true
+ },
</ins><span class="cx"> "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.",
</span><span class="cx"> {
</span><span class="cx"> "input": "http://Go.com",
</span><span class="lines">@@ -4256,22 +4267,102 @@
</span><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><span class="cx"> },
</span><del>- "# unknown schemes and non-ASCII domains",
</del><ins>+ "# unknown schemes and their hosts",
</ins><span class="cx"> {
</span><span class="cx"> "input": "sc://ñ.test/",
</span><span class="cx"> "base": "about:blank",
</span><del>- "href": "sc://xn--ida.test/",
</del><ins>+ "href": "sc://%C3%B1.test/",
</ins><span class="cx"> "origin": "null",
</span><span class="cx"> "protocol": "sc:",
</span><span class="cx"> "username": "",
</span><span class="cx"> "password": "",
</span><del>- "host": "xn--ida.test",
- "hostname": "xn--ida.test",
</del><ins>+ "host": "%C3%B1.test",
+ "hostname": "%C3%B1.test",
</ins><span class="cx"> "port": "",
</span><span class="cx"> "pathname": "/",
</span><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><span class="cx"> },
</span><ins>+ {
+ "input": "sc://\u001F!\"$&'()*+,-.;<=>^_`{|}~/",
+ "base": "about:blank",
+ "href": "sc://%1F!\"$&'()*+,-.;<=>^_`{|}~/",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
+ "hostname": "%1F!\"$&'()*+,-.;<=>^_`{|}~",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "sc://\u0000/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc:// /",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://%/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://@/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://te@s:t@/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://:/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://:12/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://[/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://\\/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://]/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "x",
+ "base": "sc://ñ",
+ "href": "sc://%C3%B1/x",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "/x",
+ "search": "",
+ "hash": ""
+ },
</ins><span class="cx"> "# unknown schemes and backslashes",
</span><span class="cx"> {
</span><span class="cx"> "input": "sc:\\../",
</span><span class="lines">@@ -4304,6 +4395,57 @@
</span><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><span class="cx"> },
</span><ins>+ "# Hosts and percent-encoding",
+ {
+ "input": "ftp://example.com%80/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "ftp://example.com%A0/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "https://example.com%80/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "https://example.com%A0/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "ftp://%e2%98%83",
+ "base": "about:blank",
+ "href": "ftp://xn--n3h/",
+ "origin": "ftp://☃",
+ "protocol": "ftp:",
+ "username": "",
+ "password": "",
+ "host": "xn--n3h",
+ "hostname": "xn--n3h",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "https://%e2%98%83",
+ "base": "about:blank",
+ "href": "https://xn--n3h/",
+ "origin": "https://☃",
+ "protocol": "https:",
+ "username": "",
+ "password": "",
+ "host": "xn--n3h",
+ "hostname": "xn--n3h",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
</ins><span class="cx"> "# tests from jsdom/whatwg-url designed for code coverage",
</span><span class="cx"> {
</span><span class="cx"> "input": "http://127.0.0.1:10100/relative_import.html",
</span><span class="lines">@@ -4625,6 +4767,35 @@
</span><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><span class="cx"> },
</span><ins>+ "# file URLs containing percent-encoded Windows drive letters (shouldn't work)",
+ {
+ "input": "file:///C%3A/",
+ "base": "about:blank",
+ "href": "file:///C%3A/",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "/C%3A/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "file:///C%7C/",
+ "base": "about:blank",
+ "href": "file:///C%7C/",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "/C%7C/",
+ "search": "",
+ "hash": ""
+ },
</ins><span class="cx"> "# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
</span><span class="cx"> {
</span><span class="cx"> "input": "pix/submit.gif",
</span><span class="lines">@@ -4754,5 +4925,342 @@
</span><span class="cx"> "pathname": "/",
</span><span class="cx"> "search": "",
</span><span class="cx"> "hash": ""
</span><ins>+ },
+ "# Empty host",
+ {
+ "input": "http://?",
+ "base": "about:blank",
+ "failure": "true"
+ },
+ {
+ "input": "http://#",
+ "base": "about:blank",
+ "failure": "true"
+ },
+ "# Non-special-URL path tests",
+ {
+ "input": "sc://ñ",
+ "base": "about:blank",
+ "href": "sc://%C3%B1",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "sc://ñ?x",
+ "base": "about:blank",
+ "href": "sc://%C3%B1?x",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "",
+ "search": "?x",
+ "hash": ""
+ },
+ {
+ "input": "sc://ñ#x",
+ "base": "about:blank",
+ "href": "sc://%C3%B1#x",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": "#x"
+ },
+ {
+ "input": "#x",
+ "base": "sc://ñ",
+ "href": "sc://%C3%B1#x",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": "#x"
+ },
+ {
+ "input": "?x",
+ "base": "sc://ñ",
+ "href": "sc://%C3%B1?x",
+ "origin": "null",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "%C3%B1",
+ "hostname": "%C3%B1",
+ "port": "",
+ "pathname": "",
+ "search": "?x",
+ "hash": ""
+ },
+ {
+ "input": "sc://?",
+ "base": "about:blank",
+ "href": "sc://?",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "sc://#",
+ "base": "about:blank",
+ "href": "sc://#",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "///",
+ "base": "sc://x/",
+ "href": "sc:///",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "////",
+ "base": "sc://x/",
+ "href": "sc:////",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "//",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "////x/",
+ "base": "sc://x/",
+ "href": "sc:////x/",
+ "protocol": "sc:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "//x/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "tftp://foobar.com/someconfig;mode=netascii",
+ "base": "about:blank",
+ "href": "tftp://foobar.com/someconfig;mode=netascii",
+ "origin": "null",
+ "protocol": "tftp:",
+ "username": "",
+ "password": "",
+ "host": "foobar.com",
+ "hostname": "foobar.com",
+ "port": "",
+ "pathname": "/someconfig;mode=netascii",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "telnet://user:pass@foobar.com:23/",
+ "base": "about:blank",
+ "href": "telnet://user:pass@foobar.com:23/",
+ "origin": "null",
+ "protocol": "telnet:",
+ "username": "user",
+ "password": "pass",
+ "host": "foobar.com:23",
+ "hostname": "foobar.com",
+ "port": "23",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "ut2004://10.10.10.10:7777/Index.ut2",
+ "base": "about:blank",
+ "href": "ut2004://10.10.10.10:7777/Index.ut2",
+ "origin": "null",
+ "protocol": "ut2004:",
+ "username": "",
+ "password": "",
+ "host": "10.10.10.10:7777",
+ "hostname": "10.10.10.10",
+ "port": "7777",
+ "pathname": "/Index.ut2",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
+ "base": "about:blank",
+ "href": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
+ "origin": "null",
+ "protocol": "redis:",
+ "username": "foo",
+ "password": "bar",
+ "host": "somehost:6379",
+ "hostname": "somehost",
+ "port": "6379",
+ "pathname": "/0",
+ "search": "?baz=bam&qux=baz",
+ "hash": ""
+ },
+ {
+ "input": "rsync://foo@host:911/sup",
+ "base": "about:blank",
+ "href": "rsync://foo@host:911/sup",
+ "origin": "null",
+ "protocol": "rsync:",
+ "username": "foo",
+ "password": "",
+ "host": "host:911",
+ "hostname": "host",
+ "port": "911",
+ "pathname": "/sup",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "git://github.com/foo/bar.git",
+ "base": "about:blank",
+ "href": "git://github.com/foo/bar.git",
+ "origin": "null",
+ "protocol": "git:",
+ "username": "",
+ "password": "",
+ "host": "github.com",
+ "hostname": "github.com",
+ "port": "",
+ "pathname": "/foo/bar.git",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "irc://myserver.com:6999/channel?passwd",
+ "base": "about:blank",
+ "href": "irc://myserver.com:6999/channel?passwd",
+ "origin": "null",
+ "protocol": "irc:",
+ "username": "",
+ "password": "",
+ "host": "myserver.com:6999",
+ "hostname": "myserver.com",
+ "port": "6999",
+ "pathname": "/channel",
+ "search": "?passwd",
+ "hash": ""
+ },
+ {
+ "input": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
+ "base": "about:blank",
+ "href": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
+ "origin": "null",
+ "protocol": "dns:",
+ "username": "",
+ "password": "",
+ "host": "fw.example.org:9999",
+ "hostname": "fw.example.org",
+ "port": "9999",
+ "pathname": "/foo.bar.org",
+ "search": "?type=TXT",
+ "hash": ""
+ },
+ {
+ "input": "ldap://localhost:389/ou=People,o=JNDITutorial",
+ "base": "about:blank",
+ "href": "ldap://localhost:389/ou=People,o=JNDITutorial",
+ "origin": "null",
+ "protocol": "ldap:",
+ "username": "",
+ "password": "",
+ "host": "localhost:389",
+ "hostname": "localhost",
+ "port": "389",
+ "pathname": "/ou=People,o=JNDITutorial",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "git+https://github.com/foo/bar",
+ "base": "about:blank",
+ "href": "git+https://github.com/foo/bar",
+ "origin": "null",
+ "protocol": "git+https:",
+ "username": "",
+ "password": "",
+ "host": "github.com",
+ "hostname": "github.com",
+ "port": "",
+ "pathname": "/foo/bar",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "urn:ietf:rfc:2648",
+ "base": "about:blank",
+ "href": "urn:ietf:rfc:2648",
+ "origin": "null",
+ "protocol": "urn:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "ietf:rfc:2648",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "tag:joe@example.org,2001:foo/bar",
+ "base": "about:blank",
+ "href": "tag:joe@example.org,2001:foo/bar",
+ "origin": "null",
+ "protocol": "tag:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "joe@example.org,2001:foo/bar",
+ "search": "",
+ "hash": ""
</ins><span class="cx"> }
</span><span class="cx"> ]
</span></span></pre>
</div>
</div>
</body>
</html>