mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-11 17:57:32 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
10
testing/web-platform/tests/url/OWNERS
Normal file
10
testing/web-platform/tests/url/OWNERS
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
@mikewest
|
||||
@frewsxcv
|
||||
@tomalec
|
||||
@rubys
|
||||
@sideshowbarker
|
||||
@zcorpan
|
||||
@xiaojunwu
|
||||
@smola
|
||||
@domenic
|
||||
@Sebmaster
|
||||
35
testing/web-platform/tests/url/README.md
Normal file
35
testing/web-platform/tests/url/README.md
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
These tests are for browsers, but the data for
|
||||
`a-element.html`, `url-constructor.html`, and `a-element-xhtml.xhtml`
|
||||
is in `urltestdata.json` and can be re-used by non-browser implementations.
|
||||
This file contains a JSON array of comments as strings and test cases as objects.
|
||||
The keys for each test case are:
|
||||
|
||||
* `base`: an absolute URL as a string whose [parsing] without a base of its own should succeed.
|
||||
This key is always present,
|
||||
and may have a value like `"about:blank"` when `input` is an absolute URL.
|
||||
* `input`: an URL as a string to be [parsed][parsing] with `base` as its base URL.
|
||||
* Either:
|
||||
* `failure` with the value `true`, indicating that parsing `input` should return failure,
|
||||
* or `href`, `origin`, `protocol`, `username`, `password`, `host`, `hostname`, `port`,
|
||||
`pathname`, `search`, and `hash` with string values;
|
||||
indicating that parsing `input` should return an URL record
|
||||
and that the getters of each corresponding attribute in that URL’s [API]
|
||||
should return the corresponding value.
|
||||
|
||||
The `origin` key may be missing.
|
||||
In that case, the API’s `origin` attribute is not tested.
|
||||
|
||||
[parsing]: https://url.spec.whatwg.org/#concept-basic-url-parser
|
||||
[API]: https://url.spec.whatwg.org/#api
|
||||
|
||||
[`annevk/url`](https://github.com/annevk/url) hosts some other files that might be of
|
||||
interest if you want to create additional tests.
|
||||
|
||||
Similar to `a-element.html` it would be trivial to add more tests for other objects that
|
||||
expose links (e.g. URL and `<area>`). There's also room for enhancement and bits that
|
||||
require independent tests:
|
||||
|
||||
* The encoding part of the URL parser
|
||||
* The state override part of the URL parser (setting individual properties of a URL)
|
||||
* Origin serialization
|
||||
* `application/x-www-form-urlencoded`
|
||||
14
testing/web-platform/tests/url/a-element-xhtml.xhtml
Normal file
14
testing/web-platform/tests/url/a-element-xhtml.xhtml
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>URL Test</title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<base id="base"/>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<script src="a-element.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
7
testing/web-platform/tests/url/a-element.html
Normal file
7
testing/web-platform/tests/url/a-element.html
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<base id=base>
|
||||
<div id=log></div>
|
||||
<script src=a-element.js></script>
|
||||
55
testing/web-platform/tests/url/a-element.js
Normal file
55
testing/web-platform/tests/url/a-element.js
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
var setup = async_test("Loading data…")
|
||||
setup.step(function() {
|
||||
var request = new XMLHttpRequest()
|
||||
request.open("GET", "urltestdata.json")
|
||||
request.send()
|
||||
request.responseType = "json"
|
||||
request.onload = setup.step_func(function() {
|
||||
runURLTests(request.response)
|
||||
setup.done()
|
||||
})
|
||||
})
|
||||
|
||||
function setBase(base) {
|
||||
document.getElementById("base").href = base
|
||||
}
|
||||
|
||||
function bURL(url, base) {
|
||||
base = base || "about:blank"
|
||||
setBase(base)
|
||||
var a = document.createElement("a")
|
||||
a.setAttribute("href", url)
|
||||
return a
|
||||
}
|
||||
|
||||
function runURLTests(urltests) {
|
||||
for(var i = 0, l = urltests.length; i < l; i++) {
|
||||
var expected = urltests[i]
|
||||
if (typeof expected === "string") continue // skip comments
|
||||
|
||||
test(function() {
|
||||
var url = bURL(expected.input, expected.base)
|
||||
if(expected.failure) {
|
||||
if(url.protocol !== ':') {
|
||||
assert_unreached("Expected URL to fail parsing")
|
||||
}
|
||||
assert_equals(url.href, expected.input, "failure should set href to input")
|
||||
return
|
||||
}
|
||||
|
||||
assert_equals(url.href, expected.href, "href")
|
||||
if ("origin" in expected) {
|
||||
assert_equals(url.origin, expected.origin, "origin")
|
||||
}
|
||||
assert_equals(url.protocol, expected.protocol, "protocol")
|
||||
assert_equals(url.username, expected.username, "username")
|
||||
assert_equals(url.password, expected.password, "password")
|
||||
assert_equals(url.host, expected.host, "host")
|
||||
assert_equals(url.hostname, expected.hostname, "hostname")
|
||||
assert_equals(url.port, expected.port, "port")
|
||||
assert_equals(url.pathname, expected.pathname, "pathname")
|
||||
assert_equals(url.search, expected.search, "search")
|
||||
assert_equals(url.hash, expected.hash, "hash")
|
||||
}, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
|
||||
}
|
||||
}
|
||||
29
testing/web-platform/tests/url/historical.html
Normal file
29
testing/web-platform/tests/url/historical.html
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<title>URL historical tests</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
var objects = [
|
||||
[function() { return window.location }, "location object"],
|
||||
[function() { return document.createElement("a") }, "a element"],
|
||||
[function() { return document.createElement("area") }, "area element"],
|
||||
];
|
||||
|
||||
objects.forEach(function(o) {
|
||||
test(function() {
|
||||
var object = o[0]();
|
||||
assert_false("searchParams" in object,
|
||||
o[1] + " should not have a searchParams attribute");
|
||||
}, "searchParams on " + o[1]);
|
||||
});
|
||||
|
||||
test(function() {
|
||||
var url = new URL("./foo", "http://www.example.org");
|
||||
assert_equals(url.href, "http://www.example.org/foo");
|
||||
assert_throws(new TypeError(), function() {
|
||||
url.href = "./bar";
|
||||
});
|
||||
}, "Setting URL's href attribute and base URLs");
|
||||
</script>
|
||||
16
testing/web-platform/tests/url/historical.worker.js
Normal file
16
testing/web-platform/tests/url/historical.worker.js
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
importScripts("/resources/testharness.js");
|
||||
|
||||
test(function() {
|
||||
assert_false("searchParams" in self.location,
|
||||
"location object should not have a searchParams attribute");
|
||||
}, "searchParams on location object");
|
||||
|
||||
test(function() {
|
||||
var url = new URL("./foo", "http://www.example.org");
|
||||
assert_equals(url.href, "http://www.example.org/foo");
|
||||
assert_throws(new TypeError(), function() {
|
||||
url.href = "./bar";
|
||||
});
|
||||
}, "Setting URL's href attribute and base URLs");
|
||||
|
||||
done();
|
||||
65
testing/web-platform/tests/url/interfaces.html
Normal file
65
testing/web-platform/tests/url/interfaces.html
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
<!doctype html>
|
||||
<title>URL IDL tests</title>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<script src=/resources/WebIDLParser.js></script>
|
||||
<script src=/resources/idlharness.js></script>
|
||||
|
||||
<h1>URL IDL tests</h1>
|
||||
<div id=log></div>
|
||||
|
||||
<script type=text/plain>
|
||||
[Constructor(USVString url, optional USVString base),
|
||||
Exposed=(Window,Worker)]
|
||||
interface URL {
|
||||
static USVString domainToASCII(USVString domain);
|
||||
static USVString domainToUnicode(USVString domain);
|
||||
|
||||
stringifier attribute USVString href;
|
||||
readonly attribute USVString origin;
|
||||
attribute USVString protocol;
|
||||
attribute USVString username;
|
||||
attribute USVString password;
|
||||
attribute USVString host;
|
||||
attribute USVString hostname;
|
||||
attribute USVString port;
|
||||
attribute USVString pathname;
|
||||
attribute USVString search;
|
||||
readonly attribute URLSearchParams searchParams;
|
||||
attribute USVString hash;
|
||||
};
|
||||
|
||||
[Constructor(optional (USVString or URLSearchParams) init = ""),
|
||||
Exposed=(Window,Worker)]
|
||||
interface URLSearchParams {
|
||||
void append(USVString name, USVString value);
|
||||
void delete(USVString name);
|
||||
USVString? get(USVString name);
|
||||
sequence<USVString> getAll(USVString name);
|
||||
boolean has(USVString name);
|
||||
void set(USVString name, USVString value);
|
||||
iterable<USVString, USVString>;
|
||||
stringifier;
|
||||
};
|
||||
</script>
|
||||
<script>
|
||||
"use strict";
|
||||
var idlArray;
|
||||
setup(function() {
|
||||
idlArray = new IdlArray();
|
||||
[].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
|
||||
if (node.className == "untested") {
|
||||
idlArray.add_untested_idls(node.textContent);
|
||||
} else {
|
||||
idlArray.add_idls(node.textContent);
|
||||
}
|
||||
});
|
||||
}, {explicit_done:true});
|
||||
window.onload = function() {
|
||||
idlArray.add_objects({
|
||||
URL: ['new URL("http://foo")']
|
||||
});
|
||||
idlArray.test();
|
||||
done();
|
||||
};
|
||||
</script>
|
||||
1130
testing/web-platform/tests/url/setters_tests.json
Normal file
1130
testing/web-platform/tests/url/setters_tests.json
Normal file
File diff suppressed because it is too large
Load diff
129
testing/web-platform/tests/url/url-constructor.html
Normal file
129
testing/web-platform/tests/url/url-constructor.html
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
function runURLConstructorTests() {
|
||||
var setup = async_test("Loading data…")
|
||||
setup.step(function() {
|
||||
var request = new XMLHttpRequest()
|
||||
request.open("GET", "urltestdata.json")
|
||||
request.send()
|
||||
request.responseType = "json"
|
||||
request.onload = setup.step_func(function() {
|
||||
runURLTests(request.response)
|
||||
setup.done()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function bURL(url, base) {
|
||||
return new URL(url, base || "about:blank")
|
||||
}
|
||||
|
||||
function runURLTests(urltests) {
|
||||
for(var i = 0, l = urltests.length; i < l; i++) {
|
||||
var expected = urltests[i]
|
||||
if (typeof expected === "string") continue // skip comments
|
||||
|
||||
test(function() {
|
||||
if (expected.failure) {
|
||||
assert_throws(new TypeError(), function() {
|
||||
bURL(expected.input, expected.base)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
var url = bURL(expected.input, expected.base)
|
||||
assert_equals(url.href, expected.href, "href")
|
||||
if ("origin" in expected) {
|
||||
assert_equals(url.origin, expected.origin, "origin")
|
||||
}
|
||||
assert_equals(url.protocol, expected.protocol, "protocol")
|
||||
assert_equals(url.username, expected.username, "username")
|
||||
assert_equals(url.password, expected.password, "password")
|
||||
assert_equals(url.host, expected.host, "host")
|
||||
assert_equals(url.hostname, expected.hostname, "hostname")
|
||||
assert_equals(url.port, expected.port, "port")
|
||||
assert_equals(url.pathname, expected.pathname, "pathname")
|
||||
assert_equals(url.search, expected.search, "search")
|
||||
if ("searchParams" in expected) {
|
||||
assert_true("searchParams" in url)
|
||||
assert_equals(url.searchParams.toString(), expected.searchParams, "searchParams")
|
||||
}
|
||||
assert_equals(url.hash, expected.hash, "hash")
|
||||
}, "Parsing: <" + expected.input + "> against <" + expected.base + ">")
|
||||
}
|
||||
}
|
||||
|
||||
function runURLSearchParamTests() {
|
||||
test(function() {
|
||||
var url = bURL('http://example.org/?a=b')
|
||||
assert_true("searchParams" in url)
|
||||
var searchParams = url.searchParams
|
||||
assert_true(url.searchParams === searchParams, 'Object identity should hold.')
|
||||
}, 'URL.searchParams getter')
|
||||
|
||||
test(function() {
|
||||
var url = bURL('http://example.org/?a=b')
|
||||
assert_true("searchParams" in url)
|
||||
var searchParams = url.searchParams
|
||||
assert_equals(searchParams.toString(), 'a=b')
|
||||
|
||||
searchParams.set('a', 'b')
|
||||
assert_equals(url.searchParams.toString(), 'a=b')
|
||||
assert_equals(url.search, '?a=b')
|
||||
url.search = ''
|
||||
assert_equals(url.searchParams.toString(), '')
|
||||
assert_equals(url.search, '')
|
||||
assert_equals(searchParams.toString(), '')
|
||||
}, 'URL.searchParams updating, clearing')
|
||||
|
||||
test(function() {
|
||||
'use strict'
|
||||
var urlString = 'http://example.org'
|
||||
var url = bURL(urlString)
|
||||
assert_throws(TypeError(), function() { url.searchParams = new URLSearchParams(urlString) })
|
||||
}, 'URL.searchParams setter, invalid values')
|
||||
|
||||
test(function() {
|
||||
var url = bURL('http://example.org/file?a=b&c=d')
|
||||
assert_true("searchParams" in url)
|
||||
var searchParams = url.searchParams
|
||||
assert_equals(url.search, '?a=b&c=d')
|
||||
assert_equals(searchParams.toString(), 'a=b&c=d')
|
||||
|
||||
// Test that setting 'search' propagates to the URL object's query object.
|
||||
url.search = 'e=f&g=h'
|
||||
assert_equals(url.search, '?e=f&g=h')
|
||||
assert_equals(searchParams.toString(), 'e=f&g=h')
|
||||
|
||||
// ..and same but with a leading '?'.
|
||||
url.search = '?e=f&g=h'
|
||||
assert_equals(url.search, '?e=f&g=h')
|
||||
assert_equals(searchParams.toString(), 'e=f&g=h')
|
||||
|
||||
// And in the other direction, altering searchParams propagates
|
||||
// back to 'search'.
|
||||
searchParams.append('i', ' j ')
|
||||
assert_equals(url.search, '?e=f&g=h&i=+j+')
|
||||
assert_equals(url.searchParams.toString(), 'e=f&g=h&i=+j+')
|
||||
assert_equals(searchParams.get('i'), ' j ')
|
||||
|
||||
searchParams.set('e', 'updated')
|
||||
assert_equals(url.search, '?e=updated&g=h&i=+j+')
|
||||
assert_equals(searchParams.get('e'), 'updated')
|
||||
|
||||
var url2 = bURL('http://example.org/file??a=b&c=d')
|
||||
assert_equals(url2.search, '??a=b&c=d')
|
||||
assert_equals(url2.searchParams.toString(), '%3Fa=b&c=d')
|
||||
|
||||
url2.href = 'http://example.org/file??a=b'
|
||||
assert_equals(url2.search, '??a=b')
|
||||
assert_equals(url2.searchParams.toString(), '%3Fa=b')
|
||||
}, 'URL.searchParams and URL.search setters, update propagation')
|
||||
}
|
||||
runURLSearchParamTests()
|
||||
runURLConstructorTests()
|
||||
</script>
|
||||
21
testing/web-platform/tests/url/url-domainToUnicode.html
Normal file
21
testing/web-platform/tests/url/url-domainToUnicode.html
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<!doctype html>
|
||||
<meta charset="utf-8">
|
||||
<title></title>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var domain = 'example.org'
|
||||
assert_true(URL.domainToUnicode(domain) === domain, 'Ascii domain should be parsed correctly.')
|
||||
}, 'URL.domainToUnicode valid input')
|
||||
|
||||
test(function() {
|
||||
var domain = 'xn--maana-pta.com'
|
||||
assert_true(URL.domainToUnicode(domain) === 'mañana.com', ' Ascii encoded domain should be parsed correctly.')
|
||||
}, 'URL.domainToUnicode valid encoded input')
|
||||
|
||||
test(function() {
|
||||
var domain = 'http://not.a.domain'
|
||||
assert_true(URL.domainToUnicode(domain) === "", 'Invalid domain should be return an empty string.')
|
||||
}, 'URL.domainToUnicode invalid input')
|
||||
</script>
|
||||
46
testing/web-platform/tests/url/url-setters.html
Normal file
46
testing/web-platform/tests/url/url-setters.html
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<!doctype html>
|
||||
<meta charset=utf-8>
|
||||
<script src=/resources/testharness.js></script>
|
||||
<script src=/resources/testharnessreport.js></script>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
function startURLSettersTests() {
|
||||
var setup = async_test("Loading data…")
|
||||
setup.step(function() {
|
||||
var request = new XMLHttpRequest()
|
||||
request.open("GET", "setters_tests.json")
|
||||
request.send()
|
||||
request.responseType = "json"
|
||||
request.onload = setup.step_func(function() {
|
||||
runURLSettersTests(request.response)
|
||||
setup.done()
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function runURLSettersTests(all_test_cases) {
|
||||
for (var attribute_to_be_set in all_test_cases) {
|
||||
if (attribute_to_be_set == "comment") {
|
||||
continue;
|
||||
}
|
||||
var test_cases = all_test_cases[attribute_to_be_set];
|
||||
for(var i = 0, l = test_cases.length; i < l; i++) {
|
||||
var test_case = test_cases[i];
|
||||
var name = "Setting <" + test_case.href + ">." + attribute_to_be_set +
|
||||
" = '" + test_case.new_value + "'";
|
||||
if ("comment" in test_case) {
|
||||
name += " " + test_case.comment;
|
||||
}
|
||||
test(function() {
|
||||
var url = new URL(test_case.href);
|
||||
url[attribute_to_be_set] = test_case.new_value;
|
||||
for (var attribute in test_case.expected) {
|
||||
assert_equals(url[attribute], test_case.expected[attribute])
|
||||
}
|
||||
}, name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
startURLSettersTests()
|
||||
</script>
|
||||
51
testing/web-platform/tests/url/urlsearchparams-append.html
Normal file
51
testing/web-platform/tests/url/urlsearchparams-append.html
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-append">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b');
|
||||
assert_equals(params + '', 'a=b');
|
||||
params.append('a', 'b');
|
||||
assert_equals(params + '', 'a=b&a=b');
|
||||
params.append('a', 'c');
|
||||
assert_equals(params + '', 'a=b&a=b&a=c');
|
||||
}, 'Append same name');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('', '');
|
||||
assert_equals(params + '', '=');
|
||||
params.append('', '');
|
||||
assert_equals(params + '', '=&=');
|
||||
}, 'Append empty strings');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append(null, null);
|
||||
assert_equals(params + '', 'null=null');
|
||||
params.append(null, null);
|
||||
assert_equals(params + '', 'null=null&null=null');
|
||||
}, 'Append null');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('first', 1);
|
||||
params.append('second', 2);
|
||||
params.append('third', '');
|
||||
params.append('first', 10);
|
||||
assert_true(params.has('first'), 'Search params object has name "first"');
|
||||
assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
|
||||
assert_equals(params.get('second'), '2', 'Search params object has name "second" with value "2"');
|
||||
assert_equals(params.get('third'), '', 'Search params object has name "third" with value ""');
|
||||
params.append('first', 10);
|
||||
assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
|
||||
}, 'Append multiple');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
129
testing/web-platform/tests/url/urlsearchparams-constructor.html
Normal file
129
testing/web-platform/tests/url/urlsearchparams-constructor.html
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#urlsearchparams">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
assert_equals(params + '', '');
|
||||
params = new URLSearchParams('');
|
||||
assert_equals(params + '', '');
|
||||
params = new URLSearchParams('a=b');
|
||||
assert_equals(params + '', 'a=b');
|
||||
params = new URLSearchParams(params);
|
||||
assert_equals(params + '', 'a=b');
|
||||
}, 'Basic URLSearchParams construction');
|
||||
|
||||
test(function() {
|
||||
assert_throws(new TypeError(), function () { URLSearchParams(); },
|
||||
'Calling \'URLSearchParams\' without \'new\' should throw.');
|
||||
assert_throws(new TypeError(), function () { new URLSearchParams(DOMException.prototype); });
|
||||
var params = new URLSearchParams('');
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_equals(params.__proto__, URLSearchParams.prototype, 'expected URLSearchParams.prototype as prototype.');
|
||||
params = new URLSearchParams({});
|
||||
assert_equals(params + '', '%5Bobject+Object%5D=');
|
||||
}, 'URLSearchParams constructor, empty.');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b');
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_false(params.has('b'), 'Search params object has not got name "b"');
|
||||
var params = new URLSearchParams('a=b&c');
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_true(params.has('c'), 'Search params object has name "c"');
|
||||
var params = new URLSearchParams('&a&&& &&&&&a+b=& c&m%c3%b8%c3%b8');
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_true(params.has('a b'), 'Search params object has name "a b"');
|
||||
assert_true(params.has(' '), 'Search params object has name " "');
|
||||
assert_false(params.has('c'), 'Search params object did not have the name "c"');
|
||||
assert_true(params.has(' c'), 'Search params object has name " c"');
|
||||
assert_true(params.has('møø'), 'Search params object has name "møø"');
|
||||
}, 'URLSearchParams constructor, string.');
|
||||
|
||||
test(function() {
|
||||
var seed = new URLSearchParams('a=b&c=d');
|
||||
var params = new URLSearchParams(seed);
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_equals(params.get('a'), 'b');
|
||||
assert_equals(params.get('c'), 'd');
|
||||
assert_false(params.has('d'));
|
||||
// The name-value pairs are copied when created; later updates
|
||||
// should not be observable.
|
||||
seed.append('e', 'f');
|
||||
assert_false(params.has('e'));
|
||||
params.append('g', 'h');
|
||||
assert_false(seed.has('g'));
|
||||
}, 'URLSearchParams constructor, object.');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b+c');
|
||||
assert_equals(params.get('a'), 'b c');
|
||||
params = new URLSearchParams('a+b=c');
|
||||
assert_equals(params.get('a b'), 'c');
|
||||
}, 'Parse +');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b c');
|
||||
assert_equals(params.get('a'), 'b c');
|
||||
params = new URLSearchParams('a b=c');
|
||||
assert_equals(params.get('a b'), 'c');
|
||||
}, 'Parse space');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b%20c');
|
||||
assert_equals(params.get('a'), 'b c');
|
||||
params = new URLSearchParams('a%20b=c');
|
||||
assert_equals(params.get('a b'), 'c');
|
||||
}, 'Parse %20');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b\0c');
|
||||
assert_equals(params.get('a'), 'b\0c');
|
||||
params = new URLSearchParams('a\0b=c');
|
||||
assert_equals(params.get('a\0b'), 'c');
|
||||
}, 'Parse \\0');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b%00c');
|
||||
assert_equals(params.get('a'), 'b\0c');
|
||||
params = new URLSearchParams('a%00b=c');
|
||||
assert_equals(params.get('a\0b'), 'c');
|
||||
}, 'Parse %00');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b\u2384');
|
||||
assert_equals(params.get('a'), 'b\u2384');
|
||||
params = new URLSearchParams('a\u2384b=c');
|
||||
assert_equals(params.get('a\u2384b'), 'c');
|
||||
}, 'Parse \u2384'); // Unicode Character 'COMPOSITION SYMBOL' (U+2384)
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b%e2%8e%84');
|
||||
assert_equals(params.get('a'), 'b\u2384');
|
||||
params = new URLSearchParams('a%e2%8e%84b=c');
|
||||
assert_equals(params.get('a\u2384b'), 'c');
|
||||
}, 'Parse %e2%8e%84'); // Unicode Character 'COMPOSITION SYMBOL' (U+2384)
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b\uD83D\uDCA9c');
|
||||
assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
|
||||
params = new URLSearchParams('a\uD83D\uDCA9b=c');
|
||||
assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
|
||||
}, 'Parse \uD83D\uDCA9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b%f0%9f%92%a9c');
|
||||
assert_equals(params.get('a'), 'b\uD83D\uDCA9c');
|
||||
params = new URLSearchParams('a%f0%9f%92%a9b=c');
|
||||
assert_equals(params.get('a\uD83D\uDCA9b'), 'c');
|
||||
}, 'Parse %f0%9f%92%a9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
42
testing/web-platform/tests/url/urlsearchparams-delete.html
Normal file
42
testing/web-platform/tests/url/urlsearchparams-delete.html
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-delete">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d');
|
||||
params.delete('a');
|
||||
assert_equals(params + '', 'c=d');
|
||||
params = new URLSearchParams('a=a&b=b&a=a&c=c');
|
||||
params.delete('a');
|
||||
assert_equals(params + '', 'b=b&c=c');
|
||||
params = new URLSearchParams('a=a&=&b=b&c=c');
|
||||
params.delete('');
|
||||
assert_equals(params + '', 'a=a&b=b&c=c');
|
||||
params = new URLSearchParams('a=a&null=null&b=b');
|
||||
params.delete(null);
|
||||
assert_equals(params + '', 'a=a&b=b');
|
||||
params = new URLSearchParams('a=a&undefined=undefined&b=b');
|
||||
params.delete(undefined);
|
||||
assert_equals(params + '', 'a=a&b=b');
|
||||
}, 'Delete basics');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('first', 1);
|
||||
assert_true(params.has('first'), 'Search params object has name "first"');
|
||||
assert_equals(params.get('first'), '1', 'Search params object has name "first" with value "1"');
|
||||
params.delete('first');
|
||||
assert_false(params.has('first'), 'Search params object has no "first" name');
|
||||
params.append('first', 1);
|
||||
params.append('first', 10);
|
||||
params.delete('first');
|
||||
assert_false(params.has('first'), 'Search params object has no "first" name');
|
||||
}, 'Deleting appended multiple');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
33
testing/web-platform/tests/url/urlsearchparams-get.html
Normal file
33
testing/web-platform/tests/url/urlsearchparams-get.html
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-get">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d');
|
||||
assert_equals(params.get('a'), 'b');
|
||||
assert_equals(params.get('c'), 'd');
|
||||
assert_equals(params.get('e'), null);
|
||||
params = new URLSearchParams('a=b&c=d&a=e');
|
||||
assert_equals(params.get('a'), 'b');
|
||||
params = new URLSearchParams('=b&c=d');
|
||||
assert_equals(params.get(''), 'b');
|
||||
params = new URLSearchParams('a=&c=d&a=e');
|
||||
assert_equals(params.get('a'), '');
|
||||
}, 'Get basics');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('first=second&third&&');
|
||||
assert_true(params != null, 'constructor returned non-null value.');
|
||||
assert_true(params.has('first'), 'Search params object has name "first"');
|
||||
assert_equals(params.get('first'), 'second', 'Search params object has name "first" with value "second"');
|
||||
assert_equals(params.get('third'), '', 'Search params object has name "third" with the empty value.');
|
||||
assert_equals(params.get('fourth'), null, 'Search params object has no "fourth" name and value.');
|
||||
}, 'More get() basics');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
37
testing/web-platform/tests/url/urlsearchparams-getall.html
Normal file
37
testing/web-platform/tests/url/urlsearchparams-getall.html
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-getAll">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d');
|
||||
assert_array_equals(params.getAll('a'), ['b']);
|
||||
assert_array_equals(params.getAll('c'), ['d']);
|
||||
assert_array_equals(params.getAll('e'), []);
|
||||
params = new URLSearchParams('a=b&c=d&a=e');
|
||||
assert_array_equals(params.getAll('a'), ['b', 'e']);
|
||||
params = new URLSearchParams('=b&c=d');
|
||||
assert_array_equals(params.getAll(''), ['b']);
|
||||
params = new URLSearchParams('a=&c=d&a=e');
|
||||
assert_array_equals(params.getAll('a'), ['', 'e']);
|
||||
}, 'getAll() basics');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=1&a=2&a=3&a');
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
var matches = params.getAll('a');
|
||||
assert_true(matches && matches.length == 4, 'Search params object has values for name "a"');
|
||||
assert_array_equals(matches, ['1', '2', '3', ''], 'Search params object has expected name "a" values');
|
||||
params.set('a', 'one');
|
||||
assert_equals(params.get('a'), 'one', 'Search params object has name "a" with value "one"');
|
||||
var matches = params.getAll('a');
|
||||
assert_true(matches && matches.length == 1, 'Search params object has values for name "a"');
|
||||
assert_array_equals(matches, ['one'], 'Search params object has expected name "a" values');
|
||||
}, 'getAll() multiples');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
36
testing/web-platform/tests/url/urlsearchparams-has.html
Normal file
36
testing/web-platform/tests/url/urlsearchparams-has.html
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-has">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d');
|
||||
assert_true(params.has('a'));
|
||||
assert_true(params.has('c'));
|
||||
assert_false(params.has('e'));
|
||||
params = new URLSearchParams('a=b&c=d&a=e');
|
||||
assert_true(params.has('a'));
|
||||
params = new URLSearchParams('=b&c=d');
|
||||
assert_true(params.has(''));
|
||||
params = new URLSearchParams('null=a');
|
||||
assert_true(params.has(null));
|
||||
}, 'Has basics');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d&&');
|
||||
params.append('first', 1);
|
||||
params.append('first', 2);
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_true(params.has('c'), 'Search params object has name "c"');
|
||||
assert_true(params.has('first'), 'Search params object has name "first"');
|
||||
assert_false(params.has('d'), 'Search params object has no name "d"');
|
||||
params.delete('first');
|
||||
assert_false(params.has('first'), 'Search params object has no name "first"');
|
||||
}, 'has() following delete()');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
35
testing/web-platform/tests/url/urlsearchparams-set.html
Normal file
35
testing/web-platform/tests/url/urlsearchparams-set.html
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-set">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=b&c=d');
|
||||
params.set('a', 'B');
|
||||
assert_equals(params + '', 'a=B&c=d');
|
||||
params = new URLSearchParams('a=b&c=d&a=e');
|
||||
params.set('a', 'B');
|
||||
assert_equals(params + '', 'a=B&c=d')
|
||||
params.set('e', 'f');
|
||||
assert_equals(params + '', 'a=B&c=d&e=f')
|
||||
}, 'Set basics');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams('a=1&a=2&a=3');
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
|
||||
params.set('first', 4);
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_equals(params.get('a'), '1', 'Search params object has name "a" with value "1"');
|
||||
params.set('a', 4);
|
||||
assert_true(params.has('a'), 'Search params object has name "a"');
|
||||
assert_equals(params.get('a'), '4', 'Search params object has name "a" with value "4"');
|
||||
}, 'URLSearchParams.set');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
|
||||
123
testing/web-platform/tests/url/urlsearchparams-stringifier.html
Normal file
123
testing/web-platform/tests/url/urlsearchparams-stringifier.html
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf8">
|
||||
<link rel="help" href="http://url.spec.whatwg.org/#dom-urlsearchparams-set">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/testharness-extras.js"></script>
|
||||
<script>
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b c');
|
||||
assert_equals(params + '', 'a=b+c');
|
||||
params.delete('a');
|
||||
params.append('a b', 'c');
|
||||
assert_equals(params + '', 'a+b=c');
|
||||
}, 'Serialize space');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', '');
|
||||
assert_equals(params + '', 'a=');
|
||||
params.append('a', '');
|
||||
assert_equals(params + '', 'a=&a=');
|
||||
params.append('', 'b');
|
||||
assert_equals(params + '', 'a=&a=&=b');
|
||||
params.append('', '');
|
||||
assert_equals(params + '', 'a=&a=&=b&=');
|
||||
params.append('', '');
|
||||
assert_equals(params + '', 'a=&a=&=b&=&=');
|
||||
}, 'Serialize empty value');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('', 'b');
|
||||
assert_equals(params + '', '=b');
|
||||
params.append('', 'b');
|
||||
assert_equals(params + '', '=b&=b');
|
||||
}, 'Serialize empty name');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('', '');
|
||||
assert_equals(params + '', '=');
|
||||
params.append('', '');
|
||||
assert_equals(params + '', '=&=');
|
||||
}, 'Serialize empty name and value');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b+c');
|
||||
assert_equals(params + '', 'a=b%2Bc');
|
||||
params.delete('a');
|
||||
params.append('a+b', 'c');
|
||||
assert_equals(params + '', 'a%2Bb=c');
|
||||
}, 'Serialize +');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('=', 'a');
|
||||
assert_equals(params + '', '%3D=a');
|
||||
params.append('b', '=');
|
||||
assert_equals(params + '', '%3D=a&b=%3D');
|
||||
}, 'Serialize =');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('&', 'a');
|
||||
assert_equals(params + '', '%26=a');
|
||||
params.append('b', '&');
|
||||
assert_equals(params + '', '%26=a&b=%26');
|
||||
}, 'Serialize &');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', '*-._');
|
||||
assert_equals(params + '', 'a=*-._');
|
||||
params.delete('a');
|
||||
params.append('*-._', 'c');
|
||||
assert_equals(params + '', '*-._=c');
|
||||
}, 'Serialize *-._');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b%c');
|
||||
assert_equals(params + '', 'a=b%25c');
|
||||
params.delete('a');
|
||||
params.append('a%b', 'c');
|
||||
assert_equals(params + '', 'a%25b=c');
|
||||
}, 'Serialize %');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b\0c');
|
||||
assert_equals(params + '', 'a=b%00c');
|
||||
params.delete('a');
|
||||
params.append('a\0b', 'c');
|
||||
assert_equals(params + '', 'a%00b=c');
|
||||
}, 'Serialize \\0');
|
||||
|
||||
test(function() {
|
||||
var params = new URLSearchParams();
|
||||
params.append('a', 'b\uD83D\uDCA9c');
|
||||
assert_equals(params + '', 'a=b%F0%9F%92%A9c');
|
||||
params.delete('a');
|
||||
params.append('a\uD83D\uDCA9b', 'c');
|
||||
assert_equals(params + '', 'a%F0%9F%92%A9b=c');
|
||||
}, 'Serialize \uD83D\uDCA9'); // Unicode Character 'PILE OF POO' (U+1F4A9)
|
||||
|
||||
test(function() {
|
||||
var params;
|
||||
params = new URLSearchParams('a=b&c=d&&e&&');
|
||||
assert_equals(params.toString(), 'a=b&c=d&e=');
|
||||
params = new URLSearchParams('a = b &a=b&c=d%20');
|
||||
assert_equals(params.toString(), 'a+=+b+&a=b&c=d+');
|
||||
// The lone '=' _does_ survive the roundtrip.
|
||||
params = new URLSearchParams('a=&a=b');
|
||||
assert_equals(params.toString(), 'a=&a=b');
|
||||
}, 'URLSearchParams.toString');
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
||||
|
||||
4330
testing/web-platform/tests/url/urltestdata.json
Normal file
4330
testing/web-platform/tests/url/urltestdata.json
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue