зеркало из https://github.com/mozilla/gecko-dev.git
356 строки
8.1 KiB
JavaScript
356 строки
8.1 KiB
JavaScript
/* eslint-env worker */
|
|
|
|
function ok(a, msg) {
|
|
dump("OK: " + !!a + " => " + a + " " + msg + "\n");
|
|
postMessage({ type: "status", status: !!a, msg: a + ": " + msg });
|
|
}
|
|
|
|
function is(a, b, msg) {
|
|
dump("IS: " + (a === b) + " => " + a + " | " + b + " " + msg + "\n");
|
|
postMessage({
|
|
type: "status",
|
|
status: a === b,
|
|
msg: a + " === " + b + ": " + msg,
|
|
});
|
|
}
|
|
|
|
// eslint-disable-next-line complexity
|
|
onmessage = function() {
|
|
let status = false;
|
|
try {
|
|
if (URL instanceof Object) {
|
|
status = true;
|
|
}
|
|
} catch (e) {}
|
|
|
|
ok(status, "URL in workers \\o/");
|
|
|
|
var tests = [
|
|
{
|
|
url: "http://www.abc.com",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://www.abc.com/",
|
|
origin: "http://www.abc.com",
|
|
protocol: "http:",
|
|
username: "",
|
|
password: "",
|
|
host: "www.abc.com",
|
|
hostname: "www.abc.com",
|
|
port: "",
|
|
pathname: "/",
|
|
search: "",
|
|
hash: "",
|
|
},
|
|
{
|
|
url: "ftp://auser:apw@www.abc.com",
|
|
base: undefined,
|
|
error: false,
|
|
href: "ftp://auser:apw@www.abc.com/",
|
|
origin: "ftp://www.abc.com",
|
|
protocol: "ftp:",
|
|
username: "auser",
|
|
password: "apw",
|
|
host: "www.abc.com",
|
|
hostname: "www.abc.com",
|
|
port: "",
|
|
pathname: "/",
|
|
search: "",
|
|
hash: "",
|
|
},
|
|
{
|
|
url: "http://www.abc.com:90/apath/",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://www.abc.com:90/apath/",
|
|
origin: "http://www.abc.com:90",
|
|
protocol: "http:",
|
|
username: "",
|
|
password: "",
|
|
host: "www.abc.com:90",
|
|
hostname: "www.abc.com",
|
|
port: "90",
|
|
pathname: "/apath/",
|
|
search: "",
|
|
hash: "",
|
|
},
|
|
{
|
|
url: "http://www.abc.com/apath/afile.txt#ahash",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://www.abc.com/apath/afile.txt#ahash",
|
|
origin: "http://www.abc.com",
|
|
protocol: "http:",
|
|
username: "",
|
|
password: "",
|
|
host: "www.abc.com",
|
|
hostname: "www.abc.com",
|
|
port: "",
|
|
pathname: "/apath/afile.txt",
|
|
search: "",
|
|
hash: "#ahash",
|
|
},
|
|
{
|
|
url: "http://example.com/?test#hash",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://example.com/?test#hash",
|
|
origin: "http://example.com",
|
|
protocol: "http:",
|
|
username: "",
|
|
password: "",
|
|
host: "example.com",
|
|
hostname: "example.com",
|
|
port: "",
|
|
pathname: "/",
|
|
search: "?test",
|
|
hash: "#hash",
|
|
},
|
|
{
|
|
url: "http://example.com/?test",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://example.com/?test",
|
|
origin: "http://example.com",
|
|
protocol: "http:",
|
|
username: "",
|
|
password: "",
|
|
host: "example.com",
|
|
hostname: "example.com",
|
|
port: "",
|
|
pathname: "/",
|
|
search: "?test",
|
|
hash: "",
|
|
},
|
|
{
|
|
url: "http://example.com/carrot#question%3f",
|
|
base: undefined,
|
|
error: false,
|
|
hash: "#question%3f",
|
|
},
|
|
{
|
|
url: "https://example.com:4443?",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "https:",
|
|
port: "4443",
|
|
pathname: "/",
|
|
hash: "",
|
|
search: "",
|
|
},
|
|
{
|
|
url: "http://www.abc.com/apath/afile.txt#ahash?asearch",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://www.abc.com/apath/afile.txt#ahash?asearch",
|
|
protocol: "http:",
|
|
pathname: "/apath/afile.txt",
|
|
hash: "#ahash?asearch",
|
|
search: "",
|
|
},
|
|
{
|
|
url: "http://www.abc.com/apath/afile.txt?asearch#ahash",
|
|
base: undefined,
|
|
error: false,
|
|
href: "http://www.abc.com/apath/afile.txt?asearch#ahash",
|
|
protocol: "http:",
|
|
pathname: "/apath/afile.txt",
|
|
hash: "#ahash",
|
|
search: "?asearch",
|
|
},
|
|
{
|
|
url: "http://abc.com/apath/afile.txt?#ahash",
|
|
base: undefined,
|
|
error: false,
|
|
pathname: "/apath/afile.txt",
|
|
hash: "#ahash",
|
|
search: "",
|
|
},
|
|
{
|
|
url:
|
|
"http://auser:apassword@www.abc.com:90/apath/afile.txt?asearch#ahash",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "http:",
|
|
username: "auser",
|
|
password: "apassword",
|
|
host: "www.abc.com:90",
|
|
hostname: "www.abc.com",
|
|
port: "90",
|
|
pathname: "/apath/afile.txt",
|
|
hash: "#ahash",
|
|
search: "?asearch",
|
|
origin: "http://www.abc.com:90",
|
|
},
|
|
|
|
{ url: "/foo#bar", base: "www.test.org", error: true },
|
|
{ url: "/foo#bar", base: null, error: true },
|
|
{ url: "/foo#bar", base: 42, error: true },
|
|
{
|
|
url: "ftp://ftp.something.net",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "ftp:",
|
|
},
|
|
{
|
|
url: "file:///tmp/file",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "file:",
|
|
},
|
|
{
|
|
url: "gopher://gopher.something.net",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "gopher:",
|
|
},
|
|
{
|
|
url: "ws://ws.something.net",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "ws:",
|
|
},
|
|
{
|
|
url: "wss://ws.something.net",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "wss:",
|
|
},
|
|
{
|
|
url: "foo://foo.something.net",
|
|
base: undefined,
|
|
error: false,
|
|
protocol: "foo:",
|
|
},
|
|
];
|
|
|
|
while (tests.length) {
|
|
var test = tests.shift();
|
|
|
|
var error = false;
|
|
var url;
|
|
try {
|
|
if (test.base) {
|
|
url = new URL(test.url, test.base);
|
|
} else {
|
|
url = new URL(test.url);
|
|
}
|
|
} catch (e) {
|
|
error = true;
|
|
}
|
|
|
|
is(test.error, error, "Error creating URL");
|
|
if (test.error) {
|
|
continue;
|
|
}
|
|
|
|
if ("href" in test) {
|
|
is(url.href, test.href, "href");
|
|
}
|
|
if ("origin" in test) {
|
|
is(url.origin, test.origin, "origin");
|
|
}
|
|
if ("protocol" in test) {
|
|
is(url.protocol, test.protocol, "protocol");
|
|
}
|
|
if ("username" in test) {
|
|
is(url.username, test.username, "username");
|
|
}
|
|
if ("password" in test) {
|
|
is(url.password, test.password, "password");
|
|
}
|
|
if ("host" in test) {
|
|
is(url.host, test.host, "host");
|
|
}
|
|
if ("hostname" in test) {
|
|
is(url.hostname, test.hostname, "hostname");
|
|
}
|
|
if ("port" in test) {
|
|
is(url.port, test.port, "port");
|
|
}
|
|
if ("pathname" in test) {
|
|
is(url.pathname, test.pathname, "pathname");
|
|
}
|
|
if ("search" in test) {
|
|
is(url.search, test.search, "search");
|
|
}
|
|
if ("hash" in test) {
|
|
is(url.hash, test.hash, "hash");
|
|
}
|
|
|
|
url = new URL("https://www.example.net/what#foo?bar");
|
|
ok(url, "Url exists!");
|
|
|
|
if ("href" in test) {
|
|
url.href = test.href;
|
|
}
|
|
if ("protocol" in test) {
|
|
url.protocol = test.protocol;
|
|
}
|
|
if ("username" in test && test.username) {
|
|
url.username = test.username;
|
|
}
|
|
if ("password" in test && test.password) {
|
|
url.password = test.password;
|
|
}
|
|
if ("host" in test) {
|
|
url.host = test.host;
|
|
}
|
|
if ("hostname" in test) {
|
|
url.hostname = test.hostname;
|
|
}
|
|
if ("port" in test) {
|
|
url.port = test.port;
|
|
}
|
|
if ("pathname" in test) {
|
|
url.pathname = test.pathname;
|
|
}
|
|
if ("search" in test) {
|
|
url.search = test.search;
|
|
}
|
|
if ("hash" in test) {
|
|
url.hash = test.hash;
|
|
}
|
|
|
|
if ("href" in test) {
|
|
is(url.href, test.href, "href");
|
|
}
|
|
if ("origin" in test) {
|
|
is(url.origin, test.origin, "origin");
|
|
}
|
|
if ("protocol" in test) {
|
|
is(url.protocol, test.protocol, "protocol");
|
|
}
|
|
if ("username" in test) {
|
|
is(url.username, test.username, "username");
|
|
}
|
|
if ("password" in test) {
|
|
is(url.password, test.password, "password");
|
|
}
|
|
if ("host" in test) {
|
|
is(url.host, test.host, "host");
|
|
}
|
|
if ("hostname" in test) {
|
|
is(test.hostname, url.hostname, "hostname");
|
|
}
|
|
if ("port" in test) {
|
|
is(test.port, url.port, "port");
|
|
}
|
|
if ("pathname" in test) {
|
|
is(test.pathname, url.pathname, "pathname");
|
|
}
|
|
if ("search" in test) {
|
|
is(test.search, url.search, "search");
|
|
}
|
|
if ("hash" in test) {
|
|
is(test.hash, url.hash, "hash");
|
|
}
|
|
|
|
if ("href" in test) {
|
|
is(test.href, url + "", "stringify works");
|
|
}
|
|
}
|
|
|
|
postMessage({ type: "finish" });
|
|
};
|