Enable URLParser by default
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Oct 2016 20:27:39 +0000 (20:27 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 11 Oct 2016 20:27:39 +0000 (20:27 +0000)
https://bugs.webkit.org/show_bug.cgi?id=162660
<rdar://28601706>

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src-expected.txt:
* web-platform-tests/html/semantics/scripting-1/the-script-element/fetch-src/failure-expected.txt:
These tests need more investigation.  See https://bugs.webkit.org/show_bug.cgi?id=163127
* 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:
* web-platform-tests/url/url-setters-expected.txt:
Many more tests pass.  Hooray!

Source/WebCore:

Covered by updates to many LayoutTests.

* platform/URLParser.cpp:
Make the default value true for URLParser::enabled.
This is the most impactful and well-documented one-line change I've ever written.

LayoutTests:

Many failing tests are now passing.

The tests in fast/url look like they are an old test suite, some of which we were failing.
We now pass many more of the tests.  Those results are updated.
Some URLs in the suite are invalid, and we now "fail" those tests.  Rather than update the
tests, I just changed the expectation to FAIL, which seems to be tolerable in this directory
because there were many tests whose result was FAIL.  Each such case is explained below.

* fast/dom/DOMURL/parsing-expected.txt:
* fast/dom/DOMURL/parsing.html:
Percent-encoded values in the host are supposed to be decoded according to the spec.
%2f decodes to '/' which is an invalid domain character.

* fast/dom/DOMURL/set-href-attribute-hash-expected.txt:
* fast/dom/DOMURL/set-href-attribute-hash.html:
Added a space to the domain (which is an invalid domain character and the others in this
test are not according to the spec) in order to continue to test that setting the hash of
an invalid URL does not change its href.

* fast/dom/DOMURL/set-href-attribute-protocol-expected.txt:
* fast/dom/DOMURL/set-href-attribute-protocol.html:
* fast/dom/HTMLAnchorElement/set-href-attribute-protocol-expected.txt:
* fast/dom/HTMLAnchorElement/set-href-attribute-protocol.html:
"http:??bar" now canonicalizes to "http://??bar" instead of adding one slash.

* fast/url/file-expected.txt:
* fast/url/file-http-base-expected.txt:
Updated results.  Many tests that were failing are now passing.

* fast/url/anchor-expected.txt:
Percent-encoding of non-ASCII characters in fragments now matches Firefox.

* fast/url/host-expected.txt:
Wide characters in the host such as http://%ef%bc%85%ef%bc%90%ef%bc%90.com/ should fail to parse.
This matches Chrome and the spec.
URLs with an empty host with a port should fail to parse.
This matches Chrome, Firefox, and the spec.

* fast/url/host-lowercase-per-scheme-expected.txt:
According to spec, hosts of non-special URLs should be parsed the same as special URL hosts.
Different browsers seem to have the existing behavior for different reasons.
See https://github.com/whatwg/url/issues/148 and https://bugs.webkit.org/show_bug.cgi?id=162885

* fast/url/idna2003-expected.txt:
* fast/url/invalid-urls-utf8-expected.txt:
Host encoding is now done according to the spec.

* fast/url/invalid-idn-expected.txt:
Neither Chrome, Firefox, nor the spec change invalid hosts to about:blank.

* fast/url/ipv4-expected.txt:
* fast/url/ipv6-expected.txt:
"http://[0:0::0:0:8:]/" should indeed be compressed to "http://[::8]/"
This kind of deterministic compression makes it so that two IPv6 addresses that are equal will
parse to URLs that are also equal, even if they are written differently.

* fast/url/path-expected.txt:
* fast/url/relative-expected.txt:
* fast/url/relative-win-expected.txt:
* fast/url/safari-extension-expected.txt:
Proper canonicalization of non-special hosts should be scheme://host/ or scheme:/// if there is no host.
safari-extension is not special.
Hosts should always be canonicalized to lowercase.

* fast/url/segments-expected.txt:
* fast/url/segments-from-data-url-expected.txt:
The path of "foo://" should be "/" not "//".
Extra slashes immediately after scheme:// should be ignored.
URLs with no host but a port like "http:@:80/www.apple.com" are now invalid, matching Chrome, Firefox, and the spec.

* fast/url/segments-userinfo-vs-host-expected.txt:
'@' can be in the user.  If it is, it is percent encoded.  This matches Chrome and Firefox.
"foo://" has a path of "/" not "//"
Extra slashes after the scheme such as in "foo://///////" are now ignored according to spec.

* fast/url/standard-url-expected.txt:
* fast/url/tab-and-newline-stripping-expected.txt:
http://[2001:5::042:44::0370:7334]/ is an invalid IPv6 address, so parsing it should fail.
It passed with URL::parse because we used to only check that the characters inside the []
were valid ipv6 characters, not that they made any sense or were in any kind of bounds.

* fast/url/url-credentials-escaping-expected.txt:
Credential encoding is now according to spec.

* http/tests/appcache/resources/x-frame-options-prevents-framing-test.html:
http:/path1/path2 relative to http://host/path3 now canonicalizes to http://host/path1/path2
instead of http://path1/path2 so this test, which I believe was missing the second slash in error,
needs to be fixed.

* imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
Having a '}' in the host of a URL used to be invalid and it is now percent-escaped, matching Chrome and the spec.
This test still passes on w3c-test.org.  We can look into why it is failing locally later.
See webkit.org/b/163127

* fast/loader/redirect-to-invalid-url-using-javascript-calls-policy-delegate-expected.txt:
* fast/loader/redirect-to-invalid-url-using-meta-refresh-calls-policy-delegate-expected.txt:
* fast/loader/window-open-to-invalid-url-calls-policy-delegate-expected.txt:
http://HoSt is now being correctly interpreted as the host, and it is being punycode encoded if it's
non-ASCII and lowercased if it is.

* fast/forms/ValidityState-typeMismatch-url.html:
* fast/forms/ValidityState-typeMismatch-url-expected.txt:
Spaces in the host are invalid.  This matches Firefox and the spec.

* http/tests/inspector/network/copy-as-curl.html:
'{' and '}' are now percent encoded in the URL path.  This matches Firefox, Chrome, and the spec.

* fast/loader/location-port.html:
* fast/loader/location-port-expected.txt:
parsing or setting ports in URLs with no host is no longer supported.  This matches Firefox and Chrome.

* security/block-test-expected.txt:
* platform/mac/security/block-test-expected.txt:
out-of-bounds ports now cause parsing failures.

* imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/fetch-src/failure-expected.txt:
"http://[]/" now fails to parse because it is an invalid IPv6 host.

* fast/url/ipv6-expected.txt:
IPv4 addresses at the end of IPv6 addresses are now serialized as the equivalent hex value in IPv6 form.
This matches Chrome and the spec, and makes it so that equal IPv6 addresses written in different forms are equal.

* fast/loader/url-parse-1-expected.txt:
Extra or missing slashes and spaces around scheme:// are now handled according to the spec.

* http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt:
The non-standard apple logo character is represented here by its non-standard Latin1 representation, 0xF0.
It was encoded as 0xF0 UTF-8 then percent encoded, which is %EF%A3%BF.
It is now encoded as the UTF-8 then percent encoded representation of its unicode value, 0xF8FF which matches other browsers.
This test is still valid, because it still verifies that the URLs in r199590 are rejected, and they still are.
See webkit.org/b/163127

* http/tests/contentextensions/make-https-expected.txt:
* contentfiltering/block-after-add-data-then-allow-unblock-expected.txt:
* contentfiltering/block-after-add-data-then-deny-unblock-expected.txt:
* contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt:
* contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt:
* contentfiltering/block-after-response-then-allow-unblock-expected.txt:
* contentfiltering/block-after-response-then-deny-unblock-expected.txt:
* contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt:
* contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt:
* fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
* fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
* fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
* fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
* fast/css/getComputedStyle/computed-style-border-image-expected.txt:
* fast/css/getComputedStyle/computed-style-border-image.html:
* fast/css/getComputedStyle/computed-style-cross-fade-expected.txt:
* fast/css/getComputedStyle/computed-style-cross-fade.html:
* fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-background-shorthand.html:
* fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
* fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
URLs with non-special schemes and no slash after the host now do when canonicalized.

* fast/css-generated-content/malformed-url.html:
This tested what happens when you have an invalid host.  | is now a valid host character.
I changed it to have a % in the host to test the same behavior.

* fast/loader/window-open-to-invalid-url-disallowed.html:
* fast/loader/window-open-to-invalid-url-disallowed-expected.txt:
* fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed.html:
* fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt:
* fast/loader/redirect-to-invalid-url-using-javascript-disallowed.html:
* fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt:
"http://a=a&b=b" is no longer an invalid URL.  We used to consider the '&' character to be an invalid domain character
and we don't any more.  This matches Chrome, Firefox, and the spec.
To keep this test testing what happens if you have an invalid URL, I changed the '&' to a '%' which is an invalid domain character.

* fast/loader/file-URL-with-port-number.html:
File URLs with a port but no host are now invalid, matching Chrome and Firefox.  File URLs with a port and a host are Ok, though.

* platform/ios-simulator-wk1/fast/loader: Added.
* platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt: Added.
* platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt: Added.
* platform/ios-simulator-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt: Added.
* platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest: Added.
* platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Added.
* platform/mac-wk1/fast/loader: Added.
* platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt: Added.
* platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt: Added.
* platform/mac-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt: Added.
* platform/mac-wk1/imported: Added.
* platform/mac-wk1/imported/w3c: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest: Added.
* platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Added.
* platform/mac/security/block-test-expected.txt:
Differences between the URLParser and NSURL's parser cause differences in output for WK1 where NSURLRequests are made without serializing WebCore::ResourceRequests.
In particular, '{' in the host is newly accepted as a valid URL by URLParser, but it is percent-encoded by NSURL's parser.
See rdar://problem/28701914

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

98 files changed:
LayoutTests/ChangeLog
LayoutTests/contentfiltering/block-after-add-data-then-allow-unblock-expected.txt
LayoutTests/contentfiltering/block-after-add-data-then-deny-unblock-expected.txt
LayoutTests/contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt
LayoutTests/contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt
LayoutTests/contentfiltering/block-after-response-then-allow-unblock-expected.txt
LayoutTests/contentfiltering/block-after-response-then-deny-unblock-expected.txt
LayoutTests/contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt
LayoutTests/contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt
LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt
LayoutTests/fast/backgrounds/background-shorthand-after-set-backgroundSize.html
LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt
LayoutTests/fast/backgrounds/background-shorthand-with-backgroundSize-style.html
LayoutTests/fast/css-generated-content/malformed-url.html
LayoutTests/fast/css/getComputedStyle/computed-style-border-image-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-border-image.html
LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade-expected.txt
LayoutTests/fast/css/getComputedStyle/computed-style-cross-fade.html
LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt
LayoutTests/fast/css/getComputedStyle/getComputedStyle-background-shorthand.html
LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt
LayoutTests/fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html
LayoutTests/fast/dom/DOMURL/parsing-expected.txt
LayoutTests/fast/dom/DOMURL/parsing.html
LayoutTests/fast/dom/DOMURL/set-href-attribute-hash-expected.txt
LayoutTests/fast/dom/DOMURL/set-href-attribute-hash.html
LayoutTests/fast/dom/DOMURL/set-href-attribute-protocol-expected.txt
LayoutTests/fast/dom/DOMURL/set-href-attribute-protocol.html
LayoutTests/fast/dom/HTMLAnchorElement/anchor-element-href-parsing-expected.txt
LayoutTests/fast/dom/HTMLAnchorElement/anchor-element-href-parsing.html
LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-hash.js
LayoutTests/fast/dom/HTMLAnchorElement/script-tests/set-href-attribute-protocol.js
LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-hash-expected.txt
LayoutTests/fast/dom/HTMLAnchorElement/set-href-attribute-protocol-expected.txt
LayoutTests/fast/forms/ValidityState-typeMismatch-url-expected.txt
LayoutTests/fast/forms/ValidityState-typeMismatch-url.html
LayoutTests/fast/loader/file-URL-with-port-number.html
LayoutTests/fast/loader/location-port-expected.txt
LayoutTests/fast/loader/location-port.html
LayoutTests/fast/loader/redirect-to-invalid-url-using-javascript-calls-policy-delegate-expected.txt
LayoutTests/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt
LayoutTests/fast/loader/redirect-to-invalid-url-using-javascript-disallowed.html
LayoutTests/fast/loader/redirect-to-invalid-url-using-meta-refresh-calls-policy-delegate-expected.txt
LayoutTests/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt
LayoutTests/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed.html
LayoutTests/fast/loader/url-parse-1-expected.txt
LayoutTests/fast/loader/window-open-to-invalid-url-calls-policy-delegate-expected.txt
LayoutTests/fast/loader/window-open-to-invalid-url-disallowed-expected.txt
LayoutTests/fast/loader/window-open-to-invalid-url-disallowed.html
LayoutTests/fast/url/anchor-expected.txt
LayoutTests/fast/url/file-expected.txt
LayoutTests/fast/url/file-http-base-expected.txt
LayoutTests/fast/url/host-expected.txt
LayoutTests/fast/url/host-lowercase-per-scheme-expected.txt
LayoutTests/fast/url/idna2003-expected.txt
LayoutTests/fast/url/invalid-idn-expected.txt
LayoutTests/fast/url/invalid-urls-utf8-expected.txt
LayoutTests/fast/url/ipv4-expected.txt
LayoutTests/fast/url/ipv6-expected.txt
LayoutTests/fast/url/path-expected.txt
LayoutTests/fast/url/relative-expected.txt
LayoutTests/fast/url/relative-win-expected.txt
LayoutTests/fast/url/safari-extension-expected.txt
LayoutTests/fast/url/segments-expected.txt
LayoutTests/fast/url/segments-from-data-url-expected.txt
LayoutTests/fast/url/segments-userinfo-vs-host-expected.txt
LayoutTests/fast/url/standard-url-expected.txt
LayoutTests/fast/url/tab-and-newline-stripping-expected.txt
LayoutTests/fast/url/url-credentials-escaping-expected.txt
LayoutTests/fetch/fetch-url-serialization-expected.txt
LayoutTests/http/tests/appcache/resources/x-frame-options-prevents-framing-test.html
LayoutTests/http/tests/contentextensions/make-https-expected.txt
LayoutTests/http/tests/eventsource/eventsource-cors-non-http-expected.txt
LayoutTests/http/tests/inspector/network/copy-as-curl.html
LayoutTests/http/tests/uri/resolve-encoding-relative-expected.txt
LayoutTests/http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt
LayoutTests/http/tests/xmlhttprequest/access-control-and-redirects-async-expected.txt
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src-expected.txt
LayoutTests/imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/fetch-src/failure-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/a-element-xhtml-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/url-constructor-expected.txt
LayoutTests/imported/w3c/web-platform-tests/url/url-setters-expected.txt
LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt [new file with mode: 0644]
LayoutTests/platform/ios-simulator/TestExpectations
LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt [new file with mode: 0644]
LayoutTests/platform/mac/security/block-test-expected.txt
LayoutTests/security/block-test-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/platform/URLParser.cpp

index cac91b1..0aca72f 100644 (file)
@@ -1,3 +1,203 @@
+2016-10-11  Alex Christensen  <achristensen@webkit.org>
+
+        Enable URLParser by default
+        https://bugs.webkit.org/show_bug.cgi?id=162660
+        <rdar://28601706>
+
+        Reviewed by Sam Weinig.
+
+        Many failing tests are now passing.
+
+        The tests in fast/url look like they are an old test suite, some of which we were failing.
+        We now pass many more of the tests.  Those results are updated.
+        Some URLs in the suite are invalid, and we now "fail" those tests.  Rather than update the
+        tests, I just changed the expectation to FAIL, which seems to be tolerable in this directory
+        because there were many tests whose result was FAIL.  Each such case is explained below.
+
+        * fast/dom/DOMURL/parsing-expected.txt:
+        * fast/dom/DOMURL/parsing.html:
+        Percent-encoded values in the host are supposed to be decoded according to the spec.
+        %2f decodes to '/' which is an invalid domain character.
+
+        * fast/dom/DOMURL/set-href-attribute-hash-expected.txt:
+        * fast/dom/DOMURL/set-href-attribute-hash.html:
+        Added a space to the domain (which is an invalid domain character and the others in this
+        test are not according to the spec) in order to continue to test that setting the hash of
+        an invalid URL does not change its href.
+
+        * fast/dom/DOMURL/set-href-attribute-protocol-expected.txt:
+        * fast/dom/DOMURL/set-href-attribute-protocol.html:
+        * fast/dom/HTMLAnchorElement/set-href-attribute-protocol-expected.txt:
+        * fast/dom/HTMLAnchorElement/set-href-attribute-protocol.html:
+        "http:??bar" now canonicalizes to "http://??bar" instead of adding one slash.
+                
+        * fast/url/file-expected.txt:
+        * fast/url/file-http-base-expected.txt:
+        Updated results.  Many tests that were failing are now passing.
+        
+        * fast/url/anchor-expected.txt:
+        Percent-encoding of non-ASCII characters in fragments now matches Firefox.
+        
+        * fast/url/host-expected.txt:
+        Wide characters in the host such as http://%ef%bc%85%ef%bc%90%ef%bc%90.com/ should fail to parse.
+        This matches Chrome and the spec.
+        URLs with an empty host with a port should fail to parse.
+        This matches Chrome, Firefox, and the spec.
+        
+        * fast/url/host-lowercase-per-scheme-expected.txt:
+        According to spec, hosts of non-special URLs should be parsed the same as special URL hosts.
+        Different browsers seem to have the existing behavior for different reasons.
+        See https://github.com/whatwg/url/issues/148 and https://bugs.webkit.org/show_bug.cgi?id=162885
+
+        * fast/url/idna2003-expected.txt:
+        * fast/url/invalid-urls-utf8-expected.txt:
+        Host encoding is now done according to the spec.
+
+        * fast/url/invalid-idn-expected.txt:
+        Neither Chrome, Firefox, nor the spec change invalid hosts to about:blank.
+        
+        * fast/url/ipv4-expected.txt:
+        * fast/url/ipv6-expected.txt:
+        "http://[0:0::0:0:8:]/" should indeed be compressed to "http://[::8]/"
+        This kind of deterministic compression makes it so that two IPv6 addresses that are equal will
+        parse to URLs that are also equal, even if they are written differently.
+
+        * fast/url/path-expected.txt:
+        * fast/url/relative-expected.txt:
+        * fast/url/relative-win-expected.txt:
+        * fast/url/safari-extension-expected.txt:
+        Proper canonicalization of non-special hosts should be scheme://host/ or scheme:/// if there is no host.
+        safari-extension is not special.
+        Hosts should always be canonicalized to lowercase.
+        
+        * fast/url/segments-expected.txt:
+        * fast/url/segments-from-data-url-expected.txt:
+        The path of "foo://" should be "/" not "//".
+        Extra slashes immediately after scheme:// should be ignored.
+        URLs with no host but a port like "http:@:80/www.apple.com" are now invalid, matching Chrome, Firefox, and the spec.
+
+        * fast/url/segments-userinfo-vs-host-expected.txt:
+        '@' can be in the user.  If it is, it is percent encoded.  This matches Chrome and Firefox.
+        "foo://" has a path of "/" not "//"
+        Extra slashes after the scheme such as in "foo://///////" are now ignored according to spec.
+        
+        * fast/url/standard-url-expected.txt:
+        * fast/url/tab-and-newline-stripping-expected.txt:
+        http://[2001:5::042:44::0370:7334]/ is an invalid IPv6 address, so parsing it should fail.
+        It passed with URL::parse because we used to only check that the characters inside the []
+        were valid ipv6 characters, not that they made any sense or were in any kind of bounds.
+
+        * fast/url/url-credentials-escaping-expected.txt:
+        Credential encoding is now according to spec.
+        
+        * http/tests/appcache/resources/x-frame-options-prevents-framing-test.html:
+        http:/path1/path2 relative to http://host/path3 now canonicalizes to http://host/path1/path2
+        instead of http://path1/path2 so this test, which I believe was missing the second slash in error,
+        needs to be fixed.
+        
+        * imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
+        Having a '}' in the host of a URL used to be invalid and it is now percent-escaped, matching Chrome and the spec.
+        This test still passes on w3c-test.org.  We can look into why it is failing locally later.
+        See webkit.org/b/163127
+
+        * fast/loader/redirect-to-invalid-url-using-javascript-calls-policy-delegate-expected.txt:
+        * fast/loader/redirect-to-invalid-url-using-meta-refresh-calls-policy-delegate-expected.txt:
+        * fast/loader/window-open-to-invalid-url-calls-policy-delegate-expected.txt:
+        http://HoSt is now being correctly interpreted as the host, and it is being punycode encoded if it's
+        non-ASCII and lowercased if it is.
+         
+        * fast/forms/ValidityState-typeMismatch-url.html:
+        * fast/forms/ValidityState-typeMismatch-url-expected.txt:
+        Spaces in the host are invalid.  This matches Firefox and the spec.
+        
+        * http/tests/inspector/network/copy-as-curl.html:
+        '{' and '}' are now percent encoded in the URL path.  This matches Firefox, Chrome, and the spec.
+        
+        * fast/loader/location-port.html:
+        * fast/loader/location-port-expected.txt:
+        parsing or setting ports in URLs with no host is no longer supported.  This matches Firefox and Chrome.
+        
+        * security/block-test-expected.txt:
+        * platform/mac/security/block-test-expected.txt:
+        out-of-bounds ports now cause parsing failures.
+        
+        * imported/w3c/web-platform-tests/html/semantics/scripting-1/the-script-element/fetch-src/failure-expected.txt:
+        "http://[]/" now fails to parse because it is an invalid IPv6 host.
+        
+        * fast/url/ipv6-expected.txt:
+        IPv4 addresses at the end of IPv6 addresses are now serialized as the equivalent hex value in IPv6 form.
+        This matches Chrome and the spec, and makes it so that equal IPv6 addresses written in different forms are equal.
+        
+        * fast/loader/url-parse-1-expected.txt:
+        Extra or missing slashes and spaces around scheme:// are now handled according to the spec.
+        
+        * http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt:
+        The non-standard apple logo character is represented here by its non-standard Latin1 representation, 0xF0.
+        It was encoded as 0xF0 UTF-8 then percent encoded, which is %EF%A3%BF.
+        It is now encoded as the UTF-8 then percent encoded representation of its unicode value, 0xF8FF which matches other browsers.
+        This test is still valid, because it still verifies that the URLs in r199590 are rejected, and they still are.
+        See webkit.org/b/163127
+
+        * http/tests/contentextensions/make-https-expected.txt:
+        * contentfiltering/block-after-add-data-then-allow-unblock-expected.txt:
+        * contentfiltering/block-after-add-data-then-deny-unblock-expected.txt:
+        * contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.txt:
+        * contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.txt:
+        * contentfiltering/block-after-response-then-allow-unblock-expected.txt:
+        * contentfiltering/block-after-response-then-deny-unblock-expected.txt:
+        * contentfiltering/block-after-will-send-request-then-allow-unblock-expected.txt:
+        * contentfiltering/block-after-will-send-request-then-deny-unblock-expected.txt:
+        * fast/backgrounds/background-shorthand-after-set-backgroundSize-expected.txt:
+        * fast/backgrounds/background-shorthand-after-set-backgroundSize.html:
+        * fast/backgrounds/background-shorthand-with-backgroundSize-style-expected.txt:
+        * fast/backgrounds/background-shorthand-with-backgroundSize-style.html:
+        * fast/css/getComputedStyle/computed-style-border-image-expected.txt:
+        * fast/css/getComputedStyle/computed-style-border-image.html:
+        * fast/css/getComputedStyle/computed-style-cross-fade-expected.txt:
+        * fast/css/getComputedStyle/computed-style-cross-fade.html:
+        * fast/css/getComputedStyle/getComputedStyle-background-shorthand-expected.txt:
+        * fast/css/getComputedStyle/getComputedStyle-background-shorthand.html:
+        * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand-expected.txt:
+        * fast/css/getComputedStyle/getComputedStyle-list-style-shorthand.html:
+        URLs with non-special schemes and no slash after the host now do when canonicalized.
+        
+        * fast/css-generated-content/malformed-url.html:
+        This tested what happens when you have an invalid host.  | is now a valid host character.
+        I changed it to have a % in the host to test the same behavior.
+        
+        * fast/loader/window-open-to-invalid-url-disallowed.html:
+        * fast/loader/window-open-to-invalid-url-disallowed-expected.txt:
+        * fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed.html:
+        * fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt:
+        * fast/loader/redirect-to-invalid-url-using-javascript-disallowed.html:
+        * fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt:
+        "http://a=a&b=b" is no longer an invalid URL.  We used to consider the '&' character to be an invalid domain character
+        and we don't any more.  This matches Chrome, Firefox, and the spec.
+        To keep this test testing what happens if you have an invalid URL, I changed the '&' to a '%' which is an invalid domain character.
+        
+        * fast/loader/file-URL-with-port-number.html:
+        File URLs with a port but no host are now invalid, matching Chrome and Firefox.  File URLs with a port and a host are Ok, though.
+
+        * platform/ios-simulator-wk1/fast/loader: Added.
+        * platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt: Added.
+        * platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt: Added.
+        * platform/ios-simulator-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt: Added.
+        * platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest: Added.
+        * platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Added.
+        * platform/mac-wk1/fast/loader: Added.
+        * platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt: Added.
+        * platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt: Added.
+        * platform/mac-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt: Added.
+        * platform/mac-wk1/imported: Added.
+        * platform/mac-wk1/imported/w3c: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest: Added.
+        * platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt: Added.
+        * platform/mac/security/block-test-expected.txt:
+        Differences between the URLParser and NSURL's parser cause differences in output for WK1 where NSURLRequests are made without serializing WebCore::ResourceRequests.
+        In particular, '{' in the host is newly accepted as a valid URL by URLParser, but it is percent-encoded by NSURL's parser.
+        See rdar://problem/28701914
+
 2016-10-11  Daniel Bates  <dabates@apple.com>
 
         [iOS] REGRESSION (r197953): User gesture required to load video in iOS 9-built apps
index 441c37e..5c9a441 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index a48ca11..64754f0 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index 26a80f2..22abb49 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index eedb252..4a41dad 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index 4b9ff9e..a898d5a 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index 8686bae..033fe2c 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index d656c67..ee5c93b 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index ad1bde0..9cfe2ea 100644 (file)
@@ -13,7 +13,7 @@ frame "<!--framePath //<!--frame0-->-->" - didFailProvisionalLoadWithError
 frame "<!--framePath //<!--frame0-->-->" - didStartProvisionalLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCommitLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishDocumentLoadForFrame
-frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock 
+frame "<!--framePath //<!--frame0-->-->" - willPerformClientRedirectToURL: x-apple-content-filter://mock-unblock/ 
 frame "<!--framePath //<!--frame0-->-->" - didHandleOnloadEventsForFrame
 frame "<!--framePath //<!--frame0-->-->" - didFinishLoadForFrame
 frame "<!--framePath //<!--frame0-->-->" - didCancelClientRedirectForFrame
index 70b034b..33fd01a 100644 (file)
@@ -3,7 +3,7 @@ Tests a flag to make background shorthand property not override background-size
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
+PASS e.style.background is 'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'
 PASS e.style.backgroundSize is 'cover'
 
 PASS successfullyParsed is true
index 43230b9..800e12d 100644 (file)
@@ -12,7 +12,7 @@ if (window.internals) {
 
     e.style.backgroundSize = "cover";
     e.style.background = "center red url(dummy://test.png) no-repeat border-box";
-    shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'")
+    shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'")
     shouldBe("e.style.backgroundSize", "'cover'");
     debug("")
 
index ae16a11..f169f2e 100644 (file)
@@ -3,59 +3,59 @@ Tests background shortand property with background-size
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'
+PASS e.style.background is 'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'
 PASS e.style.backgroundSize is 'cover'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50% 50% / cover border-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is 'cover'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'
+PASS e.style.background is 'url(dummy://test.png/) 20px 50% / contain no-repeat padding-box padding-box red'
 PASS e.style.backgroundSize is 'contain'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 20px 50% / contain padding-box padding-box'
 PASS computedStyle.getPropertyValue("background-size") is 'contain'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50px 60px / 50% 75% no-repeat red'
+PASS e.style.background is 'url(dummy://test.png/) 50px 60px / 50% 75% no-repeat red'
 PASS e.style.backgroundSize is '50% 75%'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is '50% 75%'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'
+PASS e.style.background is 'url(dummy://test.png/) 0% 0% / 100px 200px repeat border-box content-box red'
 PASS e.style.backgroundSize is '100px 200px'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px 200px border-box content-box'
 PASS computedStyle.getPropertyValue("background-size") is '100px 200px'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'
+PASS e.style.background is 'url(dummy://test.png/) 50% 50% / auto repeat content-box padding-box red'
 PASS e.style.backgroundSize is 'auto'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 50% 50% / auto content-box padding-box'
 PASS computedStyle.getPropertyValue("background-size") is 'auto'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50px 60px / 50% no-repeat fixed red'
+PASS e.style.background is 'url(dummy://test.png/) 50px 60px / 50% no-repeat fixed red'
 PASS e.style.backgroundSize is '50%'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 50px 60px / 50% padding-box border-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 50px 60px / 50% padding-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is '50%'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'
+PASS e.style.background is 'url(dummy://test.png/) 0% 0% / 100px repeat scroll padding-box border-box red'
 PASS e.style.backgroundSize is '100px'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px padding-box border-box'
 PASS computedStyle.getPropertyValue("background-size") is '100px'
 PASS checkComputedStyleValue() is true
 
-PASS e.style.background is 'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'
+PASS e.style.background is 'url(dummy://test.png/) 50% 50% / auto repeat fixed content-box content-box red'
 PASS e.style.backgroundSize is 'auto'
 PASS checkStyle() is true
-PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'
+PASS computedStyle.getPropertyValue("background") is 'rgb(255, 0, 0) url(dummy://test.png/) repeat fixed 50% 50% / auto content-box content-box'
 PASS computedStyle.getPropertyValue("background-size") is 'auto'
 PASS checkComputedStyleValue() is true
 
index e84eb64..e56ef0e 100644 (file)
@@ -23,73 +23,73 @@ function checkComputedStyleValue() {
 }
 
 e.style.background = "center / cover red url(dummy://test.png) no-repeat border-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / cover no-repeat border-box border-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / cover no-repeat border-box border-box red'");
 shouldBe("e.style.backgroundSize", "'cover'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50% 50% / cover border-box border-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50% 50% / cover border-box border-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'cover'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
-e.style.background = "red 20px / contain url(dummy://test.png) no-repeat padding-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 20px 50% / contain no-repeat padding-box padding-box red'");
+e.style.background = "red 20px / contain url(dummy://test.png/) no-repeat padding-box";
+shouldBe("e.style.background", "'url(dummy://test.png/) 20px 50% / contain no-repeat padding-box padding-box red'");
 shouldBe("e.style.backgroundSize", "'contain'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 20px 50% / contain padding-box padding-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 20px 50% / contain padding-box padding-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'contain'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red url(dummy://test.png) 50px 60px / 50% 75% no-repeat";
-shouldBe("e.style.background", "'url(dummy://test.png) 50px 60px / 50% 75% no-repeat red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 50px 60px / 50% 75% no-repeat red'");
 shouldBe("e.style.backgroundSize", "'50% 75%'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 50px 60px / 50% 75% padding-box border-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'50% 75%'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red url(dummy://test.png) repeat top left / 100px 200px border-box content-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px 200px repeat border-box content-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 0% 0% / 100px 200px repeat border-box content-box red'");
 shouldBe("e.style.backgroundSize", "'100px 200px'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px 200px border-box content-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px 200px border-box content-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'100px 200px'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "red url(dummy://test.png) repeat 50% / auto auto content-box padding-box";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat content-box padding-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / auto repeat content-box padding-box red'");
 shouldBe("e.style.backgroundSize", "'auto'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 50% 50% / auto content-box padding-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 50% 50% / auto content-box padding-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "url(dummy://test.png) red 50px 60px / 50% no-repeat fixed";
-shouldBe("e.style.background", "'url(dummy://test.png) 50px 60px / 50% no-repeat fixed red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 50px 60px / 50% no-repeat fixed red'");
 shouldBe("e.style.backgroundSize", "'50%'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 50px 60px / 50% padding-box border-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 50px 60px / 50% padding-box border-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'50%'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
-e.style.background = "red repeat scroll padding-box border-box top left / 100px url(dummy://test.png)";
-shouldBe("e.style.background", "'url(dummy://test.png) 0% 0% / 100px repeat scroll padding-box border-box red'");
+e.style.background = "red repeat scroll padding-box border-box top left / 100px url(dummy://test.png/)";
+shouldBe("e.style.background", "'url(dummy://test.png/) 0% 0% / 100px repeat scroll padding-box border-box red'");
 shouldBe("e.style.backgroundSize", "'100px'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / 100px padding-box border-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / 100px padding-box border-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'100px'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "50% / auto fixed url(dummy://test.png) repeat content-box red";
-shouldBe("e.style.background", "'url(dummy://test.png) 50% 50% / auto repeat fixed content-box content-box red'");
+shouldBe("e.style.background", "'url(dummy://test.png/) 50% 50% / auto repeat fixed content-box content-box red'");
 shouldBe("e.style.backgroundSize", "'auto'");
 shouldBe("checkStyle()", "true");
-shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png) repeat fixed 50% 50% / auto content-box content-box'");
+shouldBe('computedStyle.getPropertyValue("background")', "'rgb(255, 0, 0) url(dummy://test.png/) repeat fixed 50% 50% / auto content-box content-box'");
 shouldBe('computedStyle.getPropertyValue("background-size")', "'auto'");
 shouldBe("checkComputedStyleValue()", "true");
 debug("")
@@ -113,7 +113,7 @@ shouldBe("checkComputedStyleValue()", "true");
 debug("")
 
 e.style.background = "";
-e.style.background = "red / cover url(dummy://test.png) repeat";
+e.style.background = "red / cover url(dummy://test.png/) repeat";
 shouldBe("e.style.background", "''");
 shouldBe("e.style.backgroundSize", "''");
 shouldBe("checkStyle()", "true");
index 0aa341a..8b26b26 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <div style="content:url(//%);"></div>
-<div style="content:url(http://|server|/);"></div>
+<div style="content:url(http://%server%/);"></div>
 An invalid URL in the "content" style property should not cause a crash when the browser navigates away from the page.
 
 FAIL - The browser should have navigated to resources/pass.html.
index d1fb8f3..45ae0b7 100644 (file)
@@ -4,10 +4,10 @@ PASS computedBorderImageStyle('12 11 12 11', 'border-image-slice') is '12 11'
 PASS computedBorderImageStyle('12 11 12 11', 'border-image') is 'none'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 12 11 repeat stretch', 'border-image-slice') is '12 11'
-PASS computedBorderImageStyle('url(dummy://test.png) 12 11 repeat stretch', 'border-image') is 'url(dummy://test.png) 12 11 / 1 / 0px repeat stretch'
+PASS computedBorderImageStyle('url(dummy://test.png/) 12 11 repeat stretch', 'border-image') is 'url(dummy://test.png/) 12 11 / 1 / 0px repeat stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 1 2 3 4 repeat stretch', 'border-image-slice') is '1 2 3 4'
-PASS computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image') is 'url(dummy://test.png) 1 2 3 4 / 1 / 0px repeat stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image') is 'url(dummy://test.png/) 1 2 3 4 / 1 / 0px repeat stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 12 repeat stretch', 'border-image-slice') is '12'
 PASS computedBorderImageStyle('url(test.png) 10 10 5 5 repeat stretch', 'border-image-slice') is '10 10 5 5'
@@ -15,16 +15,16 @@ PASS computedBorderImageStyle('url(test.png) 10 a b c repeat stretch', 'border-i
 PASS computedBorderImageStyle('url(dummy://test.png) 10 a b c repeat stretch', 'border-image') is 'none'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 20 fill', 'border-image-slice') is '10 20 fill'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image') is 'url(dummy://test.png) 10 20 fill / 1 / 0px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image') is 'url(dummy://test.png/) 10 20 fill / 1 / 0px stretch'
 PASS checkComputedStyleValue() is true
-PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source') is 'url(dummy://test.png)'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px repeat stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source') is 'url(dummy://test.png/)'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10', 'border-image-repeat') is 'stretch'
-PASS computedBorderImageStyle('url(dummy://test.png) 10', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 stretch', 'border-image-repeat') is 'stretch'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 kittens', 'border-image-repeat') is 'stretch'
 PASS computedBorderImageStyle('url(dummy://test.png) 10 kittens', 'border-image') is 'none'
@@ -33,22 +33,22 @@ PASS computedBorderImageStyle('url(test.png) 10 stretch stretch fill', 'border-i
 PASS computedBorderImageStyle('url(dummy://test.png) 10 stretch stretch fill', 'border-image') is 'none'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 repeat stretch', 'border-image-repeat') is 'repeat stretch'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px repeat stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 round space', 'border-image-repeat') is 'round space'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image') is 'url(dummy://test.png) 10 / 1 / 0px round space'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image') is 'url(dummy://test.png/) 10 / 1 / 0px round space'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 / 13px 1.5em 1em 10px', 'border-image-width') is '13px 24px 16px 10px'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image') is 'url(dummy://test.png) 10 / 13px 24px 16px 10px / 0px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image') is 'url(dummy://test.png/) 10 / 13px 24px 16px 10px / 0px stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 / 14px 10%', 'border-image-width') is '14px 10%'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image') is 'url(dummy://test.png) 10 / 14px 10% / 0px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image') is 'url(dummy://test.png/) 10 / 14px 10% / 0px stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px', 'border-image-outset') is '11px'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image') is 'url(dummy://test.png) 10 / 13px / 11px stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image') is 'url(dummy://test.png/) 10 / 13px / 11px stretch'
 PASS checkComputedStyleValue() is true
 PASS computedBorderImageStyle('url(test.png) 10 / 13px / 11px repeat stretch', 'border-image-outset') is '11px'
-PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image') is 'url(dummy://test.png) 10 / 13px / 11px repeat stretch'
+PASS computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image') is 'url(dummy://test.png/) 10 / 13px / 11px repeat stretch'
 PASS checkComputedStyleValue() is true
 PASS successfullyParsed is true
 
index 5f9a3cc..067b9f5 100644 (file)
@@ -30,10 +30,10 @@ shouldBe("computedBorderImageStyle('12 11 12 11', 'border-image-slice')", "'12 1
 shouldBe("computedBorderImageStyle('12 11 12 11', 'border-image')", "'none'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 12 11 repeat stretch', 'border-image-slice')", "'12 11'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 12 11 repeat stretch', 'border-image')", "'url(dummy://test.png) 12 11 / 1 / 0px repeat stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png/) 12 11 repeat stretch', 'border-image')", "'url(dummy://test.png/) 12 11 / 1 / 0px repeat stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 1 2 3 4 repeat stretch', 'border-image-slice')", "'1 2 3 4'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image')", "'url(dummy://test.png) 1 2 3 4 / 1 / 0px repeat stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 1 2 3 4 repeat stretch', 'border-image')", "'url(dummy://test.png/) 1 2 3 4 / 1 / 0px repeat stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 12 repeat stretch', 'border-image-slice')", "'12'");
 shouldBe("computedBorderImageStyle('url(test.png) 10 10 5 5 repeat stretch', 'border-image-slice')", "'10 10 5 5'");
@@ -41,18 +41,18 @@ shouldBe("computedBorderImageStyle('url(test.png) 10 a b c repeat stretch', 'bor
 shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 a b c repeat stretch', 'border-image')", "'none'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 20 fill', 'border-image-slice')", "'10 20 fill'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image')", "'url(dummy://test.png) 10 20 fill / 1 / 0px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 20 fill', 'border-image')", "'url(dummy://test.png/) 10 20 fill / 1 / 0px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source')", "'url(dummy://test.png)'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px repeat stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image-source')", "'url(dummy://test.png/)'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 10 10 10 repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 
 shouldBe("computedBorderImageStyle('url(test.png) 10', 'border-image-repeat')", "'stretch'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 stretch', 'border-image-repeat')", "'stretch'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 kittens', 'border-image-repeat')", "'stretch'");
 shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 kittens', 'border-image')", "'none'");
@@ -61,24 +61,24 @@ shouldBe("computedBorderImageStyle('url(test.png) 10 stretch stretch fill', 'bor
 shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 stretch stretch fill', 'border-image')", "'none'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 repeat stretch', 'border-image-repeat')", "'repeat stretch'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px repeat stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px repeat stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 round space', 'border-image-repeat')", "'round space'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image')", "'url(dummy://test.png) 10 / 1 / 0px round space'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 round space', 'border-image')", "'url(dummy://test.png/) 10 / 1 / 0px round space'");
 shouldBe("checkComputedStyleValue()", "true");
 
 shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px 1.5em 1em 10px', 'border-image-width')", "'13px 24px 16px 10px'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image')", "'url(dummy://test.png) 10 / 13px 24px 16px 10px / 0px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px 1.5em 1em 10px', 'border-image')", "'url(dummy://test.png/) 10 / 13px 24px 16px 10px / 0px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 / 14px 10%', 'border-image-width')", "'14px 10%'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image')", "'url(dummy://test.png) 10 / 14px 10% / 0px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 14px 10%', 'border-image')", "'url(dummy://test.png/) 10 / 14px 10% / 0px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px / 11px', 'border-image-outset')", "'11px'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image')", "'url(dummy://test.png) 10 / 13px / 11px stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px', 'border-image')", "'url(dummy://test.png/) 10 / 13px / 11px stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 
 shouldBe("computedBorderImageStyle('url(test.png) 10 / 13px / 11px repeat stretch', 'border-image-outset')", "'11px'");
-shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image')", "'url(dummy://test.png) 10 / 13px / 11px repeat stretch'");
+shouldBe("computedBorderImageStyle('url(dummy://test.png) 10 / 13px / 11px repeat stretch', 'border-image')", "'url(dummy://test.png/) 10 / 13px / 11px repeat stretch'");
 shouldBe("checkComputedStyleValue()", "true");
 
 </script>
index f183914..b697906 100644 (file)
@@ -3,42 +3,42 @@ cross-fade
 
 PASS testCrossfade("opacity: 500%", "opacity") is "1"
 Prefixed
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image") is "-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png), 0.1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), -20)", "background-image") is "-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), url(dummy://example.png/), 50%)", "background-image") is "-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), 50%)", "background-image") is "-webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image") is "-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png/), 0.1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png/), 1.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), -20)", "background-image") is "-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0)"
 Unprefixed
 
 
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image") is "cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/), 50%)", "background-image") is "cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image") is "cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"
 Mixed
 
 
-PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"
-PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
-PASS testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image") is "cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), url(dummy://example.png), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"
+PASS testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image") is "-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
+PASS testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image") is "cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"
 Invalid values
 
 
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none"
-PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image") is "none"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/))", "background-image") is "none"
+PASS testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png),)", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png/), url(dummy://example.png))", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/),)", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(url(", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(url(dummy://a.png),)", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(20%, url(dummy://a.png/), url(dummy://b.png/))", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(url(dummy://a.png/),)", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(,)", "background-image") is "none"
-PASS testCrossfade("background-image: cross-fade(,url(dummy://a.png))", "background-image") is "none"
+PASS testCrossfade("background-image: cross-fade(,url(dummy://a.png/))", "background-image") is "none"
 PASS testCrossfade("background-image: cross-fade(,,,,,)", "background-image") is "none"
 PASS successfullyParsed is true
 
index ed76325..a0544d5 100644 (file)
@@ -25,49 +25,49 @@ shouldBe('testCrossfade("opacity: 500%", "opacity")', '"1"');
 
 debug('Prefixed');
 
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image")', '"-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
-    '"-webkit-cross-fade(url(dummy://c.png), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image")', '"-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png), 0.1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 50%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), url(dummy://example.png/), 50%)", "background-image")', '"-webkit-cross-fade(-webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), 50%)", "background-image")',
+    '"-webkit-cross-fade(url(dummy://c.png/), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(-webkit-linear-gradient(black, white), url(dummy://example.png), 10%)", "background-image")', '"-webkit-cross-fade(-webkit-linear-gradient(top, black, white), url(dummy://example.png/), 0.1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png/), 1.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
 
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 5.0)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 700%)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
 
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), -20)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png), url(dummy://example.png), 0)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), -20)", "background-image")', '"-webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0)"');
 
 debug('<h2>Unprefixed</h2>');
 
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 50%)", "background-image")', '"cross-fade(url(dummy://example.png), url(dummy://example.png), 0.5)"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"cross-fade(url(dummy://example.png), url(dummy://example.png), 1)"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/), 50%)", "background-image")', '"cross-fade(url(dummy://example.png/), url(dummy://example.png/), 0.5)"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png), 1.0)", "background-image")', '"cross-fade(url(dummy://example.png/), url(dummy://example.png/), 1)"');
 
 debug('<h2>Mixed</h2>');
 
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), url(dummy://example.png), 50%)", "background-image")',
-    '"-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), url(dummy://example.png), 0.5)"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
-    '"-webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
-shouldBe('testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 25%), 50%)", "background-image")',
-        '"cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), -webkit-cross-fade(url(dummy://a.png), url(dummy://b.png), 0.25), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png), url(dummy://b.png/), 25%), url(dummy://example.png), 50%)", "background-image")',
+    '"-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), url(dummy://example.png/), 0.5)"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image")',
+    '"-webkit-cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
+shouldBe('testCrossfade("background-image: cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 25%), 50%)", "background-image")',
+        '"cross-fade(cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), -webkit-cross-fade(url(dummy://a.png/), url(dummy://b.png/), 0.25), 0.5)"');
 
 debug('<h2>Invalid values</h2>');
 
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png/))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: -webkit-cross-fade(url(dummy://example.png/), url(dummy://example.png),)", "background-image")', '"none"');
 
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png),)", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png/), url(dummy://example.png))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png), url(dummy://example.png/),)", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(url(dummy://example.png))", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(), url(dummy://example.png))", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(url(", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(10px 20% 5px #bbb)", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(cross-fade(cross-fade()))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(20%, url(dummy://a.png), url(dummy://b.png))", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png),)", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(20%, url(dummy://a.png/), url(dummy://b.png/))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(url(dummy://a.png/),)", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(,)", "background-image")', '"none"');
-shouldBe('testCrossfade("background-image: cross-fade(,url(dummy://a.png))", "background-image")', '"none"');
+shouldBe('testCrossfade("background-image: cross-fade(,url(dummy://a.png/))", "background-image")', '"none"');
 shouldBe('testCrossfade("background-image: cross-fade(,,,,,)", "background-image")', '"none"');
 
 
index 068f573..30dcdd5 100644 (file)
@@ -22,16 +22,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'scroll'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -41,16 +41,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'scroll'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -60,16 +60,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -79,16 +79,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -98,16 +98,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -117,16 +117,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'padding-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -136,16 +136,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'content-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'border-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 255
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'no-repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
@@ -155,16 +155,16 @@ PASS computedStyle.getPropertyCSSValue('background').item(1).item(0).getStringVa
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(1).getStringValue() is 'content-box'
 PASS computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue() is 'padding-box'
 PASS checkComputedStyleValue() is true
-PASS computedStyle.getPropertyValue('background') is 'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'
+PASS computedStyle.getPropertyValue('background') is 'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'
 PASS computedStyle.getPropertyCSSValue('background').toString() is '[object CSSValueList]'
-PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'
+PASS computedStyle.getPropertyCSSValue('background').cssText is 'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'
 PASS computedStyle.getPropertyCSSValue('background').length is 2
 PASS computedStyle.getPropertyCSSValue('background').item(0).length is 5
 PASS computedStyle.getPropertyCSSValue('background').item(1).length is 3
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 128
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER) is 0
-PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue() is 'repeat'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue() is 'fixed'
 PASS computedStyle.getPropertyCSSValue('background').item(0).item(4).toString() is '[object CSSValueList]'
index ee5bea3..f7a1e74 100644 (file)
@@ -47,16 +47,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundImage = "url(dummy://test.png)";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) repeat scroll 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) repeat scroll 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'scroll'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -68,16 +68,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundRepeat = "no-repeat";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat scroll 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat scroll 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'scroll'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -89,16 +89,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundAttachment = "fixed";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 0% 0% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 0% 0% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -110,16 +110,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundPosition = "right bottom";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / auto padding-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / auto padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -131,16 +131,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundSize = "cover";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover padding-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover padding-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -152,16 +152,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundOrigin = "content-box";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box border-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box border-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -173,16 +173,16 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStr
 shouldBe("checkComputedStyleValue()", "true");
 
 e.style.backgroundClip = "padding-box";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'");
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png) no-repeat fixed 100% 100% / cover content-box padding-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(255, 0, 0) url(dummy://test.png/) no-repeat fixed 100% 100% / cover content-box padding-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "255");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'no-repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
@@ -193,17 +193,17 @@ shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(1).getStr
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).item(2).getStringValue()", "'padding-box'");
 shouldBe("checkComputedStyleValue()", "true");
 
