Title: [206165] trunk
Revision
206165
Author
achristen...@apple.com
Date
2016-09-20 13:01:08 -0700 (Tue, 20 Sep 2016)

Log Message

Non-special URLs should have an opaque origin
https://bugs.webkit.org/show_bug.cgi?id=162254

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/url/a-element-expected.txt:
* web-platform-tests/url/a-element-xhtml-expected.txt:
* web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

Covered by newly passing web platform tests.

* page/SecurityOrigin.cpp:
(WebCore::shouldTreatAsUniqueOrigin):
According to https://url.spec.whatwg.org/#origin all URLs with non-special protocols
should have a unique SecurityOrigin whose serialization is "null".

LayoutTests:

* http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt:
* http/tests/security/postMessage/invalid-origin-throws-exception.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (206164 => 206165)


--- trunk/LayoutTests/ChangeLog	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/ChangeLog	2016-09-20 20:01:08 UTC (rev 206165)
@@ -1,3 +1,13 @@
+2016-09-20  Alex Christensen  <achristen...@webkit.org>
+
+        Non-special URLs should have an opaque origin
+        https://bugs.webkit.org/show_bug.cgi?id=162254
+
+        Reviewed by Sam Weinig.
+
+        * http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt:
+        * http/tests/security/postMessage/invalid-origin-throws-exception.html:
+
 2016-09-20  Javier Fernandez  <jfernan...@igalia.com>
 
         [css-grid] The 'grid' shorthand has a new syntax.

Modified: trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt (206164 => 206165)


--- trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception-expected.txt	2016-09-20 20:01:08 UTC (rev 206165)
@@ -1,5 +1,3 @@
-CONSOLE MESSAGE: Unable to post message to asdf://. Recipient has origin http://localhost:8000.
-
 window.location.href = ""
 waiting...
 Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to ''.
@@ -6,7 +4,7 @@
 Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to 'asdf'.
 Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to '/tmp/foo'.
 Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to '//localhost'.
-Posted message to 'asdf:' without any exceptions.
+Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to 'asdf:'.
 Encountered exception SyntaxError (DOM Exception 12): The string did not match the expected pattern. while posting message to 'http:'.
 Received message: data="" message: data="" origin="http://127.0.0.1:8000"" origin="http://localhost:8000"
 

Modified: trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html (206164 => 206165)


--- trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/http/tests/security/postMessage/invalid-origin-throws-exception.html	2016-09-20 20:01:08 UTC (rev 206165)
@@ -29,7 +29,7 @@
     tryPostMessage("/tmp/foo");
     tryPostMessage("//localhost");
 
-    // URLs without an origin should fail without generating any errors.
+    // URLs without an origin should fail with a syntax error.
     tryPostMessage("asdf:");
     tryPostMessage("http:");
     

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (206164 => 206165)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2016-09-20 20:01:08 UTC (rev 206165)
@@ -1,3 +1,14 @@
+2016-09-20  Alex Christensen  <achristen...@webkit.org>
+
+        Non-special URLs should have an opaque origin
+        https://bugs.webkit.org/show_bug.cgi?id=162254
+
+        Reviewed by Sam Weinig.
+
+        * web-platform-tests/url/a-element-expected.txt:
+        * web-platform-tests/url/a-element-xhtml-expected.txt:
+        * web-platform-tests/url/url-constructor-expected.txt:
+
 2016-09-20  Jer Noble  <jer.no...@apple.com>
 
         [media-source] Support MediaSource.setLiveSeekableRanges()

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt (206164 => 206165)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt	2016-09-20 20:01:08 UTC (rev 206165)
@@ -7,7 +7,7 @@
 PASS Parsing: <	   :foo.com   
 > against <http://example.org/foo/bar> 
 PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
-FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
@@ -48,12 +48,12 @@
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\a\b:c\d...@foo.com\> against <http://example.org/foo/bar> 
-FAIL Parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
 PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
@@ -69,26 +69,26 @@
 FAIL Parsing: <http:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/example.com/" but got "http://example.com/"
 PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
 PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
 PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
@@ -95,7 +95,7 @@
 PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#β" but got "http://example.org/foo/bar#%CE%B2"
 PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
-FAIL Parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
 FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
 FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c|////foo/bar.html"
 FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C|/foo/bar"
@@ -164,7 +164,7 @@
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
 PASS Parsing: <http://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:81/> against <about:blank> 
-FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://foo:80"
+PASS Parsing: <httpa://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:-80/> against <about:blank> 
 PASS Parsing: <https://foo:443/> against <about:blank> 
 PASS Parsing: <https://foo:80/> against <about:blank> 
@@ -183,26 +183,26 @@
 PASS Parsing: <http:/example.com/> against <about:blank> 
 PASS Parsing: <ftp:/example.com/> against <about:blank> 
 PASS Parsing: <https:/example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
 PASS Parsing: <file:/example.com/> against <about:blank> 
-FAIL Parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
 PASS Parsing: <gopher:/example.com/> against <about:blank> 
 PASS Parsing: <ws:/example.com/> against <about:blank> 
 PASS Parsing: <wss:/example.com/> against <about:blank> 
 PASS Parsing: <data:/example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:/example.com/> against <about:blank> 
-FAIL Parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
 PASS Parsing: <http:example.com/> against <about:blank> 
 PASS Parsing: <ftp:example.com/> against <about:blank> 
 PASS Parsing: <https:example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
 PASS Parsing: <gopher:example.com/> against <about:blank> 
 PASS Parsing: <ws:example.com/> against <about:blank> 
 PASS Parsing: <wss:example.com/> against <about:blank> 
 PASS Parsing: <data:example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:example.com/> against <about:blank> 
-FAIL Parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <about:blank> 
 PASS Parsing: <http:@www.example.com> against <about:blank> 
 PASS Parsing: <http:/@www.example.com> against <about:blank> 
 PASS Parsing: <http://@www.example.com> against <about:blank> 
@@ -273,11 +273,11 @@
 FAIL Parsing: <http://0Xc0.0250.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://0xc0.0250.01/"
 PASS Parsing: <http://[google.com]> against <http://other.com/> 
 FAIL Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> assert_equals: href expected "http://foo:%f0%9f%92...@example.com/bar" but got "http://foo:💩@example.com/bar"
-FAIL Parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
-FAIL Parsing: <#x> against <mailto:x...@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x...@x.com> 
 PASS Parsing: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
-FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing: <#> against <test:test?test> 
 FAIL Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> assert_equals: href expected "https://%40test%40test@example:800/" but got "https://@test@test@example:800/"
 FAIL Parsing: <https://@@@example> against <http://doesnotmatter/> assert_equals: href expected "https://%40%40@example/" but got "https://@@@example"
 FAIL Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> assert_equals: href expected "http://%60%7B%7D:%60%7B%7D@h/%60%7B%7D?`{}" but got "http://`{}:`{}@h/`{}?`{}"
@@ -286,36 +286,36 @@
 PASS Parsing: </some/path> against <http://user:p...@example.org:21/smth> 
 PASS Parsing: <i> against <sc:sd> 
 PASS Parsing: <i> against <sc:sd/sd> 
-FAIL Parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <i> against <sc:/pa/pa> 
+PASS Parsing: <i> against <sc://ho/pa> 
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
 PASS Parsing: <../i> against <sc:sd> 
 PASS Parsing: <../i> against <sc:sd/sd> 
-FAIL Parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <../i> against <sc:/pa/pa> 
+PASS Parsing: <../i> against <sc://ho/pa> 
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: pathname expected "/i" but got "///i"
 PASS Parsing: </i> against <sc:sd> 
 PASS Parsing: </i> against <sc:sd/sd> 
-FAIL Parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
+PASS Parsing: </i> against <sc:/pa/pa> 
+PASS Parsing: </i> against <sc://ho/pa> 
 FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:/i"
 PASS Parsing: <?i> against <sc:sd> 
 PASS Parsing: <?i> against <sc:sd/sd> 
-FAIL Parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <?i> against <sc:/pa/pa> 
+PASS Parsing: <?i> against <sc://ho/pa> 
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+PASS Parsing: <#i> against <sc://ho/pa> 
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
 PASS Parsing: <about:/../> against <about:blank> 
 PASS Parsing: <data:/../> against <about:blank> 
 PASS Parsing: <_javascript_:/../> against <about:blank> 
-FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://xn--ida.test"
+PASS Parsing: <mailto:/../> against <about:blank> 
+PASS Parsing: <sc://ñ.test/> against <about:blank> 
 FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
-FAIL Parsing: <sc::a...@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc::a...@example.net> against <about:blank> 
 PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
 PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
 PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
@@ -336,5 +336,5 @@
 PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
 PASS Parsing: <http:> against <http://example.org/foo/bar> 
 FAIL Parsing: <http:> against <https://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt (206164 => 206165)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt	2016-09-20 20:01:08 UTC (rev 206165)
