Commit b3745700 authored by commit-queue@webkit.org's avatar commit-queue@webkit.org
Browse files

The "port" property of an <a> whose href does not specify a port returns the wrong value

https://bugs.webkit.org/show_bug.cgi?id=66081

Source/WebCore:

HTMLAnchorElement now returns "" instead of "0" for unset port
Fixed KURLGoogle.cpp to have same behavior as KURL.cpp when setting port 0
Fixed Location.cpp to have same behavior as KURL.cpp when setting port 0

Patch by Rachel Blum <groby@chromium.org> on 2011-08-30
Reviewed by Adam Barth.

Tests: fast/dom/HTMLAnchorElement/get-href-attribute-port.html
       fast/dom/HTMLAnchorElement/set-href-attribute-port.html
       fast/loader/location-port.html
       fast/url/segments-from-data-url.html
       fast/url/segments.html
       fast/url/trivial-segments.html
       platform/chromium/fast/dom/HTMLAnchorElement/set-href-attribute-port.html

* html/HTMLAnchorElement.cpp:
(WebCore::HTMLAnchorElement::port):
* page/Location.cpp:
(WebCore::Location::host):
(WebCore::Location::port):
(WebCore::Location::setPort):
* platform/KURLGoogle.cpp:
(WebCore::KURL::setPort):

LayoutTests:

Updated tests to reflect behavior change around invalid port strings.
Updated chromium location-port test to reflect chromium issues

Patch by Rachel Blum <groby@chromium.org> on 2011-08-30
Reviewed by Adam Barth.

* fast/dom/HTMLAnchorElement/get-href-attribute-port-expected.txt: Added.
* fast/dom/HTMLAnchorElement/get-href-attribute-port.html: Added.
* fast/dom/HTMLAnchorElement/script-tests/get-href-attribute-port.js: Added.
* fast/loader/location-port-expected.txt:
* fast/loader/location-port.html:
* fast/url/script-tests/segments-from-data-url.js:
* fast/url/script-tests/segments.js:
* fast/url/script-tests/trivial-segments.js:
* fast/url/segments-expected.txt:
* fast/url/segments-from-data-url-expected.txt:
* fast/url/trivial-segments-expected.txt:
* platform/chromium-cg-mac/fast/loader/location-port-expected.txt:
* platform/chromium-win/fast/loader/location-port-expected.txt:
* platform/chromium/fast/dom/HTMLAnchorElement/set-href-attribute-port-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@94132 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 731c4678
2011-08-30 Rachel Blum <groby@chromium.org>
The "port" property of an <a> whose href does not specify a port returns the wrong value
https://bugs.webkit.org/show_bug.cgi?id=66081
Updated tests to reflect behavior change around invalid port strings.
Updated chromium location-port test to reflect chromium issues
Reviewed by Adam Barth.
* fast/dom/HTMLAnchorElement/get-href-attribute-port-expected.txt: Added.
* fast/dom/HTMLAnchorElement/get-href-attribute-port.html: Added.
* fast/dom/HTMLAnchorElement/script-tests/get-href-attribute-port.js: Added.
* fast/loader/location-port-expected.txt:
* fast/loader/location-port.html:
* fast/url/script-tests/segments-from-data-url.js:
* fast/url/script-tests/segments.js:
* fast/url/script-tests/trivial-segments.js:
* fast/url/segments-expected.txt:
* fast/url/segments-from-data-url-expected.txt:
* fast/url/trivial-segments-expected.txt:
* platform/chromium-cg-mac/fast/loader/location-port-expected.txt:
* platform/chromium-win/fast/loader/location-port-expected.txt:
* platform/chromium/fast/dom/HTMLAnchorElement/set-href-attribute-port-expected.txt:
2011-08-30 Scott Byer <scottbyer@chromium.org>
 