-e.style.background = "border-box padding-box url(dummy://test.png) green 45% / contain repeat fixed";
-shouldBe("computedStyle.getPropertyValue('background')", "'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'");
+e.style.background = "border-box padding-box url(dummy://test.png/) green 45% / contain repeat fixed";
+shouldBe("computedStyle.getPropertyValue('background')", "'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').toString()", "'[object CSSValueList]'");
-shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(0, 128, 0) url(dummy://test.png) repeat fixed 45% 50% / contain border-box padding-box'");
+shouldBe("computedStyle.getPropertyCSSValue('background').cssText", "'rgb(0, 128, 0) url(dummy://test.png/) repeat fixed 45% 50% / contain border-box padding-box'");
 shouldBe("computedStyle.getPropertyCSSValue('background').length", "2");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).length", "5");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(1).length", "3");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().red.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().green.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "128");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(0).getRGBColorValue().blue.getFloatValue(CSSPrimitiveValue.CSS_NUMBER)", "0");
-shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(1).getStringValue()", "'dummy://test.png/'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(2).getStringValue()", "'repeat'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(3).getStringValue()", "'fixed'");
 shouldBe("computedStyle.getPropertyCSSValue('background').item(0).item(4).toString()", "'[object CSSValueList]'");
index 4d8de44..9a0f495 100644 (file)
@@ -3,13 +3,13 @@ Test to make sure list-style shorthand property returns CSSValueList properly.
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png)'
+PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png/)'
 PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
 PASS computedStyle.getPropertyCSSValue('list-style').length is 3
-PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png)'
+PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png/)'
 PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
 PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
-PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png/'
 PASS computedStyle.getPropertyValue('list-style') is 'disc outside none'
 PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
 PASS computedStyle.getPropertyCSSValue('list-style').length is 3
@@ -31,13 +31,13 @@ PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'none outside no
 PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'none'
 PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
 PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'none'
-PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png)'
+PASS computedStyle.getPropertyValue('list-style') is 'circle outside url(dummy://test.png/)'
 PASS computedStyle.getPropertyCSSValue('list-style').toString() is '[object CSSValueList]'
 PASS computedStyle.getPropertyCSSValue('list-style').length is 3
-PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png)'
+PASS computedStyle.getPropertyCSSValue('list-style').cssText is 'circle outside url(dummy://test.png/)'
 PASS computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue() is 'circle'
 PASS computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue() is 'outside'
-PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png'
+PASS computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue() is 'dummy://test.png/'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index d6955cf..eac7034 100644 (file)
@@ -19,13 +19,13 @@ e = document.getElementById('test');
 computedStyle = window.getComputedStyle(e, null);
 
 e.style.listStyle = "circle outside url(dummy://test.png)";
-shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png)'");
+shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png/)'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').toString()", "'[object CSSValueList]'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').length", "3");
-shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png)'");
+shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png/)'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue()", "'circle'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue()", "'outside'");
-shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png/'");
 
 e.style.listStyle = ""
 e.style.listStyle = "a b c";
@@ -59,13 +59,13 @@ e.style.listStyle = "";
 e.style.listStyleType = "circle";
 e.style.listStylePosition = "outside";
 e.style.listStyleImage = "url(dummy://test.png)";
-shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png)'");
+shouldBe("computedStyle.getPropertyValue('list-style')", "'circle outside url(dummy://test.png/)'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').toString()", "'[object CSSValueList]'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').length", "3");
-shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png)'");
+shouldBe("computedStyle.getPropertyCSSValue('list-style').cssText", "'circle outside url(dummy://test.png/)'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').item(0).getStringValue()", "'circle'");
 shouldBe("computedStyle.getPropertyCSSValue('list-style').item(1).getStringValue()", "'outside'");
-shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png'");
+shouldBe("computedStyle.getPropertyCSSValue('list-style').item(2).getStringValue()", "'dummy://test.png/'");
 
 document.body.removeChild(testContainer);
 
index 5590f25..9c0824b 100644 (file)
@@ -12,8 +12,8 @@ PASS breakDownURL('ftp://example.com/ttt?ggg') is 'protocol=ftp:, host=example.c
 PASS breakDownURL('file:///Users/darin') is 'protocol=file:, pathname=/Users/darin, origin=file://'
 PASS breakDownURL('data:text/html,<b>foo</b>') is 'protocol=data:, pathname=text/html,<b>foo</b>, origin=null'
 PASS breakDownURL('http://a:b@c:1/e/f?g%h') is 'protocol=http:, username=a, password=b, hostname=c, host=c:1, port=1, pathname=/e/f, search=?g%h, origin=http://c:1'