@@ -7,7 +7,7 @@
 PASS Parsing: <	   :foo.com   
 > against <http://example.org/foo/bar> 
 PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
-FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
@@ -48,12 +48,12 @@
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\a\b:c\d...@foo.com\> against <http://example.org/foo/bar> 
-FAIL Parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
 PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
@@ -69,26 +69,26 @@
 FAIL Parsing: <http:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/example.com/" but got "http://example.com/"
 PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
 PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
 PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
@@ -95,7 +95,7 @@
 PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#β" but got "http://example.org/foo/bar#%CE%B2"
 PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
-FAIL Parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
 FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
 FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c|////foo/bar.html"
 FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C|/foo/bar"
@@ -164,7 +164,7 @@
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
 PASS Parsing: <http://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:81/> against <about:blank> 
-FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://foo:80"
+PASS Parsing: <httpa://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:-80/> against <about:blank> 
 PASS Parsing: <https://foo:443/> against <about:blank> 
 PASS Parsing: <https://foo:80/> against <about:blank> 
@@ -183,26 +183,26 @@
 PASS Parsing: <http:/example.com/> against <about:blank> 
 PASS Parsing: <ftp:/example.com/> against <about:blank> 
 PASS Parsing: <https:/example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
 PASS Parsing: <file:/example.com/> against <about:blank> 
-FAIL Parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
 PASS Parsing: <gopher:/example.com/> against <about:blank> 
 PASS Parsing: <ws:/example.com/> against <about:blank> 
 PASS Parsing: <wss:/example.com/> against <about:blank> 
 PASS Parsing: <data:/example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:/example.com/> against <about:blank> 
-FAIL Parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
 PASS Parsing: <http:example.com/> against <about:blank> 
 PASS Parsing: <ftp:example.com/> against <about:blank> 
 PASS Parsing: <https:example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
 PASS Parsing: <gopher:example.com/> against <about:blank> 
 PASS Parsing: <ws:example.com/> against <about:blank> 
 PASS Parsing: <wss:example.com/> against <about:blank> 
 PASS Parsing: <data:example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:example.com/> against <about:blank> 
-FAIL Parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <about:blank> 
 PASS Parsing: <http:@www.example.com> against <about:blank> 
 PASS Parsing: <http:/@www.example.com> against <about:blank> 
 PASS Parsing: <http://@www.example.com> against <about:blank> 
@@ -273,11 +273,11 @@
 FAIL Parsing: <http://0Xc0.0250.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://0xc0.0250.01/"
 PASS Parsing: <http://[google.com]> against <http://other.com/> 
 FAIL Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> assert_equals: href expected "http://foo:%f0%9f%92...@example.com/bar" but got "http://foo:💩@example.com/bar"
-FAIL Parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
-FAIL Parsing: <#x> against <mailto:x...@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x...@x.com> 
 PASS Parsing: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
-FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing: <#> against <test:test?test> 
 FAIL Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> assert_equals: href expected "https://%40test%40test@example:800/" but got "https://@test@test@example:800/"
 FAIL Parsing: <https://@@@example> against <http://doesnotmatter/> assert_equals: href expected "https://%40%40@example/" but got "https://@@@example"
 FAIL Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> assert_equals: href expected "http://%60%7B%7D:%60%7B%7D@h/%60%7B%7D?`{}" but got "http://`{}:`{}@h/`{}?`{}"
@@ -286,36 +286,36 @@
 PASS Parsing: </some/path> against <http://user:p...@example.org:21/smth> 
 PASS Parsing: <i> against <sc:sd> 
 PASS Parsing: <i> against <sc:sd/sd> 
-FAIL Parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <i> against <sc:/pa/pa> 
+PASS Parsing: <i> against <sc://ho/pa> 
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
 PASS Parsing: <../i> against <sc:sd> 
 PASS Parsing: <../i> against <sc:sd/sd> 
-FAIL Parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <../i> against <sc:/pa/pa> 
+PASS Parsing: <../i> against <sc://ho/pa> 
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: pathname expected "/i" but got "///i"
 PASS Parsing: </i> against <sc:sd> 
 PASS Parsing: </i> against <sc:sd/sd> 
-FAIL Parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
+PASS Parsing: </i> against <sc:/pa/pa> 
+PASS Parsing: </i> against <sc://ho/pa> 
 FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:/i"
 PASS Parsing: <?i> against <sc:sd> 
 PASS Parsing: <?i> against <sc:sd/sd> 