Fix pan scrolling on Windows to be clamped
Test getting the port attribute of the URL in HTMLAnchorElement.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Default port is empty
PASS a.port is ''
Unspecified port should return empty string
PASS a.port is ''
Empty port should be empty
PASS a.port is ''
PASS successfullyParsed is true
TEST COMPLETE
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<link rel="stylesheet" href="../../js/resources/js-test-style.css">
<script src="../../js/resources/js-test-pre.js"></script>
</head>
<body>
<p id="description"></p>
<div id="console"></div>
<script src="script-tests/get-href-attribute-port.js"></script>
<script src="../../js/resources/js-test-post.js"></script>
</body>
</html>
description('Test getting the port attribute of the URL in HTMLAnchorElement.');
var a = document.createElement('a');
debug("Default port is empty");
shouldBe("a.port", "''");
debug("Unspecified port should return empty string");
a.href = "http://example.com/";
shouldBe("a.port", "''");
debug("Empty port should be empty");
a.href = "http://example.com:/";
shouldBe("a.port", "''");
var successfullyParsed = true;
......@@ -4,3 +4,4 @@ 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.
......@@ -27,7 +27,7 @@
var internalFrame = document.getElementById ('internal');
shouldBe('internalFrame.contentWindow.location.port == "88"', true);
internalFrame.contentWindow.location.port = 0;
internalFrame.contentWindow.location.port = "";
setTimeout(checkTest2, 300);
}
......@@ -43,10 +43,19 @@
var internalFrame = document.getElementById ('internal');
shouldBe('internalFrame.contentWindow.location.port == "80"', true);
internalFrame.contentWindow.location.port = 0;
setTimeout(checkTest4, 300);
}
function checkTest4() {
var internalFrame = document.getElementById ('internal');
shouldBe('internalFrame.contentWindow.location.host', ':0');
if (window.layoutTestController)
layoutTestController.notifyDone();
}
function runTests() {
if (window.layoutTestController) {
layoutTestController.clearBackForwardList();
......
......@@ -3,71 +3,71 @@ description("Test URL segmentation");
cases = [
// [URL, [SCHEME, HOST, PORT, PATH, QUERY, REF]]
["http://user:pass@foo:21/bar;par?b#c", ["http:","foo","21","/bar;par","?b","#c"]],
["http:foo.com", ["http:","foo.com","0","/","",""]],
["\\t :foo.com \\n", [":","","0","","",""]],
[" foo.com ", [":","","0","","",""]],
["a:\\t foo.com", ["a:","","0"," foo.com","",""]],
["http:foo.com", ["http:","foo.com","","/","",""]],
["\\t :foo.com \\n", [":","","","","",""]],
[" foo.com ", [":","","","","",""]],
["a:\\t foo.com", ["a:","",""," foo.com","",""]],
["http://f:21/ b ? d # e ", ["http:","f","21","/%20b%20","?%20d%20","# e"]],
["http://f:/c", ["http:","f","0","/c","",""]],
["http://f:/c", ["http:","f","","/c","",""]],
["http://f:0/c", ["http:","f","0","/c","",""]],
["http://f:00000000000000/c", ["http:","f","0","/c","",""]],
["http://f:00000000000000000000080/c", ["http:","f","0","/c","",""]],
["http://f:b/c", [":","","0","","",""]],
["http://f: /c", [":","","0","","",""]],
["http://f:\\n/c", [":","","0","","",""]],
["http://f:fifty-two/c", [":","","0","","",""]],
["http://f:b/c", [":","","","","",""]],
["http://f: /c", [":","","","","",""]],
["http://f:\\n/c", [":","","","","",""]],
["http://f:fifty-two/c", [":","","","","",""]],
["http://f:999999/c", [":","","0","","",""]],
["http://f: 21 / b ? d # e ", [":","","0","","",""]],
["", ["data:","","0","text/plain,baseURL","",""]],
[" \\t", ["data:","","0","text/plain,baseURL","",""]],
[":foo.com/", [":","","0","","",""]],
[":foo.com\\\\", [":","","0","","",""]],
[":", [":","","0","","",""]],
[":a", [":","","0","","",""]],
[":/", [":","","0","","",""]],
[":\\\\", [":","","0","","",""]],
[":#", [":","","0","","",""]],
["#", [":","","0","","",""]],
["#/", [":","","0","","",""]],
["#\\\\", [":","","0","","",""]],
["#;?", [":","","0","","",""]],
["?", [":","","0","","",""]],
["/", [":","","0","","",""]],
[":23", [":","","0","","",""]],
["/:23", ["data:","","0","/:23","",""]],
["//", [":","","0","","",""]],
["::", [":","","0","","",""]],
["::23", [":","","0","","",""]],
["foo://", ["foo:","","0","//","",""]],
["http://f: 21 / b ? d # e ", [":","","","","",""]],
["", ["data:","","","text/plain,baseURL","",""]],
[" \\t", ["data:","","","text/plain,baseURL","",""]],
[":foo.com/", [":","","","","",""]],
[":foo.com\\\\", [":","","","","",""]],
[":", [":","","","","",""]],
[":a", [":","","","","",""]],
[":/", [":","","","","",""]],
[":\\\\", [":","","","","",""]],
[":#", [":","","","","",""]],
["#", [":","","","","",""]],
["#/", [":","","","","",""]],
["#\\\\", [":","","","","",""]],
["#;?", [":","","","","",""]],
["?", [":","","","","",""]],
["/", [":","","","","",""]],
[":23", [":","","","","",""]],
["/:23", ["data:","","","/:23","",""]],
["//", [":","","","","",""]],
["::", [":","","","","",""]],
["::23", [":","","","","",""]],
["foo://", ["foo:","","","//","",""]],
["http://a:b@c:29/d", ["http:","c","29","/d","",""]],
["http::@c:29", ["http:","c","29","/","",""]],
["http://&a:foo(b]c@d:2/", ["http:","d","2","/","",""]],
["http://::@c@d:2", ["http:","d","2","/","",""]],
["http://foo.com:b@d/", ["http:","d","0","/","",""]],
["http://foo.com/\\\\@", ["http:","foo.com","0","//@","",""]],
["http:\\\\\\\\foo.com\\\\", ["http:","foo.com","0","/","",""]],
["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","0","/b:c/d@foo.com/","",""]],
["foo:/", ["foo:","","0","/","",""]],
["foo:/bar.com/", ["foo:","","0","/bar.com/","",""]],
["foo://///////", ["foo:","","0","/////////","",""]],
["foo://///////bar.com/", ["foo:","","0","/////////bar.com/","",""]],
["foo:////://///", ["foo:","","0","////://///","",""]],
["c:/foo", ["c:","","0","/foo","",""]],
["//foo/bar", [":","","0","","",""]],
["http://foo/path;a??e#f#g", ["http:","foo","0","/path;a","??e","#f#g"]],
["http://foo/abcd?efgh?ijkl", ["http:","foo","0","/abcd","?efgh?ijkl",""]],
["http://foo/abcd#foo?bar", ["http:","foo","0","/abcd","","#foo?bar"]],
["[61:24:74]:98", ["data:","","0","text/[61:24:74]:98","",""]],
["http://foo.com:b@d/", ["http:","d","","/","",""]],
["http://foo.com/\\\\@", ["http:","foo.com","","//@","",""]],
["http:\\\\\\\\foo.com\\\\", ["http:","foo.com","","/","",""]],
["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","","/b:c/d@foo.com/","",""]],
["foo:/", ["foo:","","","/","",""]],
["foo:/bar.com/", ["foo:","","","/bar.com/","",""]],
["foo://///////", ["foo:","","","/////////","",""]],
["foo://///////bar.com/", ["foo:","","","/////////bar.com/","",""]],
["foo:////://///", ["foo:","","","////://///","",""]],
["c:/foo", ["c:","","","/foo","",""]],
["//foo/bar", [":","","","","",""]],
["http://foo/path;a??e#f#g", ["http:","foo","","/path;a","??e","#f#g"]],
["http://foo/abcd?efgh?ijkl", ["http:","foo","","/abcd","?efgh?ijkl",""]],
["http://foo/abcd#foo?bar", ["http:","foo","","/abcd","","#foo?bar"]],
["[61:24:74]:98", ["data:","","","text/[61:24:74]:98","",""]],
["http://[61:27]:98", [":","","0","","",""]],
["http:[61:27]/:foo", [":","","0","","",""]],
["http://[1::2]:3:4", [":","","0","","",""]],
["http://2001::1", [":","","0","","",""]],
["http://[2001::1", [":","","0","","",""]],
["http://2001::1]", [":","","0","","",""]],
["http://2001::1]:80", [":","","0","","",""]],
["http://[2001::1]", ["http:","[2001::1]","0","/","",""]],
["http://[2001::1]:80", ["http:","[2001::1]","0","/","",""]],
["http://[[::]]", [":","","0","","",""]],
["http:[61:27]/:foo", [":","","","","",""]],
["http://[1::2]:3:4", [":","","","","",""]],
["http://2001::1", [":","","","","",""]],
["http://[2001::1", [":","","","","",""]],
["http://2001::1]", [":","","","","",""]],
["http://2001::1]:80", [":","","","","",""]],
["http://[2001::1]", ["http:","[2001::1]","","/","",""]],
["http://[2001::1]:80", ["http:","[2001::1]","","/","",""]],
["http://[[::]]", [":","","","","",""]],
];
var originalBaseURL = canonicalize(".");
......
......@@ -3,95 +3,95 @@ description("Test URL segmentation");
cases = [
// [URL, [SCHEME, HOST, PORT, PATH, QUERY, REF]]
["http://user:pass@foo:21/bar;par?b#c", ["http:","foo","21","/bar;par","?b","#c"]],
["http:foo.com", ["http:","example.org","0","/foo/foo.com","",""]],
["\\t :foo.com \\n", ["http:","example.org","0","/foo/:foo.com","",""]],
[" foo.com ", ["http:","example.org","0","/foo/foo.com","",""]],
["a:\\t foo.com", ["a:","","0"," foo.com","",""]],
["http:foo.com", ["http:","example.org","","/foo/foo.com","",""]],
["\\t :foo.com \\n", ["http:","example.org","","/foo/:foo.com","",""]],
[" foo.com ", ["http:","example.org","","/foo/foo.com","",""]],
["a:\\t foo.com", ["a:","",""," foo.com","",""]],
["http://f:21/ b ? d # e ", ["http:","f","21","/%20b%20","?%20d%20","# e"]],
["http://f:/c", ["http:","f","0","/c","",""]],
["http://f:/c", ["http:","f","","/c","",""]],
["http://f:0/c", ["http:","f","0","/c","",""]],
["http://f:00000000000000/c", ["http:","f","0","/c","",""]],
["http://f:00000000000000000000080/c", ["http:","f","0","/c","",""]],
["http://f:b/c", [":","","0","","",""]],
["http://f: /c", [":","","0","","",""]],
["http://f:\\n/c", [":","","0","","",""]],
["http://f:fifty-two/c", [":","","0","","",""]],
["http://f:b/c", [":","","","","",""]],
["http://f: /c", [":","","","","",""]],
["http://f:\\n/c", [":","","","","",""]],
["http://f:fifty-two/c", [":","","","","",""]],
["http://f:999999/c", [":","","0","","",""]],
["http://f: 21 / b ? d # e ", [":","","0","","",""]],
["", ["http:","example.org","0","/foo/bar","",""]],
[" \\t", ["http:","example.org","0","/foo/bar","",""]],
[":foo.com/", ["http:","example.org","0","/foo/:foo.com/","",""]],
[":foo.com\\\\", ["http:","example.org","0","/foo/:foo.com/","",""]],
[":", ["http:","example.org","0","/foo/:","",""]],
[":a", ["http:","example.org","0","/foo/:a","",""]],
[":/", ["http:","example.org","0","/foo/:/","",""]],
[":\\\\", ["http:","example.org","0","/foo/:/","",""]],
[":#", ["http:","example.org","0","/foo/:","",""]],
["#", ["http:","example.org","0","/foo/bar","",""]],
["#/", ["http:","example.org","0","/foo/bar","","#/"]],
["#\\\\", ["http:","example.org","0","/foo/bar","","#\\\\"]],
["#;?", ["http:","example.org","0","/foo/bar","","#;?"]],
["?", ["http:","example.org","0","/foo/bar","",""]],
["/", ["http:","example.org","0","/","",""]],
[":23", ["http:","example.org","0","/foo/:23","",""]],
["/:23", ["http:","example.org","0","/:23","",""]],
["//", [":","","0","","",""]],
["::", ["http:","example.org","0","/foo/::","",""]],
["::23", ["http:","example.org","0","/foo/::23","",""]],
["foo://", ["foo:","","0","//","",""]],
["http://f: 21 / b ? d # e ", [":","","","","",""]],
["", ["http:","example.org","","/foo/bar","",""]],
[" \\t", ["http:","example.org","","/foo/bar","",""]],
[":foo.com/", ["http:","example.org","","/foo/:foo.com/","",""]],
[":foo.com\\\\", ["http:","example.org","","/foo/:foo.com/","",""]],
[":", ["http:","example.org","","/foo/:","",""]],
[":a", ["http:","example.org","","/foo/:a","",""]],
[":/", ["http:","example.org","","/foo/:/","",""]],
[":\\\\", ["http:","example.org","","/foo/:/","",""]],
[":#", ["http:","example.org","","/foo/:","",""]],
["#", ["http:","example.org","","/foo/bar","",""]],
["#/", ["http:","example.org","","/foo/bar","","#/"]],
["#\\\\", ["http:","example.org","","/foo/bar","","#\\\\"]],
["#;?", ["http:","example.org","","/foo/bar","","#;?"]],
["?", ["http:","example.org","","/foo/bar","",""]],
["/", ["http:","example.org","","/","",""]],
[":23", ["http:","example.org","","/foo/:23","",""]],
["/:23", ["http:","example.org","","/:23","",""]],
["//", [":","","","","",""]],
["::", ["http:","example.org","","/foo/::","",""]],
["::23", ["http:","example.org","","/foo/::23","",""]],
["foo://", ["foo:","","","//","",""]],
["http://a:b@c:29/d", ["http:","c","29","/d","",""]],
["http::@c:29", ["http:","example.org","0","/foo/:@c:29","",""]],
["http::@c:29", ["http:","example.org","","/foo/:@c:29","",""]],
["http://&a:foo(b]c@d:2/", ["http:","d","2","/","",""]],
["http://::@c@d:2", ["http:","d","2","/","",""]],
["http://foo.com:b@d/", ["http:","d","0","/","",""]],
["http://foo.com/\\\\@", ["http:","foo.com","0","//@","",""]],
["http:\\\\\\\\foo.com\\\\", ["http:","foo.com","0","/","",""]],
["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","0","/b:c/d@foo.com/","",""]],
["foo:/", ["foo:","","0","/","",""]],
["foo:/bar.com/", ["foo:","","0","/bar.com/","",""]],
["foo://///////", ["foo:","","0","/////////","",""]],
["foo://///////bar.com/", ["foo:","","0","/////////bar.com/","",""]],
["foo:////://///", ["foo:","","0","////://///","",""]],
["c:/foo", ["c:","","0","/foo","",""]],
["//foo/bar", ["http:","foo","0","/bar","",""]],
["http://foo/path;a??e#f#g", ["http:","foo","0","/path;a","??e","#f#g"]],
["http://foo/abcd?efgh?ijkl", ["http:","foo","0","/abcd","?efgh?ijkl",""]],
["http://foo/abcd#foo?bar", ["http:","foo","0","/abcd","","#foo?bar"]],
["[61:24:74]:98", ["http:","example.org","0","/foo/[61:24:74]:98","",""]],
["http://foo.com:b@d/", ["http:","d","","/","",""]],
["http://foo.com/\\\\@", ["http:","foo.com","","//@","",""]],
["http:\\\\\\\\foo.com\\\\", ["http:","foo.com","","/","",""]],
["http:\\\\\\\\a\\\\b:c\\\\d@foo.com\\\\", ["http:","a","","/b:c/d@foo.com/","",""]],
["foo:/", ["foo:","","","/","",""]],
["foo:/bar.com/", ["foo:","","","/bar.com/","",""]],
["foo://///////", ["foo:","","","/////////","",""]],
["foo://///////bar.com/", ["foo:","","","/////////bar.com/","",""]],
["foo:////://///", ["foo:","","","////://///","",""]],
["c:/foo", ["c:","","","/foo","",""]],
["//foo/bar", ["http:","foo","","/bar","",""]],
["http://foo/path;a??e#f#g", ["http:","foo","","/path;a","??e","#f#g"]],
["http://foo/abcd?efgh?ijkl", ["http:","foo","","/abcd","?efgh?ijkl",""]],
["http://foo/abcd#foo?bar", ["http:","foo","","/abcd","","#foo?bar"]],
["[61:24:74]:98", ["http:","example.org","","/foo/[61:24:74]:98","",""]],
["http://[61:27]:98", [":","","0","","",""]],
["http:[61:27]/:foo", ["http:","example.org","0","/foo/[61:27]/:foo","",""]],
["http://[1::2]:3:4", [":","","0","","",""]],
["http://2001::1", [":","","0","","",""]],
["http://[2001::1", [":","","0","","",""]],
["http://2001::1]", [":","","0","","",""]],
["http://2001::1]:80", [":","","0","","",""]],
["http://[2001::1]", ["http:","[2001::1]","0","/","",""]],
["http://[2001::1]:80", ["http:","[2001::1]","0","/","",""]],
["http://[[::]]", [":","","0","","",""]],
["http:/example.com/", ["http:","example.org","0","/example.com/","",""]],
["ftp:/example.com/", ["ftp:","example.com","0","/","",""]],
["https:/example.com/", ["https:","example.com","0","/","",""]],
["madeupscheme:/example.com/", ["madeupscheme:","","0","/example.com/","",""]],
["file:/example.com/", ["file:","","0","/example.com/","",""]],
["ftps:/example.com/", ["ftps:","","0","/example.com/","",""]],
["gopher:/example.com/", ["gopher:","example.com","0","/","",""]],
["ws:/example.com/", ["ws:","example.com","0","/","",""]],
["wss:/example.com/", ["wss:","example.com","0","/","",""]],
["data:/example.com/", ["data:","","0","/example.com/","",""]],
["javascript:/example.com/", ["javascript:","","0","/example.com/","",""]],
["mailto:/example.com/", ["mailto:","","0","/example.com/","",""]],
["http:example.com/", ["http:","example.org","0","/foo/example.com/","",""]],
["ftp:example.com/", ["ftp:","example.com","0","/","",""]],
["https:example.com/", ["https:","example.com","0","/","",""]],
["madeupscheme:example.com/", ["madeupscheme:","","0","example.com/","",""]],
["file:example.com/", ["file:","","0","/example.com/","",""]],
["ftps:example.com/", ["ftps:","","0","example.com/","",""]],
["gopher:example.com/", ["gopher:","example.com","0","/","",""]],
["ws:example.com/", ["ws:","example.com","0","/","",""]],
["wss:example.com/", ["wss:","example.com","0","/","",""]],
["data:example.com/", ["data:","","0","example.com/","",""]],
["javascript:example.com/", ["javascript:","","0","example.com/","",""]],
["mailto:example.com/", ["mailto:","","0","example.com/","",""]],
["http:[61:27]/:foo", ["http:","example.org","","/foo/[61:27]/:foo","",""]],
["http://[1::2]:3:4", [":","","","","",""]],
["http://2001::1", [":","","","","",""]],
["http://[2001::1", [":","","","","",""]],
["http://2001::1]", [":","","","","",""]],
["http://2001::1]:80", [":","","","","",""]],
["http://[2001::1]", ["http:","[2001::1]","","/","",""]],
["http://[2001::1]:80", ["http:","[2001::1]","","/","",""]],
["http://[[::]]", [":","","","","",""]],
["http:/example.com/", ["http:","example.org","","/example.com/","",""]],
["ftp:/example.com/", ["ftp:","example.com","","/","",""]],
["https:/example.com/", ["https:","example.com","","/","",""]],
["madeupscheme:/example.com/", ["madeupscheme:","","","/example.com/","",""]],
["file:/example.com/", ["file:","","","/example.com/","",""]],
["ftps:/example.com/", ["ftps:","","","/example.com/","",""]],
["gopher:/example.com/", ["gopher:","example.com","","/","",""]],
["ws:/example.com/", ["ws:","example.com","","/","",""]],
["wss:/example.com/", ["wss:","example.com","","/","",""]],
["data:/example.com/", ["data:","","","/example.com/","",""]],
["javascript:/example.com/", ["javascript:","","","/example.com/","",""]],
["mailto:/example.com/", ["mailto:","","","/example.com/","",""]],
["http:example.com/", ["http:","example.org","","/foo/example.com/","",""]],
["ftp:example.com/", ["ftp:","example.com","","/","",""]],
["https:example.com/", ["https:","example.com","","/","",""]],
["madeupscheme:example.com/", ["madeupscheme:","","","example.com/","",""]],
["file:example.com/", ["file:","","","/example.com/","",""]],
["ftps:example.com/", ["ftps:","","","example.com/","",""]],
["gopher:example.com/", ["gopher:","example.com","","/","",""]],
["ws:example.com/", ["ws:","example.com","","/","",""]],
["wss:example.com/", ["wss:","example.com","","/","",""]],
["data:example.com/", ["data:","","","example.com/","",""]],
["javascript:example.com/", ["javascript:","","","example.com/","",""]],
["mailto:example.com/", ["mailto:","","","example.com/","",""]],
];
var originalBaseURL = canonicalize(".");
......
......@@ -2,7 +2,7 @@ description("Test basic features of URL segmentation");
cases = [
// [URL, [SCHEME, HOST, PORT, PATH, QUERY, REF]]
["http://example.com/", ["http:", "example.com", "0", "/", "", ""]],
["http://example.com/", ["http:", "example.com", "", "/", "", ""]],
];
var originalBaseURL = canonicalize(".");
......
......@@ -4,95 +4,95 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
PASS segments('http://user:pass@foo:21/bar;par?b#c') is '["http:","foo","21","/bar;par","?b","#c"]'
PASS segments('http:foo.com') is '["http:","example.org","0","/foo/foo.com","",""]'
PASS segments('\t :foo.com \n') is '["http:","example.org","0","/foo/:foo.com","",""]'
PASS segments(' foo.com ') is '["http:","example.org","0","/foo/foo.com","",""]'
PASS segments('a:\t foo.com') is '["a:","","0"," foo.com","",""]'
PASS segments('http:foo.com') is '["http:","example.org","","/foo/foo.com","",""]'
PASS segments('\t :foo.com \n') is '["http:","example.org","","/foo/:foo.com","",""]'
PASS segments(' foo.com ') is '["http:","example.org","","/foo/foo.com","",""]'
PASS segments('a:\t foo.com') is '["a:","",""," foo.com","",""]'
FAIL segments('http://f:21/ b ? d # e ') should be ["http:","f","21","/%20b%20","?%20d%20","# e"]. Was ["http:","f","21","/ b ","?%20d%20","# e"].
PASS segments('http://f:/c') is '["http:","f","0","/c","",""]'
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","",""].
PASS segments('http://f:b/c') is '[":","","0","","",""]'
PASS segments('http://f: /c') is '[":","","0","","",""]'
PASS segments('http://f:\n/c') is '[":","","0","","",""]'
PASS segments('http://f:fifty-two/c') is '[":","","0","","",""]'
PASS segments('http://f:b/c') is '[":","","","","",""]'
PASS segments('http://f: /c') is '[":","","","","",""]'
PASS segments('http://f:\n/c') is '[":","","","","",""]'
PASS segments('http://f:fifty-two/c') is '[":","","","","",""]'
FAIL segments('http://f:999999/c') should be [":","","0","","",""]. Was ["http:","f","65535","/c","",""].
PASS segments('http://f: 21 / b ? d # e ') is '[":","","0","","",""]'
PASS segments('') is '["http:","example.org","0","/foo/bar","",""]'
PASS segments(' \t') is '["http:","example.org","0","/foo/bar","",""]'
PASS segments(':foo.com/') is '["http:","example.org","0","/foo/:foo.com/","",""]'
PASS segments(':foo.com\\') is '["http:","example.org","0","/foo/:foo.com/","",""]'
PASS segments(':') is '["http:","example.org","0","/foo/:","",""]'
PASS segments(':a') is '["http:","example.org","0","/foo/:a","",""]'
PASS segments(':/') is '["http:","example.org","0","/foo/:/","",""]'
PASS segments(':\\') is '["http:","example.org","0","/foo/:/","",""]'
PASS segments(':#') is '["http:","example.org","0","/foo/:","",""]'
PASS segments('#') is '["http:","example.org","0","/foo/bar","",""]'
PASS segments('#/') is '["http:","example.org","0","/foo/bar","","#/"]'
PASS segments('#\\') is '["http:","example.org","0","/foo/bar","","#\\\\"]'
PASS segments('#;?') is '["http:","example.org","0","/foo/bar","","#;?"]'
PASS segments('?') is '["http:","example.org","0","/foo/bar","",""]'
PASS segments('/') is '["http:","example.org","0","/","",""]'
PASS segments(':23') is '["http:","example.org","0","/foo/:23","",""]'
PASS segments('/:23') is '["http:","example.org","0","/:23","",""]'
FAIL segments('//') should be [":","","0","","",""]. Was ["http:","","0","/","",""].
PASS segments('::') is '["http:","example.org","0","/foo/::","",""]'
PASS segments('::23') is '["http:","example.org","0","/foo/::23","",""]'
PASS segments('foo://') is '["foo:","","0","//","",""]'
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","",""]'
PASS segments(':foo.com/') is '["http:","example.org","","/foo/:foo.com/","",""]'
PASS segments(':foo.com\\') is '["http:","example.org","","/foo/:foo.com/","",""]'
PASS segments(':') is '["http:","example.org","","/foo/:","",""]'
PASS segments(':a') is '["http:","example.org","","/foo/:a","",""]'
PASS segments(':/') is '["http:","example.org","","/foo/:/","",""]'
PASS segments(':\\') is '["http:","example.org","","/foo/:/","",""]'
PASS segments(':#') is '["http:","example.org","","/foo/:","",""]'
PASS segments('#') is '["http:","example.org","","/foo/bar","",""]'
PASS segments('#/') is '["http:","example.org","","/foo/bar","","#/"]'
PASS segments('#\\') is '["http:","example.org","","/foo/bar","","#\\\\"]'
PASS segments('#;?') is '["http:","example.org","","/foo/bar","","#;?"]'
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 '["http:","example.org","","/foo/::","",""]'