-PASS breakDownURL('http://ex%61mple.com/') is 'protocol=http:, host=ex%61mple.com, pathname=/, origin=http://ex%61mple.com'
-PASS breakDownURL('http://ex%2fmple.com/') is 'protocol=http:, host=ex%2fmple.com, pathname=/, origin=http://ex%2fmple.com'
+PASS breakDownURL('http://ex%61mple.com/') is 'protocol=http:, host=example.com, pathname=/, origin=http://example.com, toString=http://example.com/'
+PASS breakDownURL('http://ex%2fmple.com/') threw exception TypeError: Type error.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 6b0634a..b3348dc 100644 (file)
@@ -54,8 +54,7 @@ shouldBe("breakDownURL('ftp://example.com/ttt?ggg')", "'protocol=ftp:, host=exam
 shouldBe("breakDownURL('file:///Users/darin')", "'protocol=file:, pathname=/Users/darin, origin=file://'");
 shouldBe("breakDownURL('data:text/html,<b>foo</b>')", "'protocol=data:, pathname=text/html,<b>foo</b>, origin=null'");
 shouldBe("breakDownURL('http://a:b@c:1/e/f?g%h')", "'protocol=http:, username=a, password=b, hostname=c, host=c:1, port=1, pathname=/e/f, search=?g%h, origin=http://c:1'");
-
-shouldBe("breakDownURL('http://ex%61mple.com/')", "'protocol=http:, host=ex%61mple.com, pathname=/, origin=http://ex%61mple.com'");
-shouldBe("breakDownURL('http://ex%2fmple.com/')", "'protocol=http:, host=ex%2fmple.com, pathname=/, origin=http://ex%2fmple.com'");
+shouldBe("breakDownURL('http://ex%61mple.com/')", "'protocol=http:, host=example.com, pathname=/, origin=http://example.com, toString=http://example.com/'");
+shouldThrow("breakDownURL('http://ex%2fmple.com/')");
 
 </script>
index 3a5fa2d..a14f68e 100644 (file)
@@ -10,8 +10,8 @@ PASS a.href is 'file:///path/testurl.html#hash_value'
 '?' in hash value
 PASS a.href is 'http://www.mydomain.com/path/testurl.html#hash?value'
 '#' in hash value, and illegal characters in hostname
-PASS a.href = "https://www.my\"d(){}|~om?ain#com/path/testurl.html#middle" threw exception TypeError: Type error.
-PASS a.href is 'https://www.my\"d(){}|~om?ain#com/path/testurl.html#middle'
+PASS a.href = "https://ww w.my\"d(){}|~om?ain#com/path/testurl.html#middle" threw exception TypeError: Type error.
+PASS a.href is 'https://ww w.my\"d(){}|~om?ain#com/path/testurl.html#middle'
 Set hash to null
 PASS a.href is 'https://www.mydomain.com/path/testurl.html#null'
 Set hash to empty string
index 3c56b30..c3ac684 100644 (file)
@@ -30,9 +30,9 @@ shouldBe("a.href", "'http://www.mydomain.com/path/testurl.html#hash?value'");
 // IE8 and Firefox3.5.2 don't consider these characters as illegal.
 debug("'#' in hash value, and illegal characters in hostname");
 // with the URL API, assigning an invalid href throws
-shouldThrow('a.href = "https://www.my\\"d(){}|~om?ain#com/path/testurl.html#middle"');
+shouldThrow('a.href = "https://ww w.my\\"d(){}|~om?ain#com/path/testurl.html#middle"');
 a.hash = "#hash#value";
-shouldBe("a.href", "'https://www.my\\\"d(){}|~om?ain#com/path/testurl.html#middle'");
+shouldBe("a.href", "'https://ww w.my\\\"d(){}|~om?ain#com/path/testurl.html#middle'");
 
 debug("Set hash to null");
 a.href = "https://www.mydomain.com/path/testurl.html#middle";
index 2d10aa1..98011b5 100644 (file)
@@ -18,7 +18,7 @@ PASS a.href is 'null://www.mydomain.com/path/'
 Set protocol to empty string
 PASS a.href is 'https://www.mydomain.com/path/'
 Set protocol to http on malformed URL
-PASS a.href is 'http:/??bar'
+PASS a.href is 'http://??bar'
 Set protocol to a URL which points to a local file
 PASS a.href is 'f-oo:path'
 Set protocol to undefined
index 76d1ffc..466ff96 100644 (file)
@@ -72,7 +72,7 @@ debug("Exception: " + e.description);
 debug("Set protocol to http on malformed URL");
 a.href = "foo:??bar";
 a.protocol = "http";
-shouldBe("a.href", "'http:/??bar'");
+shouldBe("a.href", "'http://??bar'");
 
 // IE8 keeps the protocol if it is 'c:'.
 debug("Set protocol to a URL which points to a local file");
index 1cc5789..47cf988 100644 (file)
@@ -12,8 +12,8 @@ PASS breakDownURL('ftp://example.com/ttt?ggg') is 'protocol=ftp:, host=example.c
 PASS breakDownURL('file:///Users/darin') is 'protocol=file:, pathname=/Users/darin, origin=file://'
 PASS breakDownURL('data:text/html,<b>foo</b>') is 'protocol=data:, pathname=text/html,<b>foo</b>, origin=null'
 PASS breakDownURL('http://a:b@c:1/e/f?g%h') is 'protocol=http:, hostname=c, host=c:1, port=1, pathname=/e/f, search=?g%h, origin=http://c:1'
-PASS breakDownURL('http://ex%61mple.com/') is 'protocol=http:, host=ex%61mple.com, pathname=/, origin=http://ex%61mple.com'
-PASS breakDownURL('http://ex%2fmple.com/') is 'protocol=http:, host=ex%2fmple.com, pathname=/, origin=http://ex%2fmple.com'
+PASS breakDownURL('http://ex%61mple.com/') is 'protocol=http:, host=example.com, pathname=/, origin=http://example.com, toString=http://example.com/'
+PASS breakDownURL('http://ex%2fmple.com/') is 'protocol=:, origin=null'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 43aee4a..fa112b9 100644 (file)
@@ -54,7 +54,7 @@ shouldBe("breakDownURL('file:///Users/darin')", "'protocol=file:, pathname=/User
 shouldBe("breakDownURL('data:text/html,<b>foo</b>')", "'protocol=data:, pathname=text/html,<b>foo</b>, origin=null'");
 shouldBe("breakDownURL('http://a:b@c:1/e/f?g%h')", "'protocol=http:, hostname=c, host=c:1, port=1, pathname=/e/f, search=?g%h, origin=http://c:1'");
 
-shouldBe("breakDownURL('http://ex%61mple.com/')", "'protocol=http:, host=ex%61mple.com, pathname=/, origin=http://ex%61mple.com'");
-shouldBe("breakDownURL('http://ex%2fmple.com/')", "'protocol=http:, host=ex%2fmple.com, pathname=/, origin=http://ex%2fmple.com'");
+shouldBe("breakDownURL('http://ex%61mple.com/')", "'protocol=http:, host=example.com, pathname=/, origin=http://example.com, toString=http://example.com/'");
+shouldBe("breakDownURL('http://ex%2fmple.com/')", "'protocol=:, origin=null'");
 
 </script>
index 1df633f..448a265 100644 (file)
@@ -20,9 +20,9 @@ shouldBe("a.href", "'http://www.mydomain.com/path/testurl.html#hash?value'");
 // The expected behavior should change when character table is updated.
 // IE8 and Firefox3.5.2 don't consider these characters as illegal.
 debug("'#' in hash value, and illegal characters in hostname");
-a.href = "https://www.my\"d(){}|~om?ain#com/path/testurl.html#middle";
+a.href = "https://www.m y\"d(){}|~om?ain#com/path/testurl.html#middle";
 a.hash = "#hash#value";
-shouldBe("a.href", "'https://www.my\"d(){}|~om?ain#com/path/testurl.html#middle'");
+shouldBe("a.href", "'https://www.m y\"d(){}|~om?ain#com/path/testurl.html#middle'");
 
 debug("Set hash to null");
 a.href = "https://www.mydomain.com/path/testurl.html#middle";
index 974d60c..a624815 100644 (file)
@@ -63,7 +63,7 @@ debug("Exception: " + e.description);
 debug("Set protocol to http on malformed URL");
 a.href = "foo:??bar";
 a.protocol = "http";
-shouldBe("a.href", "'http:/??bar'");
+shouldBe("a.href", "'http://??bar'");
 
 // IE8 keeps the protocol if it is 'c:'.
 debug("Set protocol to a URL which points to a local file");
index abeb2c2..0945fc3 100644 (file)
@@ -10,7 +10,7 @@ PASS a.href is 'file:///path/testurl.html#hash_value'
 '?' in hash value
 PASS a.href is 'http://www.mydomain.com/path/testurl.html#hash?value'
 '#' in hash value, and illegal characters in hostname
-PASS a.href is 'https://www.my"d(){}|~om?ain#com/path/testurl.html#middle'
+PASS a.href is 'https://www.m y"d(){}|~om?ain#com/path/testurl.html#middle'
 Set hash to null
 PASS a.href is 'https://www.mydomain.com/path/testurl.html#null'
 Set hash to empty string
index ea1ca71..58f218c 100644 (file)
@@ -18,7 +18,7 @@ PASS a.href is 'null://www.mydomain.com/path/'
 Set protocol to empty string
 PASS a.href is 'https://www.mydomain.com/path/'
 Set protocol to http on malformed URL
-PASS a.href is 'http:/??bar'
+PASS a.href is 'http://??bar'
 Set protocol to a URL which points to a local file
 PASS a.href is 'f-oo:path'
 Set protocol to undefined
index 690a192..582d039 100644 (file)
@@ -39,9 +39,9 @@ PASS scheme//a is a correct invalid url.
 PASS http://[v8.:::]/ is a correct invalid url.
 PASS http:// www.google.com is a correct invalid url.
 PASS http://www .google.com is a correct invalid url.
-PASS http://www.&#10;google.&#13;com is a correct invalid url.
-PASS http://host+ is a correct invalid url.
-PASS http://myurl! is a correct invalid url.
+PASS http://www.&#10;google.&#13;com is a correct valid url.
+PASS http://host+ is a correct valid url.
+PASS http://myurl! is a correct valid url.
 PASS invalid is a correct valid url when disabled.
 PASS successfullyParsed is true
 
index c73d503..5e54ac1 100644 (file)
@@ -70,22 +70,11 @@ expectInvalid('----ftp://a');
 expectInvalid('scheme//a');
 expectInvalid('http://[v8.:::]/');
 
-// KURL's host name restriction is stricter than RFC 3986. KURLGoogle is not.
-i.value = 'http://www.g**gle.com'
-var strictHost = i.validity.typeMismatch;
-if (strictHost) {
-    expectInvalid('http:// www.google.com');
-    expectInvalid('http://www .google.com');
-    expectInvalid('http://www.&#10;google.&#13;com');
-    expectInvalid('http://host+');
-    expectInvalid('http://myurl!');
-} else {
-    expectValid('http:// www.google.com');
-    expectValid('http://www .google.com');
-    expectValid('http://www.&#10;google.&#13;com');
-    expectValid('http://host+');
-    expectValid('http://myurl!');
-}
+expectInvalid('http:// www.google.com');
+expectInvalid('http://www .google.com');
+expectValid('http://www.&#10;google.&#13;com');
+expectValid('http://host+');
+expectValid('http://myurl!');
 
 // Disabled
 expectValid('invalid', true);
index 5b80462..5716d73 100644 (file)
@@ -15,7 +15,7 @@ function runTest()
     }
 
     var subframeLocation = window.location + "";
-    subframeLocation = subframeLocation.replace(/file:\/\/\//, "file://:1/");
+    subframeLocation = subframeLocation.replace(/file:\/\/\//, "file://host:1/");
     subframeLocation = subframeLocation.replace(/file-URL-with-port-number/, "resources/empty-subframe");
     var subframe = document.getElementById("subframe");
     subframe.onload = subframeLoaded;
index 5d29fa0..a139e6d 100644 (file)
@@ -1,7 +1,7 @@
 This tests that modifying location.port works as it should
 
 PASS: internalFrame.contentWindow.location.port == "" should be true and is.
-PASS: internalFrame.contentWindow.location.port == "88" should be true and is.
 PASS: internalFrame.contentWindow.location.port == "" should be true and is.
-PASS: internalFrame.contentWindow.location.port == "80" should be true and is.
-PASS: internalFrame.contentWindow.location.host should be :0 and is.
+PASS: internalFrame.contentWindow.location.port == "" should be true and is.
+PASS: internalFrame.contentWindow.location.port == "" should be true and is.
+PASS: internalFrame.contentWindow.location.host should be and is.
index a4be982..018f51b 100644 (file)
@@ -25,7 +25,7 @@
 
     function checkTest1() {
         var internalFrame = document.getElementById ('internal');
-        shouldBe('internalFrame.contentWindow.location.port == "88"', true);
+        shouldBe('internalFrame.contentWindow.location.port == ""', true);
 
         internalFrame.contentWindow.location.port = "";
         setTimeout(checkTest2, 300);
@@ -41,7 +41,7 @@
 
     function checkTest3() {
         var internalFrame = document.getElementById ('internal');
-        shouldBe('internalFrame.contentWindow.location.port == "80"', true);
+        shouldBe('internalFrame.contentWindow.location.port == ""', true);
 
         internalFrame.contentWindow.location.port = 0;
         setTimeout(checkTest4, 300);
@@ -49,7 +49,7 @@
 
     function checkTest4() {
         var internalFrame = document.getElementById ('internal');
-        shouldBe('internalFrame.contentWindow.location.host', ':0');
+        shouldBe('internalFrame.contentWindow.location.host', '');
 
         if (window.testRunner)
             testRunner.notifyDone();
index 09bd1e5..25c6083 100644 (file)
@@ -1,4 +1,4 @@
-Policy delegate: attempt to load http://A=a&B=b with navigation type 'other'
+Policy delegate: attempt to load http://a=a&b=b/ with navigation type 'other'
 Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a&B=b" followed by "didCancelClientRedirectForFrame".
 
 Note, this test must be run in DumpRenderTree.
index 2b9239b..352b3f2 100644 (file)
@@ -1,7 +1,7 @@
-main frame - willPerformClientRedirectToURL: http://A=a&B=b 
+main frame - willPerformClientRedirectToURL: http://A=a%B=b 
 main frame - didFinishDocumentLoadForFrame
 main frame - didFinishLoadForFrame
 main frame - didCancelClientRedirectForFrame
-Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a&B=b" followed by "didCancelClientRedirectForFrame".
+Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
 
 Note, this test must be run in DumpRenderTree.
index c5ef609..18d091f 100644 (file)
@@ -10,10 +10,10 @@ if (window.testRunner) {
 </script>
 </head>
 <body>
-<p>Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a&amp;B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
+<p>Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a%B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
 <p>Note, this test must be run in DumpRenderTree.</p>
 <script>
-window.location.href = "http://A=a&B=b";
+window.location.href = "http://A=a%B=b";
 window.setTimeout(function() {
     if (window.testRunner)
         testRunner.notifyDone();
index eaa5a0f..53ef2d7 100644 (file)
@@ -1,4 +1,4 @@
-Policy delegate: attempt to load http://A=a&B=b with navigation type 'other'
+Policy delegate: attempt to load http://a=a&b=b/ with navigation type 'other'
 Tests that we do not redirect to an invalid URL initiated by <meta http-equiv="refresh">. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a&B=b" followed by "didCancelClientRedirectForFrame".
 
 Note, this test must be run in DumpRenderTree.
index f4936fe..7808316 100644 (file)
@@ -1,8 +1,8 @@
 main frame - didFinishDocumentLoadForFrame
 main frame - didHandleOnloadEventsForFrame
-main frame - willPerformClientRedirectToURL: http://A=a&B=b 
+main frame - willPerformClientRedirectToURL: http://A=a%B=b 
 main frame - didFinishLoadForFrame
 main frame - didCancelClientRedirectForFrame
-Tests that we do not redirect to an invalid URL initiated by <meta http-equiv="refresh">. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a&B=b" followed by "didCancelClientRedirectForFrame".
+Tests that we do not redirect to an invalid URL initiated by <meta http-equiv="refresh">. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
 
 Note, this test must be run in DumpRenderTree.
index c0cee83..234ae1f 100644 (file)
@@ -1,7 +1,7 @@
 <!DOCTYPE html>
 <html>
 <head>
-<meta http-equiv="refresh" content="0; url=http://A=a&B=b">
+<meta http-equiv="refresh" content="0; url=http://A=a%B=b">
 <script>
 if (window.testRunner) {
     testRunner.dumpAsText();
@@ -11,7 +11,7 @@ if (window.testRunner) {
 </script>
 </head>
 <body>
-<p>Tests that we do not redirect to an invalid URL initiated by &lt;meta http-equiv=&quot;refresh&quot;&gt;. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a&amp;B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
+<p>Tests that we do not redirect to an invalid URL initiated by &lt;meta http-equiv=&quot;refresh&quot;&gt;. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a%B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
 <p>Note, this test must be run in DumpRenderTree.</p>
 <script>
 // This ugly double-timeout ensures that the scheduled meta-refresh, whose timer isn't even started until the frame finishes loading,
index dc3af32..2a6e5d7 100644 (file)
@@ -9,7 +9,7 @@ test    file:///BASE/test               /BASE/test
 //test file://test/    test    /
 ///    file:///                /
 ///test        file:///test            /test
-file:  file:///BASE/           /BASE/
+file:  file:///BASE/:///               /
 file:test      file:///BASE/test               /BASE/test
 file:/ file:///                /
 file:/test     file:///test            /test
@@ -20,11 +20,11 @@ file:///test        file:///test            /test
 file://localhost       file:///                /
 file://localhost/      file:///                /
 file://localhost/test  file:///test            /test
-http:  http:/          /
-http:/ http:/          /
-http://        http:/          /
-http:///       http:/          /
-http:////      http:/          /
+http:  http:           
+http:/ http:/          
+http://        http://         
+http:///       http:///                
+http:////      http:////               
 http:webkit.org        http://webkit.org/      webkit.org      /
 http:/webkit.org       http://webkit.org/      webkit.org      /
 http://webkit.org      http://webkit.org/      webkit.org      /
@@ -41,6 +41,6 @@ x-webkit:test x-webkit:test           test
 x-webkit:/     x-webkit:/              /
 x-webkit:/test x-webkit:/test          /test
 x-webkit://    x-webkit://             //
-x-webkit://test        x-webkit://test test    
+x-webkit://test        x-webkit://test/        test    /
 x-webkit:///   x-webkit:///            ///
 x-webkit:///test       x-webkit:///test                ///test
index 0c82278..d777207 100644 (file)
@@ -1,4 +1,4 @@
-Policy delegate: attempt to load http://A=a&B=b with navigation type 'other'
+Policy delegate: attempt to load http://a=a&b=b/ with navigation type 'other'
 Tests that we call the navigation policy delegate when opening a new window to an invalid URL.
 
 Note, this test must be run in DumpRenderTree.
index 85ab4c7..2a14475 100644 (file)
@@ -1,7 +1,7 @@
-main frame - willPerformClientRedirectToURL: http://A=a&B=b 
+main frame - willPerformClientRedirectToURL: http://A=a%B=b 
 main frame - didFinishDocumentLoadForFrame
 main frame - didFinishLoadForFrame
 main frame - didCancelClientRedirectForFrame
-Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a&B=b" followed by "didCancelClientRedirectForFrame".
+Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
 
 Note, this test must be run in DumpRenderTree.
index 104259e..fdf697e 100644 (file)
@@ -11,10 +11,10 @@ if (window.testRunner) {
 </script>
 </head>
 <body>
-<p>Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a&amp;B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
+<p>Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: &quot;willPerformClientRedirectToURL: http://A=a%B=b&quot; followed by &quot;didCancelClientRedirectForFrame&quot;.</p>
 <p>Note, this test must be run in DumpRenderTree.</p>
 <script>
-window.open("http://A=a&B=b", "_top");
+window.open("http://A=a%B=b", "_top");
 window.setTimeout(function() {
     if (window.testRunner)
         testRunner.notifyDone();
index c7c8b1d..f86252e 100644 (file)
@@ -4,11 +4,11 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS canonicalize('http://www.example.com/#hello, world') is 'http://www.example.com/#hello, world'
-FAIL canonicalize('http://www.example.com/#©') should be http://www.example.com/#©. Was http://www.example.com/#%C2%A9.
-FAIL canonicalize('http://www.example.com/#𐌀ss') should be http://www.example.com/#𐌀ss. Was http://www.example.com/#%26%2366304%3Bss.
+FAIL canonicalize('http://www.example.com/#©') should be http://www.example.com/#©. Was http://www.example.com/#%C3%82%C2%A9.
+FAIL canonicalize('http://www.example.com/#𐌀ss') should be http://www.example.com/#𐌀ss. Was http://www.example.com/#%F0%90%8C%80ss.
 PASS canonicalize('http://www.example.com/#%41%a') is 'http://www.example.com/#%41%a'
-FAIL canonicalize('http://www.example.com/#\ud800\u597d') should be http://www.example.com/#�好. Was http://www.example.com/#%26%2355296%3B%26%2322909%3B.
-FAIL canonicalize('http://www.example.com/#a\uFDD0') should be http://www.example.com/#a﷐. Was http://www.example.com/#a%26%2364976%3B.
+FAIL canonicalize('http://www.example.com/#\ud800\u597d') should be http://www.example.com/#�好. Was http://www.example.com/#%EF%BF%BD%E5%A5%BD.
+FAIL canonicalize('http://www.example.com/#a\uFDD0') should be http://www.example.com/#a﷐. Was http://www.example.com/#a%EF%BF%BD.
 PASS canonicalize('http://www.example.com/#asdf#qwer') is 'http://www.example.com/#asdf#qwer'
 PASS canonicalize('http://www.example.com/##asdf') is 'http://www.example.com/##asdf'
 PASS canonicalize('http://www.example.com/#a\nb\rc\td') is 'http://www.example.com/#abcd'
index 79f9ab8..1b7cf17 100644 (file)
@@ -3,14 +3,14 @@ Canonicalization of file URLs
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///C:/foo/bar.html. Was file:///tmp/mock/c:/foo/bar.html.
-FAIL canonicalize('  File:c|////foo\\bar.html') should be file:///C:////foo/bar.html. Was file:///tmp/mock/c|////foo/bar.html.
-FAIL canonicalize('file:') should be file:///. Was file:///tmp/mock/path.
+FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///C:/foo/bar.html. Was file:///c:/foo/bar.html.
+FAIL canonicalize('  File:c|////foo\\bar.html') should be file:///C:////foo/bar.html. Was file:///c:////foo/bar.html.
+FAIL canonicalize('file:') should be file:///. Was file:///tmp/mock/path:///.
 FAIL canonicalize('file:UNChost/path') should be file://unchost/path. Was file:///tmp/mock/UNChost/path.
-FAIL canonicalize('c:\\foo\\bar') should be file:///C:/foo/bar. Was c:/foo/bar.
-FAIL canonicalize('C|/foo/bar') should be file:///C:/foo/bar. Was file:///tmp/mock/C|/foo/bar.
-FAIL canonicalize('/C|\\foo\\bar') should be file:///C:/foo/bar. Was file:///C|/foo/bar.
-FAIL canonicalize('//C|/foo/bar') should be file:///C:/foo/bar. Was //C|/foo/bar.
+FAIL canonicalize('c:\\foo\\bar') should be file:///C:/foo/bar. Was c:\foo\bar.
+PASS canonicalize('C|/foo/bar') is 'file:///C:/foo/bar'
+PASS canonicalize('/C|\\foo\\bar') is 'file:///C:/foo/bar'
+PASS canonicalize('//C|/foo/bar') is 'file:///C:/foo/bar'
 PASS canonicalize('//server/file') is 'file://server/file'
 PASS canonicalize('\\\\server\\file') is 'file://server/file'
 PASS canonicalize('/\\server/file') is 'file://server/file'
@@ -20,10 +20,10 @@ PASS canonicalize('file:///foo/bar.txt') is 'file:///foo/bar.txt'
 FAIL canonicalize('FILE:/\\/\\7:\\\\//foo\\bar.html') should be file://7:////foo/bar.html. Was file:////7:////foo/bar.html.
 FAIL canonicalize('file:filer/home\\me') should be file://filer/home/me. Was file:///tmp/mock/filer/home/me.
 FAIL canonicalize('file:///C:/foo/../../../bar.html') should be file:///C:/bar.html. Was file:///bar.html.
-FAIL canonicalize('file:///C:/asdf#\xc2') should be file:///C:/asdf#�. Was file:///C:/asdf#%C2.
+FAIL canonicalize('file:///C:/asdf#\xc2') should be file:///C:/asdf#�. Was file:///C:/asdf#%C3%82.
 PASS canonicalize('file:///home/me') is 'file:///home/me'
-FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///c:/foo/bar.html. Was file:///tmp/mock/c:/foo/bar.html.
-FAIL canonicalize('file:c|//foo\\bar.html') should be file:///c%7C//foo/bar.html. Was file:///tmp/mock/c|//foo/bar.html.
+PASS canonicalize('file:c:\\foo\\bar.html') is 'file:///c:/foo/bar.html'
+FAIL canonicalize('file:c|//foo\\bar.html') should be file:///c%7C//foo/bar.html. Was file:///c://foo/bar.html.
 PASS canonicalize('//') is 'file:///'
 PASS canonicalize('///') is 'file:///'
 PASS canonicalize('///test') is 'file:///test'
index df1c495..1312f6e 100644 (file)
@@ -3,30 +3,30 @@ Canonicalization of file URLs when the base URL is an http URL
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///C:/foo/bar.html. Was file://c:/foo/bar.html.
-FAIL canonicalize('  File:c|////foo\\bar.html') should be file:///C:////foo/bar.html. Was file://c|////foo/bar.html.
+FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///C:/foo/bar.html. Was file:///c:/foo/bar.html.
+FAIL canonicalize('  File:c|////foo\\bar.html') should be file:///C:////foo/bar.html. Was file:///c:////foo/bar.html.
 PASS canonicalize('file:') is 'file:///'
-FAIL canonicalize('file:UNChost/path') should be file://unchost/path. Was file://UNChost/path.
-FAIL canonicalize('c:\\foo\\bar') should be file:///C:/foo/bar. Was c:/foo/bar.
+FAIL canonicalize('file:UNChost/path') should be file://unchost/path. Was file:///UNChost/path.
+FAIL canonicalize('c:\\foo\\bar') should be file:///C:/foo/bar. Was c:\foo\bar.
 FAIL canonicalize('C|/foo/bar') should be file:///C:/foo/bar. Was http://example.com/mock/C|/foo/bar.
 FAIL canonicalize('/C|\\foo\\bar') should be file:///C:/foo/bar. Was http://example.com/C|/foo/bar.
-FAIL canonicalize('//C|/foo/bar') should be file:///C:/foo/bar. Was //C|/foo/bar.
+FAIL canonicalize('//C|/foo/bar') should be file:///C:/foo/bar. Was http://c|/foo/bar.
 FAIL canonicalize('//server/file') should be file://server/file. Was http://server/file.
 FAIL canonicalize('\\\\server\\file') should be file://server/file. Was http://server/file.
 FAIL canonicalize('/\\server/file') should be file://server/file. Was http://server/file.
-FAIL canonicalize('file:c:foo/bar.html') should be file:///C:/foo/bar.html. Was file://c:foo/bar.html.
+FAIL canonicalize('file:c:foo/bar.html') should be file:///C:/foo/bar.html. Was file:///c:foo/bar.html.
 FAIL canonicalize('file:/\\/\\C:\\\\//foo\\bar.html') should be file:///C:////foo/bar.html. Was file:////C:////foo/bar.html.
 PASS canonicalize('file:///foo/bar.txt') is 'file:///foo/bar.txt'
 FAIL canonicalize('FILE:/\\/\\7:\\\\//foo\\bar.html') should be file://7:////foo/bar.html. Was file:////7:////foo/bar.html.
-PASS canonicalize('file:filer/home\\me') is 'file://filer/home/me'
+FAIL canonicalize('file:filer/home\\me') should be file://filer/home/me. Was file:///filer/home/me.
 FAIL canonicalize('file:///C:/foo/../../../bar.html') should be file:///C:/bar.html. Was file:///bar.html.
-FAIL canonicalize('file:///C:/asdf#\xc2') should be file:///C:/asdf#Â. Was file:///C:/asdf#%C2.
-FAIL canonicalize('file:///C:/asdf#Â') should be file:///C:/asdf#Â. Was file:///C:/asdf#%C2.
+FAIL canonicalize('file:///C:/asdf#\xc2') should be file:///C:/asdf#Â. Was file:///C:/asdf#%C3%82.
+FAIL canonicalize('file:///C:/asdf#Â') should be file:///C:/asdf#Â. Was file:///C:/asdf#%C3%82.
 PASS canonicalize('file:///home/me') is 'file:///home/me'
-FAIL canonicalize('file:c:\\foo\\bar.html') should be file:///c:/foo/bar.html. Was file://c:/foo/bar.html.
-FAIL canonicalize('file:c|//foo\\bar.html') should be file:///c%7C//foo/bar.html. Was file://c|//foo/bar.html.
-FAIL canonicalize('//') should be file:///. Was http:/.
-FAIL canonicalize('///') should be file:///. Was http:/.
+PASS canonicalize('file:c:\\foo\\bar.html') is 'file:///c:/foo/bar.html'
+FAIL canonicalize('file:c|//foo\\bar.html') should be file:///c%7C//foo/bar.html. Was file:///c://foo/bar.html.
+FAIL canonicalize('//') should be file:///. Was //.
+FAIL canonicalize('///') should be file:///. Was ///.
 FAIL canonicalize('///test') should be file:///test. Was http://test/.
 PASS canonicalize('file://test') is 'file://test/'
 FAIL canonicalize('file://localhost') should be file://localhost/. Was file:///.
index 31606c5..53975c9 100644 (file)
@@ -8,26 +8,26 @@ FAIL canonicalize('http://Goo%20 goo%7C|.com/') should be http://goo%20%20goo%7C
 FAIL canonicalize('http://GOO  goo.com/') should be http://goo%20%20goo.com/. Was http://GOO  goo.com/.
 PASS canonicalize('http://GOO​⁠goo.com/') is 'http://googoo.com/'
 PASS canonicalize('http://www.foo。bar.com/') is 'http://www.foo.bar.com/'
-FAIL canonicalize('http://﷐zyx.com/') should be http://%EF%BF%BDzyx.com/. Was about:blank.
+FAIL canonicalize('http://﷐zyx.com/') should be http://%EF%BF%BDzyx.com/. Was http://﷐zyx.com/.
 FAIL canonicalize('http://%ef%b7%90zyx.com/') should be http://%EF%BF%BDzyx.com/. Was http://%ef%b7%90zyx.com/.
 PASS canonicalize('http://Go.com/') is 'http://go.com/'
-FAIL canonicalize('http://%41.com/') should be http://a.com/. Was http://%41.com/.
+FAIL canonicalize('http://%41.com/') should be http://a.com/. Was http://%41.com/.
 FAIL canonicalize('http://%ef%bc%85%ef%bc%94%ef%bc%91.com/') should be http://a.com/. Was http://%ef%bc%85%ef%bc%94%ef%bc%91.com/.
-PASS canonicalize('http://%00.com/') is 'http://%00.com/'
+FAIL canonicalize('http://%00.com/') should be http://%00.com/. Was http://%00.com/.
 FAIL canonicalize('http://%ef%bc%85%ef%bc%90%ef%bc%90.com/') should be http://%00.com/. Was http://%ef%bc%85%ef%bc%90%ef%bc%90.com/.
 PASS canonicalize('http://你好你好/') is 'http://xn--6qqa088eba/'
-FAIL canonicalize('http://%E4%BD%A0%E5%A5%BD你好/') should be http://xn--6qqa088eba/. Was http://xn--%e4%bd%a0%e5%a5%bd-5g72ap39l/.
+PASS canonicalize('http://%E4%BD%A0%E5%A5%BD你好/') is 'http://xn--6qqa088eba/'
 FAIL canonicalize('http://%zz%66%a/') should be http://%25zzf%25a/. Was http://%zz%66%a/.
 PASS canonicalize('http://%25/') is 'http://%25/'
 PASS canonicalize('http://hello%00/') is 'http://hello%00/'
-FAIL canonicalize('http://%30%78%63%30%2e%30%32%35%30.01/') should be http://192.168.0.1/. Was http://%30%78%63%30%2e%30%32%35%30.01/.
-FAIL canonicalize('http://%30%78%63%30%2e%30%32%35%30.01%2e/') should be http://192.168.0.1/. Was http://%30%78%63%30%2e%30%32%35%30.01%2e/.
-FAIL canonicalize('http://%3g%78%63%30%2e%30%32%35%30%2E.01/') should be http://%253gxc0.0250..01/. Was http://%3g%78%63%30%2e%30%32%35%30%2e.01/.
+PASS canonicalize('http://%30%78%63%30%2e%30%32%35%30.01/') is 'http://192.168.0.1/'
+PASS canonicalize('http://%30%78%63%30%2e%30%32%35%30.01%2e/') is 'http://192.168.0.1/'
+FAIL canonicalize('http://%3g%78%63%30%2e%30%32%35%30%2E.01/') should be http://%253gxc0.0250..01/. Was http://%3g%78%63%30%2e%30%32%35%30%2E.01/.
 FAIL canonicalize('http://192.168.0.1 hello/') should be http://192.168.0.1%20hello/. Was http://192.168.0.1 hello/.
-FAIL canonicalize('http://0Xc0.0250.01/') should be http://192.168.0.1/. Was http://0xc0.0250.01/.
+PASS canonicalize('http://0Xc0.0250.01/') is 'http://192.168.0.1/'
 PASS canonicalize('http://192.168.0.257/') is 'http://192.168.0.257/'
 PASS canonicalize('http://[google.com]/') is 'http://[google.com]/'
-FAIL canonicalize('http://т(/') should be http://xn--%28-7ed/. Was http://т(/.
+FAIL canonicalize('http://т(/') should be http://xn--%28-7ed/. Was http://xn--(-8tb/.
 PASS canonicalize('http://go\\@ogle.com/') is 'http://go/@ogle.com/'
 PASS canonicalize('http://go/@ogle.com/') is 'http://go/@ogle.com/'
 FAIL canonicalize('http://www.lookout.net::==80::==443::/') should be http://www.lookout.net::%3D%3D80::%3D%3D443:/. Was http://www.lookout.net::==80::==443::/.
@@ -37,7 +37,7 @@ FAIL canonicalize('http:////:@//') should be http:////. Was http:////:@//.
 PASS canonicalize('http://\google.com/foo/') is 'http://google.com/foo/'
 PASS canonicalize('http://\\google.com/foo/') is 'http://google.com/foo/'
 FAIL canonicalize('http:////asdf@//') should be http://asdf@//. Was http:////asdf@//.
-PASS canonicalize('http:////:81/') is 'http://:81/'
+FAIL canonicalize('http:////:81/') should be http://:81/. Was http:////:81/.
 PASS canonicalize('http://:///') is 'http://:///'
 PASS canonicalize('http://c:/') is 'http://c/'
 PASS canonicalize('http://xxxx:/') is 'http://xxxx/'
index 2420ccf..463ac7f 100644 (file)
@@ -25,7 +25,7 @@ PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
-PASS src is expected
+FAIL src should be ghost://CamelCase/. Was ghost://camelcase/.
 FAIL src should be ghost://UnicodeF%C3%AAte/. Was ghost://xn--unicodefte-t7a/.
 PASS successfullyParsed is true
 
index e871f8c..223e38c 100644 (file)
@@ -11,27 +11,27 @@ PASS canonicalize('http://نامه‌ای.com/') is 'http://xn--mgba3gch31f.com/
 PASS canonicalize('http://www.looĸout.net/') is 'http://www.xn--looout-5bb.net/'
 PASS canonicalize('http://ᗯᗯᗯ.lookout.net/') is 'http://xn--1qeaa.lookout.net/'
 PASS canonicalize('http://www.lookout.сом/') is 'http://www.lookout.xn--l1adi/'
-FAIL canonicalize('http://www.lookout.net:80/') should be http://www.lookout.net:80/. Was http://www.lookout.net/.
+FAIL canonicalize('http://www.lookout.net:80/') should be http://www.lookout.net:80/. Was http://www.lookout.net:80/.
 PASS canonicalize('http://www‥lookout.net/') is 'http://www..lookout.net/'
 PASS canonicalize('http://www.lookout‧net/') is 'http://www.xn--lookoutnet-406e/'
 PASS canonicalize('http://www.looĸout.net/') is 'http://www.xn--looout-5bb.net/'
 FAIL canonicalize('http://www.lookout.net⩴80/') should be http://www.lookout.net::%3D80/. Was http://www.lookout.net⩴80/.
 FAIL canonicalize('http://www .lookout.net/') should be http://www%20.lookout.net/. Was http://www .lookout.net/.
-FAIL canonicalize('http:// lookout.net/') should be http://%E1%9A%80lookout.net/. Was about:blank.
+FAIL canonicalize('http:// lookout.net/') should be http://%E1%9A%80lookout.net/. Was http:// lookout.net/.
 FAIL canonicalize('http://\1flookout.net/') should be http://%1Flookout.net/. Was http://\1flookout.net/.
-FAIL canonicalize('http://look۝out.net/') should be http://look%DB%9Dout.net/. Was about:blank.
-FAIL canonicalize('http://look᠎out.net/') should be http://look%E1%A0%8Eout.net/. Was about:blank.
+FAIL canonicalize('http://look۝out.net/') should be http://look%DB%9Dout.net/. Was http://look۝out.net/.
+FAIL canonicalize('http://look᠎out.net/') should be http://look%E1%A0%8Eout.net/. Was http://look᠎out.net/.
 FAIL canonicalize('http://look⁠out.net/') should be http://look%E2%81%A0out.net/. Was http://lookout.net/.
 FAIL canonicalize('http://lookout.net/') should be http://look%EF%BB%BFout.net/. Was http://lookout.net/.
-FAIL canonicalize('http://look🿾out.net/') should be http://look%F0%9F%BF%BEout.net/. Was about:blank.
-FAIL canonicalize('http://lookout.net/') should be http://look%EF%BF%BAout.net/. Was about:blank.
-FAIL canonicalize('http://look⿰out.net/') should be http://look%E2%BF%B0out.net/. Was about:blank.
+FAIL canonicalize('http://look🿾out.net/') should be http://look%F0%9F%BF%BEout.net/. Was http://look🿾out.net/.
+FAIL canonicalize('http://lookout.net/') should be http://look%EF%BF%BAout.net/. Was http://lookout.net/.
+FAIL canonicalize('http://look⿰out.net/') should be http://look%E2%BF%B0out.net/. Was http://look⿰out.net/.
 FAIL canonicalize('http://looḱout.net/') should be http://look%CD%81out.net/. Was http://xn--looout-kp7b.net/.
-FAIL canonicalize('http://look‮out.net/') should be http://look%E2%80%AEout.net/. Was about:blank.
-FAIL canonicalize('http://lookout.net/') should be http://look%E2%81%ABout.net/. Was about:blank.
-FAIL canonicalize('http://look󠀁out.net/') should be http://look%F3%A0%80%81out.net/. Was about:blank.
-FAIL canonicalize('http://look󠀠out.net/') should be http://look%F3%A0%80%A0out.net/. Was about:blank.
-FAIL canonicalize('http://look־out.net/') should be http://look%D6%BEout.net/. Was about:blank.
+FAIL canonicalize('http://look‮out.net/') should be http://look%E2%80%AEout.net/. Was http://look‮out.net/.
+FAIL canonicalize('http://lookout.net/') should be http://look%E2%81%ABout.net/. Was http://lookout.net/.
+FAIL canonicalize('http://look󠀁out.net/') should be http://look%F3%A0%80%81out.net/. Was http://look󠀁out.net/.
+FAIL canonicalize('http://look󠀠out.net/') should be http://look%F3%A0%80%A0out.net/. Was http://look󠀠out.net/.
+FAIL canonicalize('http://look־out.net/') should be http://look%D6%BEout.net/. Was http://look־out.net/.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 5ab6592..8b3c2ca 100644 (file)
@@ -1,4 +1,4 @@
 Test passes if all the invalid urls are converted to about:blank.
-about:blank
-about:blank
+http://.com
+http://www.اast.fm
 
index 99b8bbb..85183d9 100644 (file)
@@ -3,21 +3,16 @@ This ensure we do not mess up the bytes when an URL is partially parsed and is i
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-FAIL src should be http:///. Was http:/.
-FAIL src should be https:///. Was https:/.
-FAIL src should be ftp:///. Was ftp://.
-FAIL src should be gopher:///. Was gopher://.
-FAIL src should be ws:///. Was ws://.
-FAIL src should be wss:///. Was wss://.
-PASS src is expected
-PASS src is expected
-PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
+FAIL src should be foo://tête à tête@host/. Was foo://t%C3%AAte%20%C3%A0%20t%C3%AAte@host/.
+FAIL src should be foo://user:tête à tête@host/. Was foo://user:t%C3%AAte%20%C3%A0%20t%C3%AAte@host/.
+FAIL src should be foo://<>@host/. Was foo://%3C%3E@host/.
+FAIL src should be foo://user:<>@host/. Was foo://user:%3C%3E@host/.
 PASS src is expected
 PASS src is expected
 PASS src is expected
@@ -25,6 +20,11 @@ PASS src is expected
 PASS src is expected
 PASS src is expected
 PASS src is expected
+FAIL src should be ws:/tête. Was ws://xn--tte-fma/.
+FAIL src should be ftp:/tête. Was ftp://xn--tte-fma/.
+FAIL src should be http:/tête. Was http://xn--tte-fma/.
+FAIL src should be https:/tête. Was https://xn--tte-fma/.
+FAIL src should be gopher:/tête. Was gopher://xn--tte-fma/.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index f5169fa..3af4059 100644 (file)
@@ -5,20 +5,20 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS canonicalize('http://./') is 'http://./'
 PASS canonicalize('http://192.168.0.1/') is 'http://192.168.0.1/'
-FAIL canonicalize('http://0300.0250.00.01/') should be http://192.168.0.1/. Was http://0300.0250.00.01/.
-FAIL canonicalize('http://0xC0.0Xa8.0x0.0x1/') should be http://192.168.0.1/. Was http://0xc0.0xa8.0x0.0x1/.
+PASS canonicalize('http://0300.0250.00.01/') is 'http://192.168.0.1/'
+PASS canonicalize('http://0xC0.0Xa8.0x0.0x1/') is 'http://192.168.0.1/'
 PASS canonicalize('http://192.168.9.com/') is 'http://192.168.9.com/'
 PASS canonicalize('http://19a.168.0.1/') is 'http://19a.168.0.1/'
 PASS canonicalize('http://0308.0250.00.01/') is 'http://0308.0250.00.01/'
 PASS canonicalize('http://0xCG.0xA8.0x0.0x1/') is 'http://0xcg.0xa8.0x0.0x1/'
-FAIL canonicalize('http://192/') should be http://0.0.0.192/. Was http://192/.
-FAIL canonicalize('http://0xC0a80001/') should be http://192.168.0.1/. Was http://0xc0a80001/.
-FAIL canonicalize('http://030052000001/') should be http://192.168.0.1/. Was http://030052000001/.
-FAIL canonicalize('http://000030052000001/') should be http://192.168.0.1/. Was http://000030052000001/.
-FAIL canonicalize('http://192.168/') should be http://192.0.0.168/. Was http://192.168/.
-FAIL canonicalize('http://192.0x00A80001/') should be http://192.168.0.1/. Was http://192.0x00a80001/.
-FAIL canonicalize('http://0xc0.052000001/') should be http://192.168.0.1/. Was http://0xc0.052000001/.
-FAIL canonicalize('http://192.168.1/') should be http://192.168.0.1/. Was http://192.168.1/.
+PASS canonicalize('http://192/') is 'http://0.0.0.192/'
+PASS canonicalize('http://0xC0a80001/') is 'http://192.168.0.1/'
+PASS canonicalize('http://030052000001/') is 'http://192.168.0.1/'
+PASS canonicalize('http://000030052000001/') is 'http://192.168.0.1/'
+PASS canonicalize('http://192.168/') is 'http://192.0.0.168/'
+PASS canonicalize('http://192.0x00A80001/') is 'http://192.168.0.1/'
+PASS canonicalize('http://0xc0.052000001/') is 'http://192.168.0.1/'
+PASS canonicalize('http://192.168.1/') is 'http://192.168.0.1/'
 PASS canonicalize('http://192.168.0.0.1/') is 'http://192.168.0.0.1/'
 FAIL canonicalize('http://192.168.0.1./') should be http://192.168.0.1/. Was http://192.168.0.1./.
 PASS canonicalize('http://192.168.0.1. hello/') is 'http://192.168.0.1. hello/'
@@ -33,15 +33,15 @@ PASS canonicalize('http://0.0.0.0x100/') is 'http://0.0.0.0x100/'
 PASS canonicalize('http://0.0.0x10000/') is 'http://0.0.0x10000/'
 PASS canonicalize('http://0.0x1000000/') is 'http://0.0x1000000/'
 PASS canonicalize('http://0x100000000/') is 'http://0x100000000/'
-FAIL canonicalize('http://0xFF.0/') should be http://255.0.0.0/. Was http://0xff.0/.
-FAIL canonicalize('http://0xFF.0.0/') should be http://255.0.0.0/. Was http://0xff.0.0/.
-FAIL canonicalize('http://0xFF.0.0.0/') should be http://255.0.0.0/. Was http://0xff.0.0.0/.
-FAIL canonicalize('http://0.0xFF.0.0/') should be http://0.255.0.0/. Was http://0.0xff.0.0/.
-FAIL canonicalize('http://0.0.0xFF.0/') should be http://0.0.255.0/. Was http://0.0.0xff.0/.
-FAIL canonicalize('http://0.0.0.0xFF/') should be http://0.0.0.255/. Was http://0.0.0.0xff/.
-FAIL canonicalize('http://0.0.0xFFFF/') should be http://0.0.255.255/. Was http://0.0.0xffff/.
-FAIL canonicalize('http://0.0xFFFFFF/') should be http://0.255.255.255/. Was http://0.0xffffff/.
-FAIL canonicalize('http://0xFFFFFFFF/') should be http://255.255.255.255/. Was http://0xffffffff/.
+PASS canonicalize('http://0xFF.0/') is 'http://255.0.0.0/'
+PASS canonicalize('http://0xFF.0.0/') is 'http://255.0.0.0/'
+PASS canonicalize('http://0xFF.0.0.0/') is 'http://255.0.0.0/'
+PASS canonicalize('http://0.0xFF.0.0/') is 'http://0.255.0.0/'
+PASS canonicalize('http://0.0.0xFF.0/') is 'http://0.0.255.0/'
+PASS canonicalize('http://0.0.0.0xFF/') is 'http://0.0.0.255/'
+PASS canonicalize('http://0.0.0xFFFF/') is 'http://0.0.255.255/'
+PASS canonicalize('http://0.0xFFFFFF/') is 'http://0.255.255.255/'
+PASS canonicalize('http://0xFFFFFFFF/') is 'http://255.255.255.255/'
 PASS canonicalize('http://276.256.0xf1a2.077777/') is 'http://276.256.0xf1a2.077777/'
 PASS canonicalize('http://192.168.0.257/') is 'http://192.168.0.257/'
 PASS canonicalize('http://192.168.0xa20001/') is 'http://192.168.0xa20001/'
@@ -49,13 +49,13 @@ PASS canonicalize('http://192.015052000001/') is 'http://192.015052000001/'
 PASS canonicalize('http://0X12C0a80001/') is 'http://0x12c0a80001/'
 PASS canonicalize('http://276.1.2/') is 'http://276.1.2/'
 PASS canonicalize('http://192.168.0.1 hello/') is 'http://192.168.0.1 hello/'
-FAIL canonicalize('http://0000000000000300.0x00000000000000fF.00000000000000001/') should be http://192.255.0.1/. Was http://0000000000000300.0x00000000000000ff.00000000000000001/.
+PASS canonicalize('http://0000000000000300.0x00000000000000fF.00000000000000001/') is 'http://192.255.0.1/'
 PASS canonicalize('http://0000000000000300.0xffffffffFFFFFFFF.3022415481470977/') is 'http://0000000000000300.0xffffffffffffffff.3022415481470977/'
-FAIL canonicalize('http://00000000000000000001/') should be http://0.0.0.1/. Was http://00000000000000000001/.
+PASS canonicalize('http://00000000000000000001/') is 'http://0.0.0.1/'
 PASS canonicalize('http://0000000000000000100000000000000001/') is 'http://0000000000000000100000000000000001/'
 PASS canonicalize('http://0.0.0.000000000000000000z/') is 'http://0.0.0.000000000000000000z/'
 PASS canonicalize('http://0.0.0.100000000000000000z/') is 'http://0.0.0.100000000000000000z/'
-FAIL canonicalize('http://0.00.0x.0x0/') should be http://0.0.0.0/. Was http://0.00.0x.0x0/.
+PASS canonicalize('http://0.00.0x.0x0/') is 'http://0.0.0.0/'
 PASS successfullyParsed is true
 
 TEST COMPLETE
index f4f04c6..d511086 100644 (file)
@@ -15,18 +15,18 @@ PASS canonicalize('http://2001:db8::1]/') is 'http://2001:db8::1]/'
 PASS canonicalize('http://[::]/') is 'http://[::]/'
 PASS canonicalize('http://[::1]/') is 'http://[::1]/'
 PASS canonicalize('http://[1::]/') is 'http://[1::]/'
-FAIL canonicalize('http://[::192.168.0.1]/') should be http://[::c0a8:1]/. Was http://[::192.168.0.1]/.
-FAIL canonicalize('http://[::ffff:192.168.0.1]/') should be http://[::ffff:c0a8:1]/. Was http://[::ffff:192.168.0.1]/.
-FAIL canonicalize('http://[000:01:02:003:004:5:6:007]/') should be http://[0:1:2:3:4:5:6:7]/. Was http://[000:01:02:003:004:5:6:007]/.
+PASS canonicalize('http://[::192.168.0.1]/') is 'http://[::c0a8:1]/'
+PASS canonicalize('http://[::ffff:192.168.0.1]/') is 'http://[::ffff:c0a8:1]/'
+PASS canonicalize('http://[000:01:02:003:004:5:6:007]/') is 'http://[0:1:2:3:4:5:6:7]/'
 PASS canonicalize('http://[A:b:c:DE:fF:0:1:aC]/') is 'http://[a:b:c:de:ff:0:1:ac]/'
-FAIL canonicalize('http://[1:0:0:2::3:0]/') should be http://[1::2:0:0:3:0]/. Was http://[1:0:0:2::3:0]/.
+PASS canonicalize('http://[1:0:0:2::3:0]/') is 'http://[1::2:0:0:3:0]/'
 PASS canonicalize('http://[1::2:0:0:3:0]/') is 'http://[1::2:0:0:3:0]/'
-PASS canonicalize('http://[::eeee:192.168.0.1]/') is 'http://[::eeee:192.168.0.1]/'
-PASS canonicalize('http://[2001::192.168.0.1]/') is 'http://[2001::192.168.0.1]/'
+FAIL canonicalize('http://[::eeee:192.168.0.1]/') should be http://[::eeee:192.168.0.1]/. Was http://[::eeee:c0a8:1]/.
+FAIL canonicalize('http://[2001::192.168.0.1]/') should be http://[2001::192.168.0.1]/. Was http://[2001::c0a8:1]/.
 PASS canonicalize('http://[1:2:192.168.0.1:5:6]/') is 'http://[1:2:192.168.0.1:5:6]/'
 FAIL canonicalize('http://[::ffff:192.1.2]/') should be http://[::ffff:c001:2]/. Was http://[::ffff:192.1.2]/.
 FAIL canonicalize('http://[::ffff:0xC0.0Xa8.0x0.0x1]/') should be http://[::ffff:c0a8:1]/. Was http://[::ffff:0xC0.0Xa8.0x0.0x1]/.
-FAIL canonicalize('http://[0:0::0:0:8]/') should be http://[::8]/. Was http://[0:0::0:0:8]/.
+PASS canonicalize('http://[0:0::0:0:8]/') is 'http://[::8]/'
 PASS canonicalize('http://[2001:db8::1]/') is 'http://[2001:db8::1]/'
 PASS canonicalize('http://[2001::db8::1]/') is 'http://[2001::db8::1]/'
 PASS canonicalize('http://[2001:db8:::1]/') is 'http://[2001:db8:::1]/'
@@ -37,7 +37,7 @@ PASS canonicalize('http://[::ffff:192.168.0.0.1]/') is 'http://[::ffff:192.168.0
 PASS canonicalize('http://[1:2:3:4:5:6:7:8:9]/') is 'http://[1:2:3:4:5:6:7:8:9]/'
 PASS canonicalize('http://[0:0:0:0:0:0:0:192.168.0.1]/') is 'http://[0:0:0:0:0:0:0:192.168.0.1]/'
 PASS canonicalize('http://[1:2:3:4:5:6::192.168.0.1]/') is 'http://[1:2:3:4:5:6::192.168.0.1]/'
-FAIL canonicalize('http://[1:2:3:4:5:6::8]/') should be http://[1:2:3:4:5:6:0:8]/. Was http://[1:2:3:4:5:6::8]/.
+PASS canonicalize('http://[1:2:3:4:5:6::8]/') is 'http://[1:2:3:4:5:6:0:8]/'
 PASS canonicalize('http://[1:2:3:4:5:6:7:8:]/') is 'http://[1:2:3:4:5:6:7:8:]/'
 PASS canonicalize('http://[1:2:3:4:5:6:192.168.0.1:]/') is 'http://[1:2:3:4:5:6:192.168.0.1:]/'
 PASS canonicalize('http://[-1:2:3:4:5:6:7:8]/') is 'http://[-1:2:3:4:5:6:7:8]/'
@@ -47,7 +47,7 @@ PASS canonicalize('http://[1::%]/') is 'http://[1::%]/'
 PASS canonicalize('http://[%]/') is 'http://[%]/'
 PASS canonicalize('http://[::%:]/') is 'http://[::%:]/'
 PASS canonicalize('http://[:0:0::0:0:8]/') is 'http://[:0:0::0:0:8]/'
-PASS canonicalize('http://[0:0::0:0:8:]/') is 'http://[0:0::0:0:8:]/'
+FAIL canonicalize('http://[0:0::0:0:8:]/') should be http://[0:0::0:0:8:]/. Was http://[::8]/.
 PASS canonicalize('http://[:0:0::0:0:8:]/') is 'http://[:0:0::0:0:8:]/'
 PASS canonicalize('http://[::192.168..1]/') is 'http://[::192.168..1]/'
 PASS canonicalize('http://[::1 hello]/') is 'http://[::1 hello]/'
index bfd2c94..7060c69 100644 (file)
@@ -14,9 +14,9 @@ PASS canonicalize('http://example.com/foo/bar/../ton') is 'http://example.com/fo
 PASS canonicalize('http://example.com/foo/bar/../ton/../../a') is 'http://example.com/a'
 PASS canonicalize('http://example.com/foo/../../..') is 'http://example.com/'
 PASS canonicalize('http://example.com/foo/../../../ton') is 'http://example.com/ton'
-FAIL canonicalize('http://example.com/foo/%2e') should be http://example.com/foo/. Was http://example.com/foo/%2e.
-FAIL canonicalize('http://example.com/foo/%2e%2') should be http://example.com/foo/.%2. Was http://example.com/foo/%2e%2.
-FAIL canonicalize('http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar') should be http://example.com/..bar. Was http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar.
+PASS canonicalize('http://example.com/foo/%2e') is 'http://example.com/foo/'
+PASS canonicalize('http://example.com/foo/%2e%2') is 'http://example.com/foo/.%2'
+PASS canonicalize('http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar') is 'http://example.com/..bar'
 PASS canonicalize('http://example.com////../..') is 'http://example.com//'
 PASS canonicalize('http://example.com/foo/bar//../..') is 'http://example.com/foo/'
 PASS canonicalize('http://example.com/foo/bar//..') is 'http://example.com/foo/bar/'
@@ -37,11 +37,11 @@ PASS canonicalize('http://example.com\\foo\\bar') is 'http://example.com/foo/bar
 PASS canonicalize('http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd') is 'http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd'
 PASS canonicalize('http://example.com/@asdf%40') is 'http://example.com/@asdf%40'
 PASS canonicalize('http://example.com/你好你好') is 'http://example.com/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD'
-FAIL canonicalize('http://example.com/﷐zyx') should be http://example.com/%EF%BF%BDzyx. Was http://example.com/%EF%B7%90zyx.
+PASS canonicalize('http://example.com/﷐zyx') is 'http://example.com/%EF%BF%BDzyx'
 PASS canonicalize('http://example.com/‥/foo') is 'http://example.com/%E2%80%A5/foo'
 PASS canonicalize('http://example.com//foo') is 'http://example.com/%EF%BB%BF/foo'
 PASS canonicalize('http://example.com/‮/foo/‭/bar') is 'http://example.com/%E2%80%AE/foo/%E2%80%AD/bar'
-FAIL canonicalize('http://example.com/foo/') should be http://example.com%2Ffoo/. Was http://example.com/foo/.
+FAIL canonicalize('http://example.com/foo/') should be http://example.com%2Ffoo/. Was http://example.comfoo/.
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 7f7b35b..171550a 100644 (file)
@@ -13,8 +13,8 @@ PASS canonicalize('  .  ') is 'http://foo/'
 PASS canonicalize('     ') is 'http://foo/bar'
 PASS canonicalize('http:path') is 'http://host/path'
 PASS canonicalize('http:path') is 'http://host/a/path'
-FAIL canonicalize('http:/path') should be http://host/path. Was http://path/.
-FAIL canonicalize('HTTP:/path') should be http://host/path. Was http:/path.
+PASS canonicalize('http:/path') is 'http://host/path'
+PASS canonicalize('HTTP:/path') is 'http://host/path'
 PASS canonicalize('https:host2') is 'https://host2/'
 PASS canonicalize('htto:/host2') is 'htto:/host2'
 PASS canonicalize('/b/c/d') is 'http://host/b/c/d'
@@ -54,7 +54,7 @@ PASS canonicalize('//another') is 'http://another/'
 PASS canonicalize('//another/path?query#ref') is 'http://another/path?query#ref'
 PASS canonicalize('///another/path') is 'http://another/path'
 PASS canonicalize('//Another\\path') is 'http://another/path'
-FAIL canonicalize('//') should be http:. Was http:/.
+FAIL canonicalize('//') should be http:. Was //.
 PASS canonicalize('\\/another/path') is 'http://another/path'
 PASS canonicalize('/\\Another\\path') is 'http://another/path'
 PASS successfullyParsed is true
index 1cb8d67..75b8ad9 100644 (file)
@@ -8,11 +8,11 @@ PASS canonicalize('bar') is 'file:///C:/bar'
 FAIL canonicalize('../../../bar.html') should be file:///C:/bar.html. Was file:///bar.html.
 FAIL canonicalize('/../bar.html') should be file:///C:/bar.html. Was file:///bar.html.
 FAIL canonicalize('\\\\another\\path') should be . Was http://another/path.
-FAIL canonicalize('//c:/foo') should be file:///C:/foo. Was file://c/foo.
+FAIL canonicalize('//c:/foo') should be file:///C:/foo. Was file:///c:/foo.
 FAIL canonicalize('//localhost/c:/foo') should be file:///C:/foo. Was file:///c:/foo.
 FAIL canonicalize('c:') should be . Was c:.
 FAIL canonicalize('c:/foo') should be . Was c:/foo.
-FAIL canonicalize('c:\\foo') should be . Was c:/foo.
+FAIL canonicalize('c:\\foo') should be . Was c:\foo.
 FAIL canonicalize('/z:/bar') should be file:///Z:/bar. Was file:///z:/bar.
 FAIL canonicalize('/bar') should be file:///C:/bar. Was file:///bar.
 FAIL canonicalize('/bar') should be file://localhost/C:/bar. Was file:///bar.
index ecaf9f7..f335139 100644 (file)
@@ -5,7 +5,7 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 PASS src is expected
 PASS src is expected
-PASS src is expected
+FAIL src should be safari-extension://com.ApPlE/. Was safari-extension://com.apple/.
 FAIL src should be safari-extension://com.f%C3%AAte/. Was safari-extension://com.xn--fte-fma/.
 PASS successfullyParsed is true
 
index d5e56cf..f8175de 100644 (file)
@@ -12,12 +12,12 @@ PASS segments('http://f:21/ b ? d # e ') is '["http:","f","21","/%20b%20","?%20d
 PASS segments('http://f:/c') is '["http:","f","","/c","",""]'
 PASS segments('http://f:0/c') is '["http:","f","0","/c","",""]'
 PASS segments('http://f:00000000000000/c') is '["http:","f","0","/c","",""]'
-FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","80","/c","",""].
+FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","","/c","",""].
 PASS segments('http://f:b/c') is '[":","","","","",""]'
 PASS segments('http://f: /c') is '[":","","","","",""]'
 PASS segments('http://f:\n/c') is '["http:","f","","/c","",""]'
 PASS segments('http://f:fifty-two/c') is '[":","","","","",""]'
-FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was ["http:","f","65535","/c","",""].
+FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was [":","","","","",""].
 PASS segments('http://f: 21 / b ? d # e ') is '[":","","","","",""]'
 PASS segments('') is '["http:","example.org","","/foo/bar","",""]'
 PASS segments('  \t') is '["http:","example.org","","/foo/bar","",""]'
@@ -36,14 +36,14 @@ PASS segments('?') is '["http:","example.org","","/foo/bar","",""]'
 PASS segments('/') is '["http:","example.org","","/","",""]'
 PASS segments(':23') is '["http:","example.org","","/foo/:23","",""]'
 PASS segments('/:23') is '["http:","example.org","","/:23","",""]'
-FAIL segments('//') should be [":","","","","",""]. Was ["http:","","","/","",""].
+PASS segments('//') is '[":","","","","",""]'
 PASS segments('::') is '["http:","example.org","","/foo/::","",""]'
 PASS segments('::23') is '["http:","example.org","","/foo/::23","",""]'
 PASS segments('foo://') is '["foo:","","","//","",""]'
 PASS segments('http://a:b@c:29/d') is '["http:","c","29","/d","",""]'
 PASS segments('http::@c:29') is '["http:","example.org","","/foo/:@c:29","",""]'
-FAIL segments('http://&a:foo(b]c@d:2/') should be ["http:","d","2","/","",""]. Was [":","","","","",""].
-FAIL segments('http://::@c@d:2') should be ["http:","d","2","/","",""]. Was [":","","","","",""].
+PASS segments('http://&a:foo(b]c@d:2/') is '["http:","d","2","/","",""]'
+PASS segments('http://::@c@d:2') is '["http:","d","2","/","",""]'
 PASS segments('http://foo.com:b@d/') is '["http:","d","","/","",""]'
 PASS segments('http://foo.com/\\@') is '["http:","foo.com","","//@","",""]'
 PASS segments('http:\\\\foo.com\\') is '["http:","foo.com","","/","",""]'
@@ -59,7 +59,7 @@ PASS segments('http://foo/path;a??e#f#g') is '["http:","foo","","/path;a","??e",
 PASS segments('http://foo/abcd?efgh?ijkl') is '["http:","foo","","/abcd","?efgh?ijkl",""]'
 PASS segments('http://foo/abcd#foo?bar') is '["http:","foo","","/abcd","","#foo?bar"]'
 PASS segments('[61:24:74]:98') is '["http:","example.org","","/foo/[61:24:74]:98","",""]'
-FAIL segments('http://[61:27]:98') should be [":","","0","","",""]. Was ["http:","[61:27]","98","/","",""].
+FAIL segments('http://[61:27]:98') should be [":","","0","","",""]. Was [":","","","","",""].
 PASS segments('http:[61:27]/:foo') is '["http:","example.org","","/foo/[61:27]/:foo","",""]'
 PASS segments('http://[1::2]:3:4') is '[":","","","","",""]'
 PASS segments('http://2001::1') is '[":","","","","",""]'
@@ -69,7 +69,7 @@ PASS segments('http://2001::1]:80') is '[":","","","","",""]'
 PASS segments('http://[2001::1]') is '["http:","[2001::1]","","/","",""]'
 PASS segments('http://[2001::1]:80') is '["http:","[2001::1]","","/","",""]'
 PASS segments('http://[[::]]') is '[":","","","","",""]'
-FAIL segments('http:/example.com/') should be ["http:","example.org","","/example.com/","",""]. Was ["http:","example.com","","/","",""].
+PASS segments('http:/example.com/') is '["http:","example.org","","/example.com/","",""]'
 PASS segments('ftp:/example.com/') is '["ftp:","example.com","","/","",""]'
 PASS segments('https:/example.com/') is '["https:","example.com","","/","",""]'
 PASS segments('madeupscheme:/example.com/') is '["madeupscheme:","","","/example.com/","",""]'
@@ -85,7 +85,7 @@ PASS segments('http:example.com/') is '["http:","example.org","","/foo/example.c
 PASS segments('ftp:example.com/') is '["ftp:","example.com","","/","",""]'
 PASS segments('https:example.com/') is '["https:","example.com","","/","",""]'
 PASS segments('madeupscheme:example.com/') is '["madeupscheme:","","","example.com/","",""]'
-FAIL segments('file:example.com/') should be ["file:","","","/example.com/","",""]. Was ["file:","","","example.com/","",""].
+PASS segments('file:example.com/') is '["file:","","","/example.com/","",""]'
 PASS segments('ftps:example.com/') is '["ftps:","","","example.com/","",""]'
 PASS segments('gopher:example.com/') is '["gopher:","example.com","","/","",""]'
 PASS segments('ws:example.com/') is '["ws:","example.com","","/","",""]'
index 3132c12..cc83442 100644 (file)
@@ -12,12 +12,12 @@ PASS segments('http://f:21/ b ? d # e ') is '["http:","f","21","/%20b%20","?%20d
 PASS segments('http://f:/c') is '["http:","f","","/c","",""]'
 PASS segments('http://f:0/c') is '["http:","f","0","/c","",""]'
 PASS segments('http://f:00000000000000/c') is '["http:","f","0","/c","",""]'
-FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","80","/c","",""].
+FAIL segments('http://f:00000000000000000000080/c') should be ["http:","f","0","/c","",""]. Was ["http:","f","","/c","",""].
 PASS segments('http://f:b/c') is '[":","","","","",""]'
 PASS segments('http://f: /c') is '[":","","","","",""]'
 PASS segments('http://f:\n/c') is '["http:","f","","/c","",""]'
 PASS segments('http://f:fifty-two/c') is '[":","","","","",""]'
-FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was ["http:","f","65535","/c","",""].
+FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was [":","","","","",""].
 PASS segments('http://f: 21 / b ? d # e ') is '[":","","","","",""]'
 FAIL segments('') should be ["data:","","","text/plain,baseURL","",""]. Was [":","","","","",""].
 FAIL segments('  \t') should be ["data:","","","text/plain,baseURL","",""]. Was [":","","","","",""].
@@ -42,8 +42,8 @@ PASS segments('::23') is '[":","","","","",""]'
 PASS segments('foo://') is '["foo:","","","//","",""]'
 PASS segments('http://a:b@c:29/d') is '["http:","c","29","/d","",""]'
 PASS segments('http::@c:29') is '["http:","c","29","/","",""]'
-FAIL segments('http://&a:foo(b]c@d:2/') should be ["http:","d","2","/","",""]. Was [":","","","","",""].
-FAIL segments('http://::@c@d:2') should be ["http:","d","2","/","",""]. Was [":","","","","",""].
+PASS segments('http://&a:foo(b]c@d:2/') is '["http:","d","2","/","",""]'
+PASS segments('http://::@c@d:2') is '["http:","d","2","/","",""]'
 PASS segments('http://foo.com:b@d/') is '["http:","d","","/","",""]'
 PASS segments('http://foo.com/\\@') is '["http:","foo.com","","//@","",""]'
 PASS segments('http:\\\\foo.com\\') is '["http:","foo.com","","/","",""]'
@@ -59,8 +59,8 @@ PASS segments('http://foo/path;a??e#f#g') is '["http:","foo","","/path;a","??e",
 PASS segments('http://foo/abcd?efgh?ijkl') is '["http:","foo","","/abcd","?efgh?ijkl",""]'
 PASS segments('http://foo/abcd#foo?bar') is '["http:","foo","","/abcd","","#foo?bar"]'
 FAIL segments('[61:24:74]:98') should be ["data:","","","text/[61:24:74]:98","",""]. Was [":","","","","",""].
-FAIL segments('http://[61:27]:98') should be [":","","0","","",""]. Was ["http:","[61:27]","98","/","",""].
-FAIL segments('http:[61:27]/:foo') should be [":","","","","",""]. Was ["http:","[61:27]","","/:foo","",""].
+FAIL segments('http://[61:27]:98') should be [":","","0","","",""]. Was [":","","","","",""].
+PASS segments('http:[61:27]/:foo') is '[":","","","","",""]'
 PASS segments('http://[1::2]:3:4') is '[":","","","","",""]'
 PASS segments('http://2001::1') is '[":","","","","",""]'
 PASS segments('http://[2001::1') is '[":","","","","",""]'
index 87b8d61..85e4e48 100644 (file)
@@ -72,17 +72,17 @@ PASS segments('http:/a:@www.apple.com') is '["http:","www.apple.com","","/","","
 PASS canonicalize('http://a:@www.apple.com') is 'http://a@www.apple.com/'
 PASS segments('http://a:@www.apple.com') is '["http:","www.apple.com","","/","",""]'
 
-PASS canonicalize('http://a:b@www.@pple.com/p@th') is 'http://a:b@www.@pple.com/p@th'
-PASS segments('http://a:b@www.@pple.com/p@th') is '[":","","","","",""]'
+FAIL canonicalize('http://a:b@www.@pple.com/p@th') should be http://a:b@www.@pple.com/p@th. Was http://a:b%40www.@pple.com/p@th.
+FAIL segments('http://a:b@www.@pple.com/p@th') should be [":","","","","",""]. Was ["http:","pple.com","","/p@th","",""].
 
-PASS canonicalize('http://www.@@pple.com') is 'http://www.@@pple.com'
-PASS segments('http://www.@@pple.com') is '[":","","","","",""]'
+FAIL canonicalize('http://www.@@pple.com') should be http://www.@@pple.com. Was http://www.%40@pple.com/.
+FAIL segments('http://www.@@pple.com') should be [":","","","","",""]. Was ["http:","pple.com","","/","",""].
 
-PASS canonicalize('http://@@pple.com') is 'http://@@pple.com'
-PASS segments('http://@@pple.com') is '[":","","","","",""]'
+FAIL canonicalize('http://@@pple.com') should be http://@@pple.com. Was http://%40@pple.com/.
+FAIL segments('http://@@pple.com') should be [":","","","","",""]. Was ["http:","pple.com","","/","",""].
 
-PASS canonicalize('http://@@@pple.com') is 'http://@@@pple.com'
-PASS segments('http://@@@pple.com') is '[":","","","","",""]'
+FAIL canonicalize('http://@@@pple.com') should be http://@@@pple.com. Was http://%40%40@pple.com/.
+FAIL segments('http://@@@pple.com') should be [":","","","","",""]. Was ["http:","pple.com","","/","",""].
 
 PASS canonicalize('http:@@/www.apple.com') is 'http:@@/www.apple.com'
 PASS segments('http:@@/www.apple.com') is '[":","","","","",""]'
@@ -93,14 +93,14 @@ PASS segments('http:/@@/www.apple.com') is '[":","","","","",""]'
 PASS canonicalize('http://@@/www.apple.com') is 'http://@@/www.apple.com'
 PASS segments('http://@@/www.apple.com') is '[":","","","","",""]'
 
-PASS canonicalize('http:@:b@www.apple.com') is 'http:@:b@www.apple.com'
-PASS segments('http:@:b@www.apple.com') is '[":","","","","",""]'
+FAIL canonicalize('http:@:b@www.apple.com') should be http:@:b@www.apple.com. Was http://%40:b@www.apple.com/.
+FAIL segments('http:@:b@www.apple.com') should be [":","","","","",""]. Was ["http:","www.apple.com","","/","",""].
 
-PASS canonicalize('http:/@:b@www.apple.com') is 'http:/@:b@www.apple.com'
-PASS segments('http:/@:b@www.apple.com') is '[":","","","","",""]'
+FAIL canonicalize('http:/@:b@www.apple.com') should be http:/@:b@www.apple.com. Was http://%40:b@www.apple.com/.
+FAIL segments('http:/@:b@www.apple.com') should be [":","","","","",""]. Was ["http:","www.apple.com","","/","",""].
 
-PASS canonicalize('http://@:b@www.apple.com') is 'http://@:b@www.apple.com'
-PASS segments('http://@:b@www.apple.com') is '[":","","","","",""]'
+FAIL canonicalize('http://@:b@www.apple.com') should be http://@:b@www.apple.com. Was http://%40:b@www.apple.com/.
+FAIL segments('http://@:b@www.apple.com') should be [":","","","","",""]. Was ["http:","www.apple.com","","/","",""].
 
 PASS canonicalize('http://www.@pple.com') is 'http://www.@pple.com/'
 PASS segments('http://www.@pple.com') is '["http:","pple.com","","/","",""]'
@@ -117,17 +117,17 @@ PASS segments('http://@:www.apple.com') is '[":","","","","",""]'
 PASS canonicalize('http://:@www.apple.com') is 'http://www.apple.com/'
 PASS segments('http://:@www.apple.com') is '["http:","www.apple.com","","/","",""]'
 
-PASS canonicalize('http:@:/www.apple.com') is 'http://:/www.apple.com'
-PASS segments('http:@:/www.apple.com') is '["http:","","0","/www.apple.com","",""]'
+FAIL canonicalize('http:@:/www.apple.com') should be http://:/www.apple.com. Was http:@:/www.apple.com.
+FAIL segments('http:@:/www.apple.com') should be ["http:","","0","/www.apple.com","",""]. Was [":","","","","",""].
 
-PASS canonicalize('http:/@:/www.apple.com') is 'http://:/www.apple.com'
-PASS segments('http:/@:/www.apple.com') is '["http:","","0","/www.apple.com","",""]'
+FAIL canonicalize('http:/@:/www.apple.com') should be http://:/www.apple.com. Was http:/@:/www.apple.com.
+FAIL segments('http:/@:/www.apple.com') should be ["http:","","0","/www.apple.com","",""]. Was [":","","","","",""].
 
-PASS canonicalize('http://@:/www.apple.com') is 'http://:/www.apple.com'
-PASS segments('http://@:/www.apple.com') is '["http:","","0","/www.apple.com","",""]'
+FAIL canonicalize('http://@:/www.apple.com') should be http://:/www.apple.com. Was http://@:/www.apple.com.
+FAIL segments('http://@:/www.apple.com') should be ["http:","","0","/www.apple.com","",""]. Was [":","","","","",""].
 
-PASS canonicalize('http:@:80/www.apple.com') is 'http://:80/www.apple.com'
-PASS segments('http:@:80/www.apple.com') is '["http:","","80","/www.apple.com","",""]'
+FAIL canonicalize('http:@:80/www.apple.com') should be http://:80/www.apple.com. Was http:@:80/www.apple.com.
+FAIL segments('http:@:80/www.apple.com') should be ["http:","","80","/www.apple.com","",""]. Was [":","","","","",""].
 
 PASS successfullyParsed is true
 
index 5dbc53b..6a3cff2 100644 (file)
@@ -4,16 +4,16 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 PASS canonicalize('http://www.google.com/foo?bar=baz#') is 'http://www.google.com/foo?bar=baz#'
-FAIL canonicalize('http://www.google.com/foo?bar=baz# »') should be http://www.google.com/foo?bar=baz# ». Was http://www.google.com/foo?bar=baz# %BB.
+FAIL canonicalize('http://www.google.com/foo?bar=baz# »') should be http://www.google.com/foo?bar=baz# ». Was http://www.google.com/foo?bar=baz# %C2%BB.
 PASS canonicalize('http://[www.google.com]/') is 'http://[www.google.com]/'
 PASS canonicalize('http://www.google.com') is 'http://www.google.com/'
 PASS canonicalize('http:////////user:@google.com:99?foo') is 'http://user@google.com:99/?foo'
-FAIL canonicalize('http://192.0x00A80001') should be http://192.168.0.1/. Was http://192.0x00a80001/.
-FAIL canonicalize('http://www/foo%2Ehtml') should be http://www/foo.html. Was http://www/foo%2Ehtml.
+PASS canonicalize('http://192.0x00A80001') is 'http://192.168.0.1/'
+PASS canonicalize('http://www/foo%2Ehtml') is 'http://www/foo.html'
 PASS canonicalize('http://user:pass@/') is 'http://user:pass@/'
 PASS canonicalize('http://%25DOMAIN:foobar@foodomain.com/') is 'http://%25DOMAIN:foobar@foodomain.com/'
 PASS canonicalize('http:\\\\www.google.com\\foo') is 'http://www.google.com/foo'
-FAIL canonicalize('http://www.google.com/asdf#\ud800') should be http://www.google.com/asdf#�. Was http://www.google.com/asdf#%26%2355296%3B.
+FAIL canonicalize('http://www.google.com/asdf#\ud800') should be http://www.google.com/asdf#�. Was http://www.google.com/asdf#%EF%BF%BD.
 PASS canonicalize('http://foo:80/') is 'http://foo/'
 PASS canonicalize('http://foo:81/') is 'http://foo:81/'
 PASS canonicalize('httpa://foo:80/') is 'httpa://foo:80/'
index 04d38b7..8cf8a32 100644 (file)
@@ -17,7 +17,12 @@ PASS canonicalize('\tht\ntps\r://www.example.com/') is 'https://www.example.com/
 PASS canonicalize('\tfi\nle\r:///var/tmp') is 'file:///var/tmp'
 PASS canonicalize('file://\n/v\tar\r/\ttm\np\r') is 'file:///var/tmp'
 PASS canonicalize('http://\n12\r7\t.0.0.1\t/') is 'http://127.0.0.1/'
-PASS canonicalize('http://\n[\r200\t1\r:\t5:\n:042:44::0370:7334\r]\t/') is 'http://[2001:5::042:44::0370:7334]/'
+FAIL canonicalize('http://\n[\r200\t1\r:\t5:\n:042:44::0370:7334\r]\t/') should be http://[2001:5::042:44::0370:7334]/. Was http://
+[
+200    1
+:      5:
+:042:44::0370:7334
+]      /.
 PASS canonicalize('http://\tlo\ncalhost\r') is 'http://localhost/'
 PASS canonicalize('\t/\n/\rsch\teme\n/relative\r') is 'file://scheme/relative'
 PASS canonicalize('\t/\npa\rth\t/\nabsolute\r') is 'file:///path/absolute'
index 7d8335d..412ddf4 100644 (file)
@@ -30,7 +30,7 @@ Password encode set additions
 PASS build('/@\\').toString() is "http://%2F%40%5C@www.apple.com/"
 PASS build('user', '/@\\').toString() is "http://user:%2F%40%5C@www.apple.com/"
 ':' shouldn't be encoded in the password per the URL Standard, although both Firefox and Chrome encode it
-PASS build('user', ':').toString() is "http://user::@www.apple.com/"
+FAIL build('user', ':').toString() should be http://user::@www.apple.com/. Was http://user:%3A@www.apple.com/.
 
 Username encode set addition
 PASS build(':').toString() is "http://%3A@www.apple.com/"
@@ -44,8 +44,9 @@ Some special characters that don't get encoded when used in credentials
 PASS build('!$&*()-+~').toString() is "http://!$&*()-+~@www.apple.com/"
 
 Some characters that shouldn't be encoded per the URL Standard, although both Firefox and Chrome encode them
-PASS build('^{|}[]=').toString() is "http://^{|}[]=@www.apple.com/"
+FAIL build('^{|}[]=').toString() should be http://^{|}[]=@www.apple.com/. Was http://%5E%7B%7C%7D%5B%5D%3D@www.apple.com/.
 PASS successfullyParsed is true
+Some tests failed.
 
 TEST COMPLETE
 
index 470eb51..7caddac 100644 (file)
@@ -11,13 +11,13 @@ PASS Testing Request url 'http://f:21/ b ? d # e ' with base 'http://example.org
 PASS Testing Request url 'http://f:/c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f:0/c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f:00000000000000/c' with base 'http://example.org/foo/bar' 
-FAIL Testing Request url 'http://f:00000000000000000000080/c' with base 'http://example.org/foo/bar' assert_equals: expected "http://f/c" but got "http://f:80/c"
+PASS Testing Request url 'http://f:00000000000000000000080/c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f:b/c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f: /c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f:
 /c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f:fifty-two/c' with base 'http://example.org/foo/bar' 
-FAIL Testing Request url 'http://f:999999/c' with base 'http://example.org/foo/bar' assert_throws: function "function () {  new Request(url.input); }" did not throw
+PASS Testing Request url 'http://f:999999/c' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://f: 21 / b ? d # e ' with base 'http://example.org/foo/bar' 
 PASS Testing Request url '     ' with base 'http://example.org/foo/bar' 
 PASS Testing Request url ':foo.com/' with base 'http://example.org/foo/bar' 
@@ -64,7 +64,7 @@ PASS Testing Request url 'http://2001::1]' with base 'http://example.org/foo/bar
 PASS Testing Request url 'http://2001::1]:80' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://[2001::1]' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'http://[2001::1]:80' with base 'http://example.org/foo/bar' 
-FAIL Testing Request url 'http:/example.com/' with base 'http://example.org/foo/bar' assert_equals: expected "http://example.org/example.com/" but got "http://example.com/"
+PASS Testing Request url 'http:/example.com/' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'ftp:/example.com/' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'https:/example.com/' with base 'http://example.org/foo/bar' 
 PASS Testing Request url 'madeupscheme:/example.com/' with base 'http://example.org/foo/bar' 
@@ -93,11 +93,11 @@ PASS Testing Request url '/a%2fc' with base 'http://example.org/foo/bar'
 PASS Testing Request url '/a/%2f/c' with base 'http://example.org/foo/bar' 
 FAIL Testing Request url '#β' with base 'http://example.org/foo/bar' assert_equals: expected "http://example.org/foo/bar#β" but got "http://example.org/foo/bar#%CE%B2"
 PASS Testing Request url 'data:text/html,test#test' with base 'http://example.org/foo/bar' 
-FAIL Testing Request url 'file:c:\foo\bar.html' with base 'file:///tmp/mock/path' assert_equals: expected "file:///c:/foo/bar.html" but got "file:///tmp/mock/c:/foo/bar.html"
-FAIL Testing Request url '  File:c|////foo\bar.html' with base 'file:///tmp/mock/path' assert_equals: expected "file:///c:////foo/bar.html" but got "file:///tmp/mock/c|////foo/bar.html"
-FAIL Testing Request url 'C|/foo/bar' with base 'file:///tmp/mock/path' assert_equals: expected "file:///C:/foo/bar" but got "file:///tmp/mock/C|/foo/bar"
-FAIL Testing Request url '/C|\foo\bar' with base 'file:///tmp/mock/path' assert_equals: expected "file:///C:/foo/bar" but got "file:///C|/foo/bar"
-FAIL Testing Request url '//C|/foo/bar' with base 'file:///tmp/mock/path' URL is not valid or contains user credentials.
+PASS Testing Request url 'file:c:\foo\bar.html' with base 'file:///tmp/mock/path' 
+PASS Testing Request url '  File:c|////foo\bar.html' with base 'file:///tmp/mock/path' 
+PASS Testing Request url 'C|/foo/bar' with base 'file:///tmp/mock/path' 
+PASS Testing Request url '/C|\foo\bar' with base 'file:///tmp/mock/path' 
+PASS Testing Request url '//C|/foo/bar' with base 'file:///tmp/mock/path' 
 PASS Testing Request url '//server/file' with base 'file:///tmp/mock/path' 
 PASS Testing Request url '\\server\file' with base 'file:///tmp/mock/path' 
 PASS Testing Request url '/\server/file' with base 'file:///tmp/mock/path' 
@@ -123,9 +123,9 @@ PASS Testing Request url 'http://example.com/foo/bar/../ton' with base 'about:bl
 PASS Testing Request url 'http://example.com/foo/bar/../ton/../../a' with base 'about:blank' 
 PASS Testing Request url 'http://example.com/foo/../../..' with base 'about:blank' 
 PASS Testing Request url 'http://example.com/foo/../../../ton' with base 'about:blank' 
-FAIL Testing Request url 'http://example.com/foo/%2e' with base 'about:blank' assert_equals: expected "http://example.com/foo/" but got "http://example.com/foo/%2e"
-FAIL Testing Request url 'http://example.com/foo/%2e%2' with base 'about:blank' assert_equals: expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2"
-FAIL Testing Request url 'http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar' with base 'about:blank' assert_equals: expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar"
+PASS Testing Request url 'http://example.com/foo/%2e' with base 'about:blank' 
+PASS Testing Request url 'http://example.com/foo/%2e%2' with base 'about:blank' 
+PASS Testing Request url 'http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar' with base 'about:blank' 
 PASS Testing Request url 'http://example.com////../..' with base 'about:blank' 
 PASS Testing Request url 'http://example.com/foo/bar//../..' with base 'about:blank' 
 PASS Testing Request url 'http://example.com/foo/bar//..' with base 'about:blank' 
@@ -153,9 +153,9 @@ FAIL Testing Request url 'http://www.google.com/foo?bar=baz# »' with base 'abou
 FAIL Testing Request url 'data:test# »' with base 'about:blank' assert_equals: expected "data:test# »" but got "data:test# %C2%BB"
 PASS Testing Request url 'http://[www.google.com]/' with base 'about:blank' 
 PASS Testing Request url 'http://www.google.com' with base 'about:blank' 
-FAIL Testing Request url 'http://192.0x00A80001' with base 'about:blank' assert_equals: expected "http://192.168.0.1/" but got "http://192.0x00a80001/"
-FAIL Testing Request url 'http://www/foo%2Ehtml' with base 'about:blank' assert_equals: expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
-FAIL Testing Request url 'http://www/foo/%2E/html' with base 'about:blank' assert_equals: expected "http://www/foo/html" but got "http://www/foo/%2E/html"
+PASS Testing Request url 'http://192.0x00A80001' with base 'about:blank' 
+PASS Testing Request url 'http://www/foo%2Ehtml' with base 'about:blank' 
+PASS Testing Request url 'http://www/foo/%2E/html' with base 'about:blank' 
 PASS Testing Request url 'http://user:pass@/' with base 'about:blank' 
 PASS Testing Request url 'http://%25DOMAIN:foobar@foodomain.com/' with base 'about:blank' 
 PASS Testing Request url 'http:\\www.google.com\foo' with base 'about:blank' 
@@ -240,34 +240,34 @@ PASS Testing Request url '../../test.txt' with base 'http://www.example.com/test
 PASS Testing Request url '中/test.txt' with base 'http://www.example.com/test' 
 PASS Testing Request url 'http://www.example2.com' with base 'http://www.example.com/test' 
 PASS Testing Request url '//www.example2.com' with base 'http://www.example.com/test' 
-FAIL Testing Request url 'file:...' with base 'http://www.example.com/test' assert_equals: expected "file:///..." but got "file:///.."
-FAIL Testing Request url 'file:..' with base 'http://www.example.com/test' assert_equals: expected "file:///" but got "file:///."
-FAIL Testing Request url 'file:a' with base 'http://www.example.com/test' assert_equals: expected "file:///a" but got "file:///"
+PASS Testing Request url 'file:...' with base 'http://www.example.com/test' 
+PASS Testing Request url 'file:..' with base 'http://www.example.com/test' 
+PASS Testing Request url 'file:a' with base 'http://www.example.com/test' 
 PASS Testing Request url 'http://ExAmPlE.CoM' with base 'http://other.com/' 
 PASS Testing Request url 'http://example example.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://Goo%20 goo%7C|.com' with base 'http://other.com/' 
-FAIL Testing Request url 'http://[]' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://[:]' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
+PASS Testing Request url 'http://[]' with base 'http://other.com/' 
+PASS Testing Request url 'http://[:]' with base 'http://other.com/' 
 PASS Testing Request url 'http://GOO  goo.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://GOO​⁠goo.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://www.foo。bar.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://﷐zyx.com' with base 'http://other.com/' 
-FAIL Testing Request url 'http://%ef%b7%90zyx.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
+PASS Testing Request url 'http://%ef%b7%90zyx.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://Go.com' with base 'http://other.com/' 
-FAIL Testing Request url 'http://%41.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%ef%bc%85%ef%bc%94%ef%bc%91.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%00.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%ef%bc%85%ef%bc%90%ef%bc%90.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
+PASS Testing Request url 'http://%41.com' with base 'http://other.com/' 
+PASS Testing Request url 'http://%ef%bc%85%ef%bc%94%ef%bc%91.com' with base 'http://other.com/' 
+PASS Testing Request url 'http://%00.com' with base 'http://other.com/' 
+PASS Testing Request url 'http://%ef%bc%85%ef%bc%90%ef%bc%90.com' with base 'http://other.com/' 
 PASS Testing Request url 'http://你好你好' with base 'http://other.com/' 
-FAIL Testing Request url 'http://%zz%66%a.com' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%25' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://hello%00' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%30%78%63%30%2e%30%32%35%30.01' with base 'http://other.com/' assert_equals: expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01/"
-FAIL Testing Request url 'http://%30%78%63%30%2e%30%32%35%30.01%2e' with base 'http://other.com/' assert_equals: expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01%2e/"
+PASS Testing Request url 'http://%zz%66%a.com' with base 'http://other.com/' 
+PASS Testing Request url 'http://%25' with base 'http://other.com/' 
+PASS Testing Request url 'http://hello%00' with base 'http://other.com/' 
+PASS Testing Request url 'http://%30%78%63%30%2e%30%32%35%30.01' with base 'http://other.com/' 
+PASS Testing Request url 'http://%30%78%63%30%2e%30%32%35%30.01%2e' with base 'http://other.com/' 
 FAIL Testing Request url 'http://192.168.0.257' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
-FAIL Testing Request url 'http://%3g%78%63%30%2e%30%32%35%30%2E.01' with base 'http://other.com/' assert_throws: function "function () {  new Request(url.input); }" did not throw
+PASS Testing Request url 'http://%3g%78%63%30%2e%30%32%35%30%2E.01' with base 'http://other.com/' 
 PASS Testing Request url 'http://192.168.0.1 hello' with base 'http://other.com/' 
-FAIL Testing Request url 'http://0Xc0.0250.01' with base 'http://other.com/' assert_equals: expected "http://192.168.0.1/" but got "http://0xc0.0250.01/"
+PASS Testing Request url 'http://0Xc0.0250.01' with base 'http://other.com/' 
 PASS Testing Request url 'http://[google.com]' with base 'http://other.com/' 
 PASS Testing Request url 'http://foo:💩@example.com/bar' with base 'http://other.com/' 
 PASS Testing Request url '#' with base 'test:test' 
@@ -310,7 +310,7 @@ PASS Testing Request url 'data:/../' with base 'about:blank'
 PASS Testing Request url 'javascript:/../' with base 'about:blank' 
 PASS Testing Request url 'mailto:/../' with base 'about:blank' 
 PASS Testing Request url 'sc://ñ.test/' with base 'about:blank' 
-FAIL Testing Request url 'sc:\../' with base 'about:blank' assert_equals: expected "sc:\\../" but got "sc:/"
+PASS Testing Request url 'sc:\../' with base 'about:blank' 
 PASS Testing Request url 'sc::a@example.net' with base 'about:blank' 
 PASS Testing Request url 'http://127.0.0.1:10100/relative_import.html' with base 'about:blank' 
 PASS Testing Request url 'http://facebook.com/?foo=%7B%22abc%22' with base 'about:blank' 
index 9627926..7c6a4ef 100644 (file)
@@ -11,4 +11,4 @@ window.onload = loaded();
 </script>
 The following iframe is a document that was cached in the application cache.<br>
 It also had "x-frame-options: deny" set, so it should not actually show up in the iframe<br>
-<iframe src="http:/127.0.0.1:8000/appcache/x-frame-options-prevents-framing.php"></iframe>
+<iframe src="http://127.0.0.1:8000/appcache/x-frame-options-prevents-framing.php"></iframe>
index ee7a252..3daa533 100644 (file)
@@ -21,8 +21,8 @@ CONSOLE MESSAGE: line 30: Content blocker promoted URL from http://promote/ to h
 https://promote/ - willSendRequest <NSURLRequest URL https://promote/, main document URL http://127.0.0.1:8000/contentextensions/make-https.html, http method GET> redirectResponse (null)
 Blocked access to external URL https://promote/
 https://promote/ - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -999>
-protocol://try_to_promote - willSendRequest <NSURLRequest URL protocol://try_to_promote, main document URL http://127.0.0.1:8000/contentextensions/make-https.html, http method GET> redirectResponse (null)
-protocol://try_to_promote - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -1002, failing URL "protocol://try_to_promote">
+protocol://try_to_promote/ - willSendRequest <NSURLRequest URL protocol://try_to_promote/, main document URL http://127.0.0.1:8000/contentextensions/make-https.html, http method GET> redirectResponse (null)
+protocol://try_to_promote/ - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -1002, failing URL "protocol://try_to_promote/">
 https://127.0.0.1/already_promoted - willSendRequest <NSURLRequest URL https://127.0.0.1/already_promoted, main document URL http://127.0.0.1:8000/contentextensions/make-https.html, http method GET> redirectResponse (null)
 https://127.0.0.1/already_promoted - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -1004, failing URL "https://127.0.0.1/already_promoted">
 URLs with http, port 80, and promote in the url should be promoted to https with port 443.
index f65edbd..78816af 100644 (file)
@@ -1,4 +1,4 @@
-CONSOLE MESSAGE: EventSource cannot load ftp://127.0.0.1. Cross origin requests are only supported for HTTP.
+CONSOLE MESSAGE: EventSource cannot load ftp://127.0.0.1/. Cross origin requests are only supported for HTTP.
 CONSOLE MESSAGE: EventSource cannot load motd. Cross origin requests are only supported for HTTP.
 CONSOLE MESSAGE: EventSource cannot load localhost:8080/. Cross origin requests are only supported for HTTP.
 CONSOLE MESSAGE: EventSource cannot load tel:1234. Cross origin requests are only supported for HTTP.
index d6ef960..fe0b86a 100644 (file)
@@ -92,7 +92,7 @@ function test()
                 let resource = event.data.resource;
                 let curl = resource.generateCURLCommand().split(" \\\n");
 
-                InspectorTest.expectThat(curl[0].match("https?://.*?/resources/url\\\\'with\\$special\\\\{1\.\.20\\\\}chars\\\\\\[\\\\\\]%20.html") !== null, "Command should contain valid POSIX escaped URL.");
+                InspectorTest.expectThat(curl[0].match("https?://.*?/resources/url\\\\'with\\$special%7B1\.\.20%7Dchars\\\\\\[\\\\\\]%20.html") !== null, "Command should contain valid POSIX escaped URL.");
             })
             .then(resolve, reject);
 
index 95c1d57..03c416b 100644 (file)
@@ -2,8 +2,8 @@ Test how non-ASCII characters are encoded in relative URLs.
 
 1 2 3 4 5
 1. PASS
-2. FAIL: http://127.0.0.1:8000/uri/resolve-encoding-relative.html#%F4%F0%E0%E3%EC%E5%ED%F2
+2. PASS
 3. PASS
 4. PASS
-5. FAIL: http://127.0.0.1:8000/%D0%BF%D1%83%D1%82%D1%8C?%E7%E0%EF%F0%EE%F1#%F4%F0%E0%E3%EC%E5%ED%F2
+5. PASS
 
index f77a2fe..64512b9 100644 (file)
@@ -3,9 +3,9 @@ CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hy
 CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?0.00' failed: Invalid HTTP version string: HTTP/0.00
 CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?-11.9' failed: Invalid HTTP version string: HTTP/-11.9
 CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?0x1.0x00' failed: Invalid HTTP version string: HTTP/0x1.0x00
-CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?%EF%A3%BF.1' failed: Invalid HTTP version string: HTTP/%EF%A3%BF.1
+CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?%C3%AF%C2%A3%C2%BF.1' failed: Invalid HTTP version string: HTTP/%C3%AF%C2%A3%C2%BF.1
 CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?' failed: Invalid HTTP version string: HTTP/
-CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?1.1%EF%A3%BF' failed: Invalid HTTP version string: HTTP/1.1%EF%A3%BF
+CONSOLE MESSAGE: WebSocket connection to 'ws://localhost:8880/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1?1.1%C3%AF%C2%A3%C2%BF' failed: Invalid HTTP version string: HTTP/1.1%C3%AF%C2%A3%C2%BF
 Test http version parsing and validation. HTTP version 1.1 and above should be accepted for WebSockets.
 
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
index a722f28..2b78e43 100644 (file)
@@ -1,6 +1,6 @@
 CONSOLE MESSAGE: Cross-origin redirection to http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi denied by Cross-Origin Resource Sharing policy: Origin http://127.0.0.1:8000 is not allowed by Access-Control-Allow-Origin.
 CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?url=http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi due to access control checks.
-CONSOLE MESSAGE: Cross-origin redirection to foo://bar.cgi denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
+CONSOLE MESSAGE: Cross-origin redirection to foo://bar.cgi/ denied by Cross-Origin Resource Sharing policy: URL is either a non-HTTP URL or contains credentials.
 CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?url=foo://bar.cgi&%20%20access-control-allow-origin=http://127.0.0.1:8000 due to access control checks.
 CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/redirect-cors.php?redirect-preflight=true&%20%20url=http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi&%20%20access-control-allow-origin=*. Preflight response is not successful
 CONSOLE MESSAGE: XMLHttpRequest cannot load http://localhost:8000/xmlhttprequest/resources/access-control-basic-allow-star.cgi. Request header field x-webkit is not allowed by Access-Control-Allow-Headers.
index 8b5a953..70b2f89 100644 (file)
@@ -1,3 +1,21 @@
+2016-10-11  Alex Christensen  <achristensen@webkit.org>
+
+        Enable URLParser by default
+        https://bugs.webkit.org/show_bug.cgi?id=162660
+        <rdar://28601706>
+
+        Reviewed by Sam Weinig.
+
+        * web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt:
+        * web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/src-expected.txt:
+        * web-platform-tests/html/semantics/scripting-1/the-script-element/fetch-src/failure-expected.txt:
+        These tests need more investigation.  See https://bugs.webkit.org/show_bug.cgi?id=163127
+        * 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:
+        * web-platform-tests/url/url-setters-expected.txt:
+        Many more tests pass.  Hooray!
+
 2016-10-11  Youenn Fablet  <youenn@apple.com>
 
         [Fetch API] Support Request cache mode
index 091e011..0c19320 100644 (file)
@@ -1,4 +1,6 @@
-CONSOLE MESSAGE: line 24: XMLHttpRequest cannot load http://nonexistent-origin.localhost}:8800. Cross origin requests are only supported for HTTP.
+Blocked access to external URL http://nonexistent-origin.localhost}:8800/
 
-PASS XmlHttpRequest: The send() method: Throw a "throw an "NetworkError" exception when Network error happens (synchronous flag is set) 
+FAIL XmlHttpRequest: The send() method: Throw a "throw an "NetworkError" exception when Network error happens (synchronous flag is set) assert_throws: function "function ()
+            {
+                xhr.send("Test ..." threw object "AbortError (DOM Exception 20): The operation was aborted." that is not a DOMException NetworkError: property "code" is equal to 20, expected 19
 
index f6bbcaa..79c2fdd 100644 (file)
@@ -8,6 +8,6 @@ PASS HTMLTrackElement.src resolvable value in content attribute
 PASS HTMLTrackElement.src assigning resolvable value to IDL attribute 
 PASS HTMLTrackElement.src \u0000 in content attribute 
 PASS HTMLTrackElement.src assigning \u0000 to IDL attribute 
-FAIL HTMLTrackElement.src foo\u0000bar in content attribute assert_equals: expected "http://localhost:8800/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/foo%00bar" but got "http://localhost:8800/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/foo"
-FAIL HTMLTrackElement.src assigning foo\u0000bar to IDL attribute assert_equals: expected "http://localhost:8800/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/foo%00bar" but got "http://localhost:8800/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/foo"
+PASS HTMLTrackElement.src foo\u0000bar in content attribute 
+PASS HTMLTrackElement.src assigning foo\u0000bar to IDL attribute 
 
index e006a2f..ccc32e1 100644 (file)
@@ -11,14 +11,14 @@ FAIL Parsing: <a:    foo.com> against <http://example.org/foo/bar> assert_equals:
 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"
-FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f:0/c" but got "http://f:00000000000000/c"
-FAIL Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f/c" but got "http://f:00000000000000000000080/c"
+FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:
 /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f: 21 / b ? d # e"
 PASS Parsing: <> against <http://example.org/foo/bar> 
 PASS Parsing: <        > against <http://example.org/foo/bar> 
@@ -42,8 +42,8 @@ PASS Parsing: <::23> against <http://example.org/foo/bar>
 FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
 PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
 PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> assert_equals: href expected "http://&a:foo(b%5Dc@d:2/" but got "http://&a:foo(b]c@d:2/"
-FAIL Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> assert_equals: href expected "http://:%3A%40c@d:2/" but got "http://::@c@d:2"
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
@@ -66,7 +66,7 @@ PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar>
 PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
-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: <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://"
@@ -96,11 +96,11 @@ 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://"
-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"
-FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C|/foo/bar"
-FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "//C|/foo/bar"
+PASS Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
 PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
 PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
 PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
@@ -126,9 +126,9 @@ PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank>
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e"
-FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2"
-FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar"
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -156,9 +156,9 @@ FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> asse
 FAIL Parsing: <data:test# »> against <about:blank> assert_equals: href expected "data:test# »" but got "data:test# %C2%BB"
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
-FAIL Parsing: <http://192.0x00A80001> against <about:blank> assert_equals: href expected "http://192.168.0.1/" but got "http://192.0x00a80001/"
-FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
-FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html"
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
@@ -243,44 +243,44 @@ PASS Parsing: <../../test.txt> against <http://www.example.com/test>
 PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
 PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
 PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
-FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://..."
-FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://.."
-FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a"
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
 PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
 PASS Parsing: <http://example example.com> against <http://other.com/> 
 PASS Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> 
-FAIL Parsing: <http://[]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://[:]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
 PASS Parsing: <http://GOO  goo.com> against <http://other.com/> 
 PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
 PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
-FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "about:blank"
-FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
 PASS Parsing: <http://Go.com> against <http://other.com/> 
-FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%00.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://%41.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> 
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
 FAIL Parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
-FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%25> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://hello%00> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01/"
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01%2e/"
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
 FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
 PASS Parsing: <http://192.168.0.1 hello> against <http://other.com/> 
-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://0Xc0.0250.01> against <http://other.com/> 
 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%A9@example.com/bar" but got "http://foo:💩@example.com/bar"
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
 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: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
 FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "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/`{}?`{}"
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
 PASS Parsing: </some/path> against <http://user@example.org/smth> 
 PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
 PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
@@ -314,7 +314,7 @@ 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"
-FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
+FAIL Parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 FAIL Parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 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> 
index e006a2f..ccc32e1 100644 (file)
@@ -11,14 +11,14 @@ FAIL Parsing: <a:    foo.com> against <http://example.org/foo/bar> assert_equals:
 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"
-FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f:0/c" but got "http://f:00000000000000/c"
-FAIL Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f/c" but got "http://f:00000000000000000000080/c"
+FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:
 /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://f:999999/c> against <http://example.org/foo/bar> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
 FAIL Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> assert_equals: failure should set href to input expected "http://f: 21 / b ? d # e " but got "http://f: 21 / b ? d # e"
 PASS Parsing: <> against <http://example.org/foo/bar> 
 PASS Parsing: <        > against <http://example.org/foo/bar> 
@@ -42,8 +42,8 @@ PASS Parsing: <::23> against <http://example.org/foo/bar>
 FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
 PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
 PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> assert_equals: href expected "http://&a:foo(b%5Dc@d:2/" but got "http://&a:foo(b]c@d:2/"
-FAIL Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> assert_equals: href expected "http://:%3A%40c@d:2/" but got "http://::@c@d:2"
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
@@ -66,7 +66,7 @@ PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar>
 PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
-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: <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://"
@@ -96,11 +96,11 @@ 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://"
-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"
-FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C|/foo/bar"
-FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "//C|/foo/bar"
+PASS Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
 PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
 PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
 PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
@@ -126,9 +126,9 @@ PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank>
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e"
-FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2"
-FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar"
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -156,9 +156,9 @@ FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> asse
 FAIL Parsing: <data:test# »> against <about:blank> assert_equals: href expected "data:test# »" but got "data:test# %C2%BB"
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
-FAIL Parsing: <http://192.0x00A80001> against <about:blank> assert_equals: href expected "http://192.168.0.1/" but got "http://192.0x00a80001/"
-FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
-FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html"
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
@@ -243,44 +243,44 @@ PASS Parsing: <../../test.txt> against <http://www.example.com/test>
 PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
 PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
 PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
-FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://..."
-FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://.."
-FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a"
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
 PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
 PASS Parsing: <http://example example.com> against <http://other.com/> 
 PASS Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> 
-FAIL Parsing: <http://[]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://[:]> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
 PASS Parsing: <http://GOO  goo.com> against <http://other.com/> 
 PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
 PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
-FAIL Parsing: <http://﷐zyx.com> against <http://other.com/> assert_equals: failure should set href to input expected "http://﷐zyx.com" but got "about:blank"
-FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
 PASS Parsing: <http://Go.com> against <http://other.com/> 
-FAIL Parsing: <http://%41.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%00.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://%41.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> 
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
 FAIL Parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
-FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%25> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://hello%00> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01/"
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01%2e/"
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
 FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
-FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_unreached: Expected URL to fail parsing Reached unreachable code
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
 PASS Parsing: <http://192.168.0.1 hello> against <http://other.com/> 
-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://0Xc0.0250.01> against <http://other.com/> 
 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%A9@example.com/bar" but got "http://foo:💩@example.com/bar"
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
 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: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
 FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "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/`{}?`{}"
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
 PASS Parsing: </some/path> against <http://user@example.org/smth> 
 PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
 PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
@@ -314,7 +314,7 @@ 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"
-FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
+FAIL Parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 FAIL Parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 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> 
index 08dabc4..882fd4f 100644 (file)
@@ -15,15 +15,14 @@ FAIL Parsing: <a:    foo.com> against <http://example.org/foo/bar> assert_equals:
 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"
-FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f:0/c" but got "http://f:00000000000000/c"
-FAIL Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> assert_equals: href expected "http://f/c" but got "http://f:00000000000000000000080/c"
+FAIL Parsing: <http://f:00000000000000/c> against <http://example.org/foo/bar> assert_equals: origin expected "http://f:0" but got "http://f"
+PASS Parsing: <http://f:00000000000000000000080/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:b/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f: /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:
 /c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f:fifty-two/c> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://f:999999/c> against <http://example.org/foo/bar> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <http://f:999999/c> against <http://example.org/foo/bar> 
 PASS Parsing: <http://f: 21 / b ? d # e > against <http://example.org/foo/bar> 
 PASS Parsing: <> against <http://example.org/foo/bar> 
 PASS Parsing: <        > against <http://example.org/foo/bar> 
@@ -47,8 +46,8 @@ PASS Parsing: <::23> against <http://example.org/foo/bar>
 FAIL Parsing: <foo://> against <http://example.org/foo/bar> assert_equals: href expected "foo:///" but got "foo://"
 PASS Parsing: <http://a:b@c:29/d> against <http://example.org/foo/bar> 
 PASS Parsing: <http::@c:29> against <http://example.org/foo/bar> 
-FAIL Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> Type error
-FAIL Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> Type error
+PASS Parsing: <http://&a:foo(b]c@d:2/> against <http://example.org/foo/bar> 
+PASS Parsing: <http://::@c@d:2> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com:b@d/> against <http://example.org/foo/bar> 
 PASS Parsing: <http://foo.com/\@> against <http://example.org/foo/bar> 
 PASS Parsing: <http:\\foo.com\> against <http://example.org/foo/bar> 
@@ -71,7 +70,7 @@ PASS Parsing: <http://2001::1]> against <http://example.org/foo/bar>
 PASS Parsing: <http://2001::1]:80> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]> against <http://example.org/foo/bar> 
 PASS Parsing: <http://[2001::1]:80> against <http://example.org/foo/bar> 
-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: <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://"
@@ -101,11 +100,11 @@ 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://"
-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"
-FAIL Parsing: </C|\foo\bar> against <file:///tmp/mock/path> assert_equals: href expected "file:///C:/foo/bar" but got "file:///C|/foo/bar"
-FAIL Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> Type error
+PASS Parsing: <file:c:\foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <  File:c|////foo\bar.html> against <file:///tmp/mock/path> 
+PASS Parsing: <C|/foo/bar> against <file:///tmp/mock/path> 
+PASS Parsing: </C|\foo\bar> against <file:///tmp/mock/path> 
+PASS Parsing: <//C|/foo/bar> against <file:///tmp/mock/path> 
 PASS Parsing: <//server/file> against <file:///tmp/mock/path> 
 PASS Parsing: <\\server\file> against <file:///tmp/mock/path> 
 PASS Parsing: </\server/file> against <file:///tmp/mock/path> 
@@ -131,9 +130,9 @@ PASS Parsing: <http://example.com/foo/bar/../ton> against <about:blank>
 PASS Parsing: <http://example.com/foo/bar/../ton/../../a> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/../../../ton> against <about:blank> 
-FAIL Parsing: <http://example.com/foo/%2e> against <about:blank> assert_equals: href expected "http://example.com/foo/" but got "http://example.com/foo/%2e"
-FAIL Parsing: <http://example.com/foo/%2e%2> against <about:blank> assert_equals: href expected "http://example.com/foo/.%2" but got "http://example.com/foo/%2e%2"
-FAIL Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> assert_equals: href expected "http://example.com/..bar" but got "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar"
+PASS Parsing: <http://example.com/foo/%2e> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e%2> against <about:blank> 
+PASS Parsing: <http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar> against <about:blank> 
 PASS Parsing: <http://example.com////../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//../..> against <about:blank> 
 PASS Parsing: <http://example.com/foo/bar//..> against <about:blank> 
@@ -161,9 +160,9 @@ FAIL Parsing: <http://www.google.com/foo?bar=baz# »> against <about:blank> asse
 FAIL Parsing: <data:test# »> against <about:blank> assert_equals: href expected "data:test# »" but got "data:test# %C2%BB"
 PASS Parsing: <http://[www.google.com]/> against <about:blank> 
 PASS Parsing: <http://www.google.com> against <about:blank> 
-FAIL Parsing: <http://192.0x00A80001> against <about:blank> assert_equals: href expected "http://192.168.0.1/" but got "http://192.0x00a80001/"
-FAIL Parsing: <http://www/foo%2Ehtml> against <about:blank> assert_equals: href expected "http://www/foo.html" but got "http://www/foo%2Ehtml"
-FAIL Parsing: <http://www/foo/%2E/html> against <about:blank> assert_equals: href expected "http://www/foo/html" but got "http://www/foo/%2E/html"
+PASS Parsing: <http://192.0x00A80001> against <about:blank> 
+PASS Parsing: <http://www/foo%2Ehtml> against <about:blank> 
+PASS Parsing: <http://www/foo/%2E/html> against <about:blank> 
 PASS Parsing: <http://user:pass@/> against <about:blank> 
 PASS Parsing: <http://%25DOMAIN:foobar@foodomain.com/> against <about:blank> 
 PASS Parsing: <http:\\www.google.com\foo> against <about:blank> 
@@ -248,56 +247,45 @@ PASS Parsing: <../../test.txt> against <http://www.example.com/test>
 PASS Parsing: <中/test.txt> against <http://www.example.com/test> 
 PASS Parsing: <http://www.example2.com> against <http://www.example.com/test> 
 PASS Parsing: <//www.example2.com> against <http://www.example.com/test> 
-FAIL Parsing: <file:...> against <http://www.example.com/test> assert_equals: href expected "file:///..." but got "file://..."
-FAIL Parsing: <file:..> against <http://www.example.com/test> assert_equals: href expected "file:///" but got "file://.."
-FAIL Parsing: <file:a> against <http://www.example.com/test> assert_equals: href expected "file:///a" but got "file://a"
+PASS Parsing: <file:...> against <http://www.example.com/test> 
+PASS Parsing: <file:..> against <http://www.example.com/test> 
+PASS Parsing: <file:a> against <http://www.example.com/test> 
 PASS Parsing: <http://ExAmPlE.CoM> against <http://other.com/> 
 PASS Parsing: <http://example example.com> against <http://other.com/> 
 PASS Parsing: <http://Goo%20 goo%7C|.com> against <http://other.com/> 
-FAIL Parsing: <http://[]> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://[:]> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <http://[]> against <http://other.com/> 
+PASS Parsing: <http://[:]> against <http://other.com/> 
 PASS Parsing: <http://GOO  goo.com> against <http://other.com/> 
 PASS Parsing: <http://GOO​⁠goo.com> against <http://other.com/> 
 PASS Parsing: <http://www.foo。bar.com> against <http://other.com/> 
 PASS Parsing: <http://﷐zyx.com> against <http://other.com/> 
-FAIL Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <http://%ef%b7%90zyx.com> against <http://other.com/> 
 PASS Parsing: <http://Go.com> against <http://other.com/> 
-FAIL Parsing: <http://%41.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%00.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <http://%41.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%94%ef%bc%91.com> against <http://other.com/> 
+PASS Parsing: <http://%00.com> against <http://other.com/> 
+PASS Parsing: <http://%ef%bc%85%ef%bc%90%ef%bc%90.com> against <http://other.com/> 
 FAIL Parsing: <http://你好你好> against <http://other.com/> assert_equals: origin expected "http://你好你好" but got "http://xn--6qqa088eba"
-FAIL Parsing: <http://%zz%66%a.com> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%25> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://hello%00> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01/"
-FAIL Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> assert_equals: href expected "http://192.168.0.1/" but got "http://%30%78%63%30%2e%30%32%35%30.01%2e/"
+PASS Parsing: <http://%zz%66%a.com> against <http://other.com/> 
+PASS Parsing: <http://%25> against <http://other.com/> 
+PASS Parsing: <http://hello%00> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01> against <http://other.com/> 
+PASS Parsing: <http://%30%78%63%30%2e%30%32%35%30.01%2e> against <http://other.com/> 
 FAIL Parsing: <http://192.168.0.257> against <http://other.com/> assert_throws: function "function () {
           bURL(expected.input, expected.bas..." did not throw
-FAIL Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> assert_throws: function "function () {
-          bURL(expected.input, expected.bas..." did not throw
+PASS Parsing: <http://%3g%78%63%30%2e%30%32%35%30%2E.01> against <http://other.com/> 
 PASS Parsing: <http://192.168.0.1 hello> against <http://other.com/> 
-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://0Xc0.0250.01> against <http://other.com/> 
 PASS Parsing: <http://[google.com]> against <http://other.com/> 
-FAIL Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> Type error
+PASS Parsing: <http://foo:💩@example.com/bar> against <http://other.com/> 
 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: <#x> against <data:,> 
 PASS Parsing: <#x> against <about:blank> 
 FAIL Parsing: <#> against <test:test?test> assert_equals: origin expected "null" but got "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
+PASS Parsing: <https://@test@test@example:800/> against <http://doesnotmatter/> 
+PASS Parsing: <https://@@@example> against <http://doesnotmatter/> 
+PASS Parsing: <http://`{}:`{}@h/`{}?`{}> against <http://doesnotmatter/> 
 PASS Parsing: </some/path> against <http://user@example.org/smth> 
 PASS Parsing: <> against <http://user:pass@example.org:21/smth> 
 PASS Parsing: </some/path> against <http://user:pass@example.org:21/smth> 
@@ -331,7 +319,7 @@ 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"
-FAIL Parsing: <sc:\../> against <about:blank> assert_equals: href expected "sc:\\../" but got "sc:/"
+FAIL Parsing: <sc:\../> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 FAIL Parsing: <sc::a@example.net> against <about:blank> assert_equals: origin expected "null" but got "sc://"
 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> 
index 545a017..59748a1 100644 (file)
@@ -1,14 +1,14 @@
 
 PASS Loading data… 
-FAIL Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL Setting <a://example.net>.protocol = 'b' assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased assert_equals: expected "b://example.net/" but got "b://example.net"
-FAIL Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL Setting <a://example.net>.protocol = '0b' No leading digit assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL Setting <a://example.net>.protocol = '+b' No leading punctuation assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL Setting <a://example.net>.protocol = 'bC0+-.' assert_equals: expected "bc0+-.://example.net/" but got "bc0+-.://example.net"
-FAIL Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable assert_equals: expected "a://example.net/" but got "a://example.net"
-FAIL Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected assert_equals: expected "a://example.net/" but got "a://example.net"
+PASS Setting <a://example.net>.protocol = '' The empty string is not a valid scheme. Setter leaves the URL unchanged. 
+PASS Setting <a://example.net>.protocol = 'b' 
+PASS Setting <a://example.net>.protocol = 'B' Upper-case ASCII is lower-cased 
+PASS Setting <a://example.net>.protocol = 'é' Non-ASCII is rejected 
+PASS Setting <a://example.net>.protocol = '0b' No leading digit 
+PASS Setting <a://example.net>.protocol = '+b' No leading punctuation 
+PASS Setting <a://example.net>.protocol = 'bC0+-.' 
+PASS Setting <a://example.net>.protocol = 'b,c' Only some punctuation is acceptable 
+PASS Setting <a://example.net>.protocol = 'bé' Non-ASCII is rejected 
 FAIL Setting <http://example.net>.protocol = 'b' Can’t switch from special scheme to non-special. Note: this may change, see https://github.com/whatwg/url/issues/104 assert_equals: expected "http://example.net/" but got "b://example.net/"
 FAIL Setting <mailto:me@example.net>.protocol = 'http' Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must. assert_equals: expected "mailto:me@example.net" but got "http://me@example.net/"
 FAIL Setting <ssh://me@example.net>.protocol = 'http' Can’t switch from non-special scheme to special. Note: this may change, see https://github.com/whatwg/url/issues/104 assert_equals: expected "ssh://me@example.net/" but got "http://me@example.net/"
@@ -16,9 +16,9 @@ PASS Setting <http://example.net>.protocol = 'https:foo : bar' Stuff after the f
 PASS Setting <data:text/html,<p>Test>.protocol = 'view-source+data:foo : bar' Stuff after the first ':' is ignored 
 FAIL Setting <file:///home/you/index.html>.username = 'me' No host means no username assert_equals: expected "file:///home/you/index.html" but got "file://me@/home/you/index.html"
 FAIL Setting <unix:/run/foo.socket>.username = 'me' No host means no username assert_equals: expected "unix:/run/foo.socket" but got "unix://me@/run/foo.socket"
-FAIL Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username assert_equals: expected "mailto:you@example.net" but got "mailto://me@you@example.net"
+FAIL Setting <mailto:you@example.net>.username = 'me' Cannot-be-a-base means no username assert_equals: expected "mailto:you@example.net" but got "mailto://me%40you@example.net/"
 PASS Setting <http://example.net>.username = 'me' 
 PASS Setting <http://:secret@example.net>.username = 'me' 
 PASS Setting <http://me@example.net>.username = '' 
 PASS Setting <http://me:secret@example.net>.username = '' 
-FAIL Setting <http://example.net>.username = '
\ No newline at end of file
+PASS Setting <http://example.net>.username = '
\ No newline at end of file
diff --git a/LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt b/LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..6c1dc13
--- /dev/null
@@ -0,0 +1,7 @@
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishDocumentLoadForFrame
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt b/LayoutTests/platform/ios-simulator-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..49f066e
--- /dev/null
@@ -0,0 +1,8 @@
+main frame - didFinishDocumentLoadForFrame
+main frame - didHandleOnloadEventsForFrame
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not redirect to an invalid URL initiated by <meta http-equiv="refresh">. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/ios-simulator-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt b/LayoutTests/platform/ios-simulator-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..23aef2b
--- /dev/null
@@ -0,0 +1,7 @@
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishDocumentLoadForFrame
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt b/LayoutTests/platform/ios-simulator-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt
new file mode 100644 (file)
index 0000000..c32f87d
--- /dev/null
@@ -0,0 +1,6 @@
+Blocked access to external URL http://nonexistent-origin.localhost%7D:8800/
+
+FAIL XmlHttpRequest: The send() method: Throw a "throw an "NetworkError" exception when Network error happens (synchronous flag is set) assert_throws: function "function ()
+            {
+                xhr.send("Test ..." threw object "AbortError (DOM Exception 20): The operation was aborted." that is not a DOMException NetworkError: property "code" is equal to 20, expected 19
+
index 8c0e2aa..798b7da 100644 (file)
@@ -2215,6 +2215,9 @@ platform/ios-simulator/ios/accessibility/set-value.html [ Failure ]
 platform/ios-simulator/ios/fast/css/webkit-overflow-scrolling-parsing.html [ Failure ]
 svg/custom/bug78807.svg [ Failure ]
 
+webkit.org/b/163127 http/tests/quicklook/secure-document-with-subresources.html [ Skip ]
+webkit.org/b/163127 accessibility/text-marker/character-offset-visible-position-conversion-hang.html [ Skip ]
+
 fast/filter-image/background-filter-image.html [ ImageOnlyFailure ]
 fast/text/combining-mark-paint.html [ ImageOnlyFailure ]
 fast/text/han-generic-font-families.html [ ImageOnlyFailure ]
diff --git a/LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt b/LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-javascript-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..6c1dc13
--- /dev/null
@@ -0,0 +1,7 @@
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishDocumentLoadForFrame
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not redirect to an invalid URL initiated by JavaScript. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt b/LayoutTests/platform/mac-wk1/fast/loader/redirect-to-invalid-url-using-meta-refresh-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..49f066e
--- /dev/null
@@ -0,0 +1,8 @@
+main frame - didFinishDocumentLoadForFrame
+main frame - didHandleOnloadEventsForFrame
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not redirect to an invalid URL initiated by <meta http-equiv="refresh">. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/mac-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt b/LayoutTests/platform/mac-wk1/fast/loader/window-open-to-invalid-url-disallowed-expected.txt
new file mode 100644 (file)
index 0000000..23aef2b
--- /dev/null
@@ -0,0 +1,7 @@
+main frame - willPerformClientRedirectToURL: http://A=a%25B=b 
+main frame - didFinishDocumentLoadForFrame
+main frame - didFinishLoadForFrame
+main frame - didCancelClientRedirectForFrame
+Tests that we do not open a new window to an invalid URL. This test PASSED if you see an entry in the dumped frame load callbacks of the form: "willPerformClientRedirectToURL: http://A=a%B=b" followed by "didCancelClientRedirectForFrame".
+
+Note, this test must be run in DumpRenderTree.
diff --git a/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt b/LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt
new file mode 100644 (file)
index 0000000..c32f87d
--- /dev/null
@@ -0,0 +1,6 @@
+Blocked access to external URL http://nonexistent-origin.localhost%7D:8800/
+
+FAIL XmlHttpRequest: The send() method: Throw a "throw an "NetworkError" exception when Network error happens (synchronous flag is set) assert_throws: function "function ()
+            {
+                xhr.send("Test ..." threw object "AbortError (DOM Exception 20): The operation was aborted." that is not a DOMException NetworkError: property "code" is equal to 20, expected 19
+
index 2b8e02d..580a4c6 100644 (file)
@@ -131,12 +131,6 @@ http://255.255.255.255:6669/test.jpg - willSendRequest <NSURLRequest URL http://
 http://255.255.255.255:6669/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:6669/test.jpg">
 http://255.255.255.255:65535/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:65535/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
 http://255.255.255.255:65535/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:65535/test.jpg">
-http://255.255.255.255:65536/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:65536/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:65536/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:65536/test.jpg">
-http://255.255.255.255:4294967295/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:4294967295/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:4294967295/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:4294967295/test.jpg">
-http://255.255.255.255:4294967296/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:4294967296/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:4294967296/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:4294967296/test.jpg">
 http://255.255.255.255:0/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:0/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
 http://255.255.255.255:0/test.jpg - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -1004, failing URL "http://255.255.255.255:0/test.jpg">
 http://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
index 2b8e02d..580a4c6 100644 (file)
@@ -131,12 +131,6 @@ http://255.255.255.255:6669/test.jpg - willSendRequest <NSURLRequest URL http://
 http://255.255.255.255:6669/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:6669/test.jpg">
 http://255.255.255.255:65535/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:65535/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
 http://255.255.255.255:65535/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:65535/test.jpg">
-http://255.255.255.255:65536/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:65536/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:65536/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:65536/test.jpg">
-http://255.255.255.255:4294967295/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:4294967295/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:4294967295/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:4294967295/test.jpg">
-http://255.255.255.255:4294967296/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:4294967296/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
-http://255.255.255.255:4294967296/test.jpg - didFailLoadingWithError: <NSError domain WebKitErrorDomain, code 103, failing URL "http://255.255.255.255:4294967296/test.jpg">
 http://255.255.255.255:0/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255:0/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
 http://255.255.255.255:0/test.jpg - didFailLoadingWithError: <NSError domain NSURLErrorDomain, code -1004, failing URL "http://255.255.255.255:0/test.jpg">
 http://255.255.255.255/test.jpg - willSendRequest <NSURLRequest URL http://255.255.255.255/test.jpg, main document URL block-test.html, http method GET> redirectResponse (null)
index 9c2081c..482b61a 100644 (file)
@@ -1,3 +1,17 @@
+2016-10-11  Alex Christensen  <achristensen@webkit.org>
+
+        Enable URLParser by default
+        https://bugs.webkit.org/show_bug.cgi?id=162660
+        <rdar://28601706>
+
+        Reviewed by Sam Weinig.
+
+        Covered by updates to many LayoutTests.
+
+        * platform/URLParser.cpp:
+        Make the default value true for URLParser::enabled.
+        This is the most impactful and well-documented one-line change I've ever written.
+
 2016-10-11  Daniel Bates  <dabates@apple.com>
 
         [iOS] REGRESSION (r197953): User gesture required to load video in iOS 9-built apps
index 859eda7..e5170ff 100644 (file)
@@ -2786,7 +2786,7 @@ bool URLParser::internalValuesConsistent(const URL& url)
     // It should be able to be deduced from m_isValid and m_string.length() to save memory.
 }
 
-static bool urlParserEnabled = false;
+static bool urlParserEnabled = true;
 
 void URLParser::setEnabled(bool enabled)
 {