-FAIL Parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <?i> against <sc:/pa/pa> 
+PASS Parsing: <?i> against <sc://ho/pa> 
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+PASS Parsing: <#i> against <sc://ho/pa> 
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
 PASS Parsing: <about:/../> against <about:blank> 
 PASS Parsing: <data:/../> against <about:blank> 
 PASS Parsing: <_javascript_:/../> against <about:blank> 
-FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://xn--ida.test"
+PASS Parsing: <mailto:/../> against <about:blank> 
+PASS Parsing: <sc://ñ.test/> against <about:blank> 
 FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
-FAIL Parsing: <sc::a...@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc::a...@example.net> against <about:blank> 
 PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
 PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
 PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
@@ -336,5 +336,5 @@
 PASS Parsing: <??a=b&c=d> against <http://example.org/foo/bar> 
 PASS Parsing: <http:> against <http://example.org/foo/bar> 
 FAIL Parsing: <http:> against <https://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt (206164 => 206165)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt	2016-09-20 20:01:08 UTC (rev 206165)
@@ -11,7 +11,7 @@
 PASS Parsing: <	   :foo.com   
 > against <http://example.org/foo/bar> 
 PASS Parsing: < foo.com  > against <http://example.org/foo/bar> 
-FAIL Parsing: <a:	 foo.com> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "a://"
+PASS Parsing: <a:	 foo.com> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:21/ b ? d # e > against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <http://f:0/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
@@ -53,12 +53,12 @@
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\a\b:c\d...@foo.com\> against <http://example.org/foo/bar> 
-FAIL Parsing: <foo:/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "foo://"
-FAIL Parsing: <c:/foo> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "c://"
+PASS Parsing: <foo:/> against <http://example.org/foo/bar> 
+PASS Parsing: <foo:/bar.com/> against <http://example.org/foo/bar> 
+FAIL Parsing: <foo://///////> against <http://example.org/foo/bar> assert_equals: pathname expected "///////" but got "/////////"
+FAIL Parsing: <foo://///////bar.com/> against <http://example.org/foo/bar> assert_equals: pathname expected "///////bar.com/" but got "/////////bar.com/"
+FAIL Parsing: <foo:////://///> against <http://example.org/foo/bar> assert_equals: pathname expected "//://///" but got "////://///"
+PASS Parsing: <c:/foo> against <http://example.org/foo/bar> 
 PASS Parsing: <//foo/bar> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/path;a??e#f#g> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo/abcd?efgh?ijkl> against <http://example.org/foo/bar> 
@@ -74,26 +74,26 @@
 FAIL Parsing: <http:/example.com/> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/example.com/" but got "http://example.com/"
 PASS Parsing: <ftp:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <file:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:/example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <http:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ftp:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <https:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <http://example.org/foo/bar> 
+PASS Parsing: <ftps:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <gopher:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <ws:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <wss:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <data:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: <_javascript_:example.com/> against <http://example.org/foo/bar> 
-FAIL Parsing: <mailto:example.com/> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <http://example.org/foo/bar> 
 PASS Parsing: </a/b/c> against <http://example.org/foo/bar> 
 PASS Parsing: </a/ /c> against <http://example.org/foo/bar> 
 PASS Parsing: </a%2fc> against <http://example.org/foo/bar> 
@@ -100,7 +100,7 @@
 PASS Parsing: </a/%2f/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <#β> against <http://example.org/foo/bar> assert_equals: href expected "http://example.org/foo/bar#β" but got "http://example.org/foo/bar#%CE%B2"
 PASS Parsing: <data:text/html,test#test> against <http://example.org/foo/bar> 
-FAIL Parsing: <tel:1234567890> against <http://example.org/foo/bar> assert_equals: origin expected "null" but got "tel://"
+PASS Parsing: <tel:1234567890> against <http://example.org/foo/bar> 
 FAIL Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
 FAIL Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> assert_equals: href expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c|////foo/bar.html"
 FAIL Parsing: <C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///tmp/mock/C|/foo/bar"
@@ -169,7 +169,7 @@
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
 PASS Parsing: <http://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:81/> against <about:blank> 
-FAIL Parsing: <httpa://foo:80/> against <about:blank> assert_equals: origin expected "null" but got "httpa://foo:80"
+PASS Parsing: <httpa://foo:80/> against <about:blank> 
 PASS Parsing: <http://foo:-80/> against <about:blank> 
 PASS Parsing: <https://foo:443/> against <about:blank> 
 PASS Parsing: <https://foo:80/> against <about:blank> 
@@ -188,26 +188,26 @@
 PASS Parsing: <http:/example.com/> against <about:blank> 
 PASS Parsing: <ftp:/example.com/> against <about:blank> 
 PASS Parsing: <https:/example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
+PASS Parsing: <madeupscheme:/example.com/> against <about:blank> 
 PASS Parsing: <file:/example.com/> against <about:blank> 
-FAIL Parsing: <ftps:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <ftps:/example.com/> against <about:blank> 
 PASS Parsing: <gopher:/example.com/> against <about:blank> 
 PASS Parsing: <ws:/example.com/> against <about:blank> 
 PASS Parsing: <wss:/example.com/> against <about:blank> 
 PASS Parsing: <data:/example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:/example.com/> against <about:blank> 
-FAIL Parsing: <mailto:/example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:/example.com/> against <about:blank> 
 PASS Parsing: <http:example.com/> against <about:blank> 
 PASS Parsing: <ftp:example.com/> against <about:blank> 
 PASS Parsing: <https:example.com/> against <about:blank> 
-FAIL Parsing: <madeupscheme:example.com/> against <about:blank> assert_equals: origin expected "null" but got "madeupscheme://"
-FAIL Parsing: <ftps:example.com/> against <about:blank> assert_equals: origin expected "null" but got "ftps://"
+PASS Parsing: <madeupscheme:example.com/> against <about:blank> 
+PASS Parsing: <ftps:example.com/> against <about:blank> 
 PASS Parsing: <gopher:example.com/> against <about:blank> 
 PASS Parsing: <ws:example.com/> against <about:blank> 
 PASS Parsing: <wss:example.com/> against <about:blank> 
 PASS Parsing: <data:example.com/> against <about:blank> 
 PASS Parsing: <_javascript_:example.com/> against <about:blank> 
-FAIL Parsing: <mailto:example.com/> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <mailto:example.com/> against <about:blank> 
 PASS Parsing: <http:@www.example.com> against <about:blank> 
 PASS Parsing: <http:/@www.example.com> against <about:blank> 
 PASS Parsing: <http://@www.example.com> against <about:blank> 
@@ -290,11 +290,11 @@
 FAIL Parsing: <http://0Xc0.0250.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://0xc0.0250.01/"
 PASS Parsing: <http://[google.com]> against <http://other.com/> 
 FAIL Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> Type error
-FAIL Parsing: <#> against <test:test> assert_equals: origin expected "null" but got "test://"
-FAIL Parsing: <#x> against <mailto:x...@x.com> assert_equals: origin expected "null" but got "mailto://"
+PASS Parsing: <#> against <test:test> 
+PASS Parsing: <#x> against <mailto:x...@x.com> 
 PASS Parsing: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
-FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "test://"
+PASS Parsing: <#> against <test:test?test> 
 FAIL Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> Type error
 FAIL Parsing: <https://@@@example> against <http://doesnotmatter/> Type error
 FAIL Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> Type error
@@ -303,36 +303,36 @@
 PASS Parsing: </some/path> against <http://user:p...@example.org:21/smth> 
 PASS Parsing: <i> against <sc:sd> 
 PASS Parsing: <i> against <sc:sd/sd> 
-FAIL Parsing: <i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <i> against <sc:/pa/pa> 
+PASS Parsing: <i> against <sc://ho/pa> 
+FAIL Parsing: <i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/i" but got "///pa/i"
 PASS Parsing: <../i> against <sc:sd> 
 PASS Parsing: <../i> against <sc:sd/sd> 
-FAIL Parsing: <../i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <../i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <../i> against <sc:/pa/pa> 
+PASS Parsing: <../i> against <sc://ho/pa> 
+FAIL Parsing: <../i> against <sc:///pa/pa> assert_equals: pathname expected "/i" but got "///i"
 PASS Parsing: </i> against <sc:sd> 
 PASS Parsing: </i> against <sc:sd/sd> 
-FAIL Parsing: </i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: </i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
+PASS Parsing: </i> against <sc:/pa/pa> 
+PASS Parsing: </i> against <sc://ho/pa> 
 FAIL Parsing: </i> against <sc:///pa/pa> assert_equals: href expected "sc:///i" but got "sc:/i"
 PASS Parsing: <?i> against <sc:sd> 
 PASS Parsing: <?i> against <sc:sd/sd> 
