Rewrite and add to wpt/cookies/http-state/ordering-tests.html
Here's a mapping from the legacy http-state/ordering-tests.html to its new location which will have a cookie with some variation of test=N in it: ordering0001 => test=1 There's also a couple of few new tests added here. This CL also removes the remaining unused http-state resource files and moves the domain tests up a directory. Bug: 1171495 Change-Id: Ifc567ab42fbd13858975019a7f0e4b0e2571df76 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2676913 Reviewed-by: Lily Chen <chlily@chromium.org> Commit-Queue: Mike Taylor <miketaylr@chromium.org> Cr-Commit-Position: refs/heads/master@{#851320}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
40e182a61e
commit
3c22093c9f
third_party/blink/web_tests/external/wpt
cookies
lint.ignore@ -1,4 +0,0 @@
|
||||
This is a testharness.js-based test.
|
||||
FAIL ordering0001 - ordering0001 assert_equals: expected "key=val5; key=val1; key=val2; key=val4" but got "key=val0; key=val2"
|
||||
Harness: the test ran to completion.
|
||||
|
@ -1,30 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Tests basic cookie setting functionality</title>
|
||||
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="resources/cookie-http-state-template.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<div id="iframes"></div>
|
||||
<script>
|
||||
setup({ explicit_timeout: true });
|
||||
|
||||
const TEST_CASES = [
|
||||
{file: "ordering0001", name: "ordering0001"},
|
||||
];
|
||||
|
||||
for (const i in TEST_CASES) {
|
||||
const t = TEST_CASES[i];
|
||||
promise_test(createCookieTest(t.file),
|
||||
t.file + " - " + t.name);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
71
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/all-tests.html.py-str
vendored
71
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/all-tests.html.py-str
vendored
@ -1,71 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Tests basic cookie setting functionality</title>
|
||||
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="cookie-http-state-template.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Cookie Tests</h1>
|
||||
This page is a debug page for cookie tests. To run a test in isolation,
|
||||
append "?debug=" and the test id to this URL. E.g. to debug "value0001", use
|
||||
this url:<br>
|
||||
<a href="cookie-setter.py?debug=value0001">
|
||||
cookie-setter.py?debug=value0001
|
||||
</a><br>
|
||||
<br>
|
||||
To request, append "?file=" and the file name (stripped of
|
||||
"-tests.html"). For value0001, this would be:<br>
|
||||
<a href="cookie-setter.py?file=value0001">
|
||||
cookie-setter.py?file=value0001
|
||||
</a><br>
|
||||
<br>
|
||||
Please note, the general tests are one level higher:<br>
|
||||
<a href="../attribute-tests.html"> ../attribute-tests.html </a><br>
|
||||
<a href="../charset-tests.html"> ../charset-tests.html </a><br>
|
||||
<a href="../chromium-tests.html"> ../chromium-tests.html </a><br>
|
||||
<a href="../comma-tests.html"> ../comma-tests.html </a><br>
|
||||
<a href="../domain-tests.html"> ../domain-tests.html </a><br>
|
||||
<a href="../general-tests.html"> ../general-tests.html </a><br>
|
||||
<a href="../mozilla-tests.html"> ../mozilla-tests.html </a><br>
|
||||
<a href="../name-tests.html"> ../name-tests.html </a><br>
|
||||
<a href="../ordering-tests.html"> ../ordering-tests.html </a><br>
|
||||
<a href="../path-tests.html"> ../path-tests.html </a><br>
|
||||
<a href="../value-tests.html"> ../value-tests.html </a><br>
|
||||
|
||||
<h2>Current Cookies</h2>
|
||||
These are all cookies, currently set by the browser for this domain: <br>
|
||||
<span id="cookies">(None)</span>
|
||||
<script type="text/javascript">
|
||||
setInterval(() => {
|
||||
document.getElementById("cookies").textContent =
|
||||
document.cookie || "(None)";
|
||||
}, 500);
|
||||
</script>
|
||||
|
||||
<h2>All Tests</h2>
|
||||
Below, all tests are running. The Log contains messages (e.g. when cookies
|
||||
are left over) and the IFrames list preserves all requested files and shows
|
||||
which cookies were expected to show. <br>
|
||||
<div id="log"></div>
|
||||
<div id="iframes"></div>
|
||||
|
||||
<script>
|
||||
setup({ explicit_timeout: true });
|
||||
|
||||
const TEST_CASES = [%s];
|
||||
|
||||
for (const i in TEST_CASES) {
|
||||
const t = TEST_CASES[i];
|
||||
promise_test(createCookieTest(t.file),
|
||||
t.file + " - " + t.name);
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
131
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/cookie-http-state-template.js
vendored
131
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/cookie-http-state-template.js
vendored
@ -1,131 +0,0 @@
|
||||
const SERVER_LOCATION = "resources";
|
||||
const SERVER_SCRIPT = SERVER_LOCATION + "/cookie-setter.py";
|
||||
|
||||
/* Adds a div with "<time> [<tag>] - <message>" to the "#log" container.*/
|
||||
function log(message, tag) {
|
||||
let log_str = document.createElement('div');
|
||||
log_str.textContent = new Date().toTimeString().replace(/\s.+$/, '');
|
||||
if (tag) {
|
||||
log_str.textContent += " [" + tag + "] ";
|
||||
}
|
||||
log_str.textContent += " - " + message;
|
||||
let log_container = document.getElementById("log");
|
||||
log_container.appendChild(log_str);
|
||||
log_container.scrollTo(0, log_container.scrollHeight);
|
||||
}
|
||||
|
||||
/* Removes the "Cookie: " prefix and strip any leading or trailing whitespace.*/
|
||||
function stripPrefixAndWhitespace(cookie_text) {
|
||||
return cookie_text.replace(/^Cookie: /, '').replace(/^\s+|\s+$/g, '');
|
||||
}
|
||||
|
||||
/* Returns the absolute path of the resource folder, ignoring any navigation. */
|
||||
function getLocalResourcesPath() {
|
||||
let replace = "(" + SERVER_LOCATION + "\/)*"; // Redundant location.
|
||||
replace += "[^\/]*$"; // Everything after the last "/".
|
||||
return location.pathname.replace(new RegExp(replace), "") + SERVER_LOCATION;
|
||||
}
|
||||
|
||||
/* Returns the absolute server location ignoring any navgation.*/
|
||||
function getAbsoluteServerLocation() {
|
||||
// Replace the server location and everything coming after it ...
|
||||
let replace = SERVER_LOCATION + ".*$";
|
||||
// ... with the Server script (which includes the server location).
|
||||
return getLocalResourcesPath().replace(new RegExp(replace),'')+ SERVER_SCRIPT;
|
||||
}
|
||||
|
||||
/* Expires a cookie by name by setting it's expiry date into the past.*/
|
||||
function expireCookie(name, expiry_date, path) {
|
||||
name = name || "";
|
||||
expiry_date = expiry_date || "Thu, 01 Jan 1970 00:00:00 UTC";
|
||||
path = path || getLocalResourcesPath();
|
||||
document.cookie = name + "=value; expires=" + expiry_date + "; path=" + path + ";";
|
||||
}
|
||||
|
||||
/* Captures a snapshot of cookies with |parse| and allows to diff it with a
|
||||
second snapshot with |diffWith|. This allows to run tests even if cookies were
|
||||
previously set that would mess with the expected final set of Cookies.
|
||||
With |resetCookies|, all cookies set between first and second snapshot are
|
||||
expired. */
|
||||
function CookieManager() {
|
||||
this.initial_cookies = [];
|
||||
}
|
||||
|
||||
/* Creates a snapshot of the current given document cookies.*/
|
||||
CookieManager.prototype.parse = document_cookies => {
|
||||
this.initial_cookies = [];
|
||||
document_cookies = document_cookies.replace(/^Cookie: /, '');
|
||||
if (document_cookies != "") {
|
||||
this.initial_cookies = document_cookies.split(/\s*;\s*/);
|
||||
}
|
||||
}
|
||||
|
||||
/* Creates a diff of newly added cookies between the initial snapshot and the
|
||||
newly given cookies. The diff is stored for cleaning purposes. A second call
|
||||
will replace the the stored diff entirely.*/
|
||||
CookieManager.prototype.diffWith = document_cookies => {
|
||||
this.actual_cookies = document_cookies;
|
||||
for (let i in initial_cookies) {
|
||||
let no_spaces_cookie_regex =
|
||||
new RegExp(/\s*[\;]*\s/.source + initial_cookies[i].replace(/\\/, "\\\\"));
|
||||
this.actual_cookies = this.actual_cookies.replace(no_spaces_cookie_regex, '');
|
||||
}
|
||||
return this.actual_cookies;
|
||||
}
|
||||
|
||||
/* Cleans cookies between the first and the second snapshot.
|
||||
Some tests might set cookies to the root path or cookies without key. Both cases
|
||||
are dropped here.*/
|
||||
CookieManager.prototype.resetCookies = () => {
|
||||
// If a cookie without keys was accepted, drop it additionally.
|
||||
let cookies_to_delete = [""].concat(this.actual_cookies.split(/\s*;\s*/))
|
||||
for (let i in cookies_to_delete){
|
||||
expireCookie(cookies_to_delete[i].replace(/=.*$/, ""));
|
||||
// Drop cookies with same name that were set to the root path which happens
|
||||
// for example due to "0010" still failing.
|
||||
expireCookie(cookies_to_delete[i].replace(/=.*$/, ""),
|
||||
/*expiry_date=*/null,
|
||||
/*path=*/'/');
|
||||
// Some browsers incorrectly include the final "forward slash" character
|
||||
// when calculating the default path. The expected behavior for default
|
||||
// path calculation is verified elsewhere; this utility accommodates the
|
||||
// non-standard behavior in order to improve the focus of the test suite.
|
||||
expireCookie(cookies_to_delete[i].replace(/=.*$/, ""),
|
||||
/*expiry_date=*/null,
|
||||
/*path=*/getLocalResourcesPath() + "/");
|
||||
}
|
||||
}
|
||||
|
||||
/* Returns a new cookie test.
|
||||
The test creates an iframe where a |file| from the cookie-setter.py is loaded.
|
||||
This sets cookies which are diffed with an initial cookie snapshot and compared
|
||||
to the expectation that the server returned.
|
||||
Finally, it cleans up newly set cookies and all cookies in the root path or
|
||||
without key. */
|
||||
function createCookieTest(file) {
|
||||
return t => {
|
||||
let iframe_container = document.getElementById("iframes");
|
||||
const iframe = document.createElement('iframe');
|
||||
iframe_container.appendChild(iframe);
|
||||
iframe_container.scrollTo(0, iframe_container.scrollHeight);
|
||||
let diff_tool = new CookieManager();
|
||||
t.add_cleanup(diff_tool.resetCookies);
|
||||
return new Promise((resolve, reject) => {
|
||||
diff_tool.parse(document.cookie);
|
||||
if (diff_tool.initial_cookies.length > 0) {
|
||||
// The cookies should ideally be empty. If that isn't the case, log it.
|
||||
//Cookies with equal keys (e.g. foo=) may have unwanted side-effects.
|
||||
log("Run with existing cookies: " + diff_tool.initial_cookies, file);
|
||||
}
|
||||
window.addEventListener("message", t.step_func(e => {
|
||||
assert_true(!!e.data, "Message contains data")
|
||||
resolve(e.data);
|
||||
}));
|
||||
iframe.src = getAbsoluteServerLocation() + "?file=" + file;
|
||||
}).then((response) => {
|
||||
let actual_cookies = diff_tool.diffWith(response.cookies);
|
||||
let expected_cookies = stripPrefixAndWhitespace(response.expectation);
|
||||
assert_equals(actual_cookies, expected_cookies);
|
||||
});
|
||||
}
|
||||
};
|
@ -1,96 +0,0 @@
|
||||
from os import path
|
||||
from os import listdir
|
||||
|
||||
from wptserve.utils import isomorphic_decode
|
||||
|
||||
"""
|
||||
The main purpose of this script is to set cookies based on files in this folder:
|
||||
cookies/http-state/resources
|
||||
|
||||
If a wpt server is running, navigate to
|
||||
http://<server>/cookies/http-state/resources/cookie-setter.py
|
||||
which will run all cookie tests and explain the usage of this script in detail.
|
||||
|
||||
If you want to run a test in isolation, append "?debug=" and the test id to the
|
||||
URL above.
|
||||
"""
|
||||
|
||||
SETUP_FILE_TEMPLATE = u"{}-test"
|
||||
EXPECTATION_FILE_TEMPLATE = u"{}-expected"
|
||||
EXPECTATION_HTML_SCAFFOLD = u"iframe-expectation-doc.html.py-str"
|
||||
DEBUGGING_HTML_SCAFFOLD = u"debugging-single-test.html.py-str"
|
||||
DEFAULT_RESOURCE_DIR = path.join(u"cookies", u"http-state", u"resources")
|
||||
DEFAULT_TEST_DIR = u"test-files"
|
||||
ALL_TESTS = u"all-tests.html.py-str"
|
||||
|
||||
|
||||
def dump_file(directory, filename):
|
||||
"""Reads a file into a byte string."""
|
||||
return open(path.join(directory, filename), "rb").read()
|
||||
|
||||
|
||||
class CookieTestResponse(object):
|
||||
"""Loads the Set-Cookie header from a given file name. Relies on the naming
|
||||
convention that ever test file is called '<test_id>-test' and every
|
||||
expectation is called '<test_id>-expected'."""
|
||||
def __init__(self, file, root):
|
||||
super(CookieTestResponse, self).__init__()
|
||||
self.__test_file = SETUP_FILE_TEMPLATE.format(file)
|
||||
self.__expectation_file = EXPECTATION_FILE_TEMPLATE.format(file)
|
||||
self.__resources_dir = path.join(root, DEFAULT_RESOURCE_DIR)
|
||||
self.__test_files_dir = path.join(self.__resources_dir, DEFAULT_TEST_DIR)
|
||||
|
||||
def cookie_setting_header(self):
|
||||
"""Returns the loaded header."""
|
||||
return dump_file(self.__test_files_dir, self.__test_file)
|
||||
|
||||
def body_with_expectation(self):
|
||||
"""Returns a full HTML document which contains the expectation."""
|
||||
html_frame = dump_file(self.__resources_dir, EXPECTATION_HTML_SCAFFOLD)
|
||||
expected_data = dump_file(self.__test_files_dir, self.__expectation_file)
|
||||
return html_frame.replace(b"{data}", expected_data)
|
||||
|
||||
def find_all_test_files(root):
|
||||
"""Retrieves all files from the test-files/ folder and returns them as
|
||||
string pair as used in the JavaScript object. Sorted by filename."""
|
||||
all_files = []
|
||||
line_template = u'{{file: "{filename}", name: "{filename}"}},'
|
||||
for file in listdir(path.join(root, DEFAULT_RESOURCE_DIR, DEFAULT_TEST_DIR)):
|
||||
if file.endswith(u'-test'):
|
||||
name = file.replace(u'-test', u'')
|
||||
all_files.append(line_template.format(filename=name).encode())
|
||||
all_files.sort()
|
||||
return all_files
|
||||
|
||||
def generate_for_all_tests(root):
|
||||
"""Returns an HTML document which loads and executes all tests in the
|
||||
test-files/ directory."""
|
||||
html_frame = dump_file(path.join(root, DEFAULT_RESOURCE_DIR), ALL_TESTS)
|
||||
return html_frame % b'\n'.join(find_all_test_files(root))
|
||||
|
||||
def main(request, response):
|
||||
if b"debug" in request.GET:
|
||||
"""If '?debug=' is set, return the document for a single test."""
|
||||
response.writer.write_status(200)
|
||||
response.writer.end_headers()
|
||||
html_frame = dump_file(path.join(request.doc_root, DEFAULT_RESOURCE_DIR),
|
||||
DEBUGGING_HTML_SCAFFOLD)
|
||||
test_file = html_frame % (request.GET[b'debug'])
|
||||
response.writer.write_content(test_file)
|
||||
return
|
||||
|
||||
if b"file" in request.GET:
|
||||
"""If '?file=' is set, send a cookie and a document which contains the
|
||||
expectation of which cookies should be set by the browser in response."""
|
||||
cookie_response = CookieTestResponse(isomorphic_decode(request.GET[b'file']), request.doc_root)
|
||||
|
||||
response.writer.write_status(200)
|
||||
response.writer.write(cookie_response.cookie_setting_header())
|
||||
response.writer.end_headers()
|
||||
response.writer.write_content(cookie_response.body_with_expectation())
|
||||
return
|
||||
|
||||
"""Without any arguments, return documentation and run all available tests."""
|
||||
response.writer.write_status(200)
|
||||
response.writer.end_headers()
|
||||
response.writer.write_content(generate_for_all_tests(request.doc_root))
|
21
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/debugging-single-test.html.py-str
vendored
21
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/debugging-single-test.html.py-str
vendored
@ -1,21 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Debug single test</title>
|
||||
<meta name=help href="https://tools.ietf.org/html/rfc6265#page-8">
|
||||
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="cookie-http-state-template.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="log"></div>
|
||||
<div id="iframes"></div>
|
||||
<script>
|
||||
setup({ explicit_timeout: true });
|
||||
|
||||
promise_test(createCookieTest("%s"), "DEBUG");
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
4
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/iframe-content-pushing.js
vendored
4
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/iframe-content-pushing.js
vendored
@ -1,4 +0,0 @@
|
||||
window.top.postMessage({
|
||||
"cookies": document.cookie,
|
||||
"expectation": document.querySelector('#data').innerText
|
||||
}, "*");
|
11
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/iframe-expectation-doc.html.py-str
vendored
11
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/iframe-expectation-doc.html.py-str
vendored
@ -1,11 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Cookie Test Expectation Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="data" style="white-space: pre">{data}</div>
|
||||
<script src="iframe-content-pushing.js"></script>
|
||||
</body>
|
||||
</html>
|
@ -1 +0,0 @@
|
||||
Cookie: key=val5; key=val1; key=val2; key=val4
|
7
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/test-files/ordering0001-test
vendored
7
third_party/blink/web_tests/external/wpt/cookies/http-state/resources/test-files/ordering0001-test
vendored
@ -1,7 +0,0 @@
|
||||
Set-Cookie: key=val0;
|
||||
Set-Cookie: key=val1; path=/cookie-parser-result
|
||||
Set-Cookie: key=val2; path=/
|
||||
Set-Cookie: key=val3; path=/bar
|
||||
Set-Cookie: key=val4; domain=.example.org
|
||||
Set-Cookie: key=val5; domain=.example.org; path=/cookie-parser-result/foo
|
||||
Location: /cookie-parser-result/foo/baz?ordering0001
|
24
third_party/blink/web_tests/external/wpt/cookies/ordering/ordering.sub.html
vendored
Normal file
24
third_party/blink/web_tests/external/wpt/cookies/ordering/ordering.sub.html
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Test cookie ordering</title>
|
||||
<meta name=help href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-07#section-5.5">
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/cookies/resources/cookie-test.js"></script>
|
||||
</head>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const port = "{{ports[http][0]}}";
|
||||
const wwwHost = "{{domains[www]}}";
|
||||
|
||||
test(t => {
|
||||
const win = window.open(`http://${wwwHost}:${port}/cookies/ordering/resources/ordering-child.sub.html`);
|
||||
fetch_tests_from_window(win);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
74
third_party/blink/web_tests/external/wpt/cookies/ordering/resources/ordering-child.sub.html
vendored
Normal file
74
third_party/blink/web_tests/external/wpt/cookies/ordering/resources/ordering-child.sub.html
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset=utf-8>
|
||||
<title>Test cookie ordering</title>
|
||||
<meta name=help href="https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-07#section-5.5">
|
||||
<meta name="timeout" content="long">
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/cookies/resources/cookie-test.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id=log></div>
|
||||
<script>
|
||||
const host = "{{host}}";
|
||||
const wwwHost = "{{domains[www]}}";
|
||||
|
||||
const orderingTests = [
|
||||
{
|
||||
cookie: [
|
||||
"testA=1",
|
||||
"testB=1; path=/cookies",
|
||||
"testC=1; path=/",
|
||||
"testD=1; path=/cooking",
|
||||
`testE=1; domain=.${host}; path=/`,
|
||||
`testF=1; domain=.${host}; path=/cookies/attributes`,
|
||||
],
|
||||
expected: "testF=1; testB=1; testC=1; testE=1",
|
||||
name: "Cookies with longer path attribute values are ordered before shorter ones",
|
||||
location: "/cookies/attributes/resources/path/one.html",
|
||||
},
|
||||
{
|
||||
cookie: [
|
||||
"testA=2",
|
||||
"testB=2; path=/cookies/attributes/resources",
|
||||
"testC=2; path=/",
|
||||
"testD=2; path=/cooking",
|
||||
`testE=2; domain=.${host}`,
|
||||
`testF=2; domain=.${host}; path=/cookies/attributes`,
|
||||
`testG=2; domain=.${host}; path=/cookies/attributes/resources/path`,
|
||||
"testH=2; path=/cookies",
|
||||
],
|
||||
expected: "testG=2; testB=2; testF=2; testH=2; testC=2",
|
||||
name: "Cookies with longer path attribute values are ordered before shorter ones (2)",
|
||||
location: "/cookies/attributes/resources/path/one.html",
|
||||
},
|
||||
{
|
||||
cookie: [
|
||||
"testA=3; path=/cookies/attributes/resources/path",
|
||||
"testB=3; path=/cookies/attributes/resources/path/one.html",
|
||||
"testC=3; path=/cookies/attributes",
|
||||
],
|
||||
expected: "testB=3; testA=3; testC=3",
|
||||
name: "Cookies with longer paths are listed before cookies with shorter paths",
|
||||
location: "/cookies/attributes/resources/path/one.html",
|
||||
},
|
||||
{
|
||||
cookie: [
|
||||
"testZ=4; path=/cookies",
|
||||
"testB=4; path=/cookies/attributes/resources/path",
|
||||
"testA=4; path=/cookies",
|
||||
],
|
||||
expected: "testB=4; testZ=4; testA=4",
|
||||
name: "For equal length paths, list the cookie with an earlier creation time first",
|
||||
location: "/cookies/attributes/resources/path/one.html",
|
||||
},
|
||||
];
|
||||
|
||||
for (const test of orderingTests) {
|
||||
httpRedirectCookieTest(test.cookie, test.expected, test.name,
|
||||
test.location);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -95,7 +95,6 @@ TRAILING WHITESPACE: server-timing/resources/parsing/*
|
||||
TRAILING WHITESPACE: webvtt/parsing/file-parsing/support/*.vtt
|
||||
TRAILING WHITESPACE: webvtt/parsing/file-parsing/tests/support/*.vtt
|
||||
TRAILING WHITESPACE: xhr/resources/headers-some-are-empty.asis
|
||||
TRAILING WHITESPACE: cookies/http-state/resources/test-files/*
|
||||
|
||||
# Intentional use of print statements
|
||||
PRINT STATEMENT: dom/nodes/Document-createElement-namespace-tests/generate.py
|
||||
|
Reference in New Issue
Block a user