-FAIL Parsing: <?i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <?i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:sd/sd> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc:/pa/pa> assert_equals: origin expected "null" but got "sc://"
-FAIL Parsing: <#i> against <sc://ho/pa> assert_equals: origin expected "null" but got "sc://ho"
-FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <?i> against <sc:/pa/pa> 
+PASS Parsing: <?i> against <sc://ho/pa> 
+FAIL Parsing: <?i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
+PASS Parsing: <#i> against <sc:sd> 
+PASS Parsing: <#i> against <sc:sd/sd> 
+PASS Parsing: <#i> against <sc:/pa/pa> 
+PASS Parsing: <#i> against <sc://ho/pa> 
+FAIL Parsing: <#i> against <sc:///pa/pa> assert_equals: pathname expected "/pa/pa" but got "///pa/pa"
 PASS Parsing: <about:/../> against <about:blank> 
 PASS Parsing: <data:/../> against <about:blank> 
 PASS Parsing: <_javascript_:/../> against <about:blank> 
-FAIL Parsing: <mailto:/../> against <about:blank> assert_equals: origin expected "null" but got "mailto://"
-FAIL Parsing: <sc://ñ.test/> against <about:blank> assert_equals: origin expected "null" but got "sc://xn--ida.test"
+PASS Parsing: <mailto:/../> against <about:blank> 
+PASS Parsing: <sc://ñ.test/> against <about:blank> 
 FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
-FAIL Parsing: <sc::a...@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc::a...@example.net> against <about:blank> 
 PASS Parsing: <http://127.0.0.1:10100/relative_import.html> against <about:blank> 
 PASS Parsing: <http://facebook.com/?foo=%7B%22abc%22> against <about:blank> 
 PASS Parsing: <https://localhost:3000/jqueryui@1.2.3> against <about:blank> 
@@ -354,5 +354,5 @@
 PASS Parsing: <http:> against <http://example.org/foo/bar> 
 FAIL Parsing: <http:> against <https://example.org/foo/bar> assert_throws: function "function () {
           bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <sc:> against <https://example.org/foo/bar> assert_equals: origin expected "null" but got "sc://"
+PASS Parsing: <sc:> against <https://example.org/foo/bar> 
 

Modified: trunk/Source/WebCore/ChangeLog (206164 => 206165)


--- trunk/Source/WebCore/ChangeLog	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/Source/WebCore/ChangeLog	2016-09-20 20:01:08 UTC (rev 206165)
@@ -1,3 +1,17 @@
+2016-09-20  Alex Christensen  <achristen...@webkit.org>
+
+        Non-special URLs should have an opaque origin
+        https://bugs.webkit.org/show_bug.cgi?id=162254
+
+        Reviewed by Sam Weinig.
+
+        Covered by newly passing web platform tests.
+
+        * page/SecurityOrigin.cpp:
+        (WebCore::shouldTreatAsUniqueOrigin):
+        According to https://url.spec.whatwg.org/#origin all URLs with non-special protocols
+        should have a unique SecurityOrigin whose serialization is "null".
+
 2016-09-20  Christopher Reid  <christopher.r...@am.sony.com>
 
         [WinCairo]  Not building since 206044

Modified: trunk/Source/WebCore/page/SecurityOrigin.cpp (206164 => 206165)


--- trunk/Source/WebCore/page/SecurityOrigin.cpp	2016-09-20 19:31:30 UTC (rev 206164)
+++ trunk/Source/WebCore/page/SecurityOrigin.cpp	2016-09-20 20:01:08 UTC (rev 206165)
@@ -58,7 +58,6 @@
     // FIXME: Blob URLs don't have inner URLs. Their form is "blob:<inner-origin>/<UUID>", so treating the part after "blob:" as a URL is incorrect.
     if (url.protocolIsBlob())
         return true;
-    UNUSED_PARAM(url);
     return false;
 }
 
@@ -99,7 +98,12 @@
         return true;
 
     // This is the common case.
-    return false;
+    return !innerURL.protocolIsInHTTPFamily()
+        && !innerURL.protocolIs("file")
+        && !innerURL.protocolIs("ftp")
+        && !innerURL.protocolIs("gopher")
+        && !innerURL.protocolIs("ws")
+        && !innerURL.protocolIs("wss");
 }
 
 SecurityOrigin::SecurityOrigin(const URL& url)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to