From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- .../tests/html/semantics/links/META.yml | 2 + .../header-origin-no-referrer-when-downgrade.html | 20 ++++++ .../header-origin-no-referrer.html | 20 ++++++ .../header-origin-origin-when-cross-origin.html | 20 ++++++ .../header-origin-origin.html | 20 ++++++ .../header-origin-same-origin.html | 20 ++++++ ...der-origin-strict-origin-when-cross-origin.html | 20 ++++++ .../header-origin-strict-origin.html | 20 ++++++ .../header-origin-unsafe-url.html | 20 ++++++ .../links/downloading-resources/header-origin.html | 19 ++++++ .../links/downloading-resources/header-origin.js | 40 +++++++++++ ...header-referrer-no-referrer-when-downgrade.html | 20 ++++++ .../header-referrer-no-referrer.html | 20 ++++++ .../header-referrer-origin-when-cross-origin.html | 20 ++++++ .../header-referrer-origin.html | 20 ++++++ .../header-referrer-same-origin.html | 20 ++++++ ...r-referrer-strict-origin-when-cross-origin.html | 20 ++++++ .../header-referrer-strict-origin.html | 20 ++++++ .../header-referrer-unsafe-url.html | 20 ++++++ .../downloading-resources/header-referrer.html | 19 ++++++ .../links/downloading-resources/header-referrer.js | 40 +++++++++++ .../resources/inspect-header.py | 18 +++++ .../activation-behavior.window.js | 50 ++++++++++++++ .../following-hyperlinks/active-document.window.js | 23 +++++++ .../links/hyperlink-auditing/headers.optional.html | 55 +++++++++++++++ .../hyperlink-auditing/resources/stash-headers.py | 27 ++++++++ .../htmlanchorelement_attribute-getter-setter.html | 65 ++++++++++++++++++ .../htmlanchorelement_getter.html | 48 +++++++++++++ .../htmlanchorelement_noopener.html | 78 ++++++++++++++++++++++ .../non-parsable-url-getter-setter.window.js | 54 +++++++++++++++ ...special-opaque-path-url-getter-setter.window.js | 59 ++++++++++++++++ .../non-special-url-getter-setter.window.js | 63 +++++++++++++++++ .../support/noopener-popup.html | 19 ++++++ .../support/noopener-target-1.html | 4 ++ .../support/noopener-target-2.html | 8 +++ .../support/target_blank_implicit_noopener.html | 6 ++ .../target_blank_implicit_noopener.html | 58 ++++++++++++++++ .../target_blank_implicit_noopener_base.html | 59 ++++++++++++++++ .../links/linktypes/alternate-css-ref.html | 5 ++ .../semantics/links/linktypes/alternate-css.html | 7 ++ .../semantics/links/linktypes/alternate-import.css | 3 + .../html/semantics/links/linktypes/alternate.css | 5 ++ ...inked-resource-ascii-case-insensitive-lower.css | 1 + ...inked-resource-ascii-case-insensitive-mixed.css | 1 + ...inked-resource-ascii-case-insensitive-other.css | 1 + ...linked-resource-ascii-case-insensitive-ref.html | 9 +++ ...heet-linked-resource-ascii-case-insensitive.css | 3 + ...eet-linked-resource-ascii-case-insensitive.html | 14 ++++ .../semantics/links/linktypes/original-id.json | 1 + .../html/semantics/links/linktypes/preferred.css | 3 + 50 files changed, 1187 insertions(+) create mode 100644 testing/web-platform/tests/html/semantics/links/META.yml create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-same-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.js create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-same-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.html create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.js create mode 100644 testing/web-platform/tests/html/semantics/links/downloading-resources/resources/inspect-header.py create mode 100644 testing/web-platform/tests/html/semantics/links/following-hyperlinks/activation-behavior.window.js create mode 100644 testing/web-platform/tests/html/semantics/links/following-hyperlinks/active-document.window.js create mode 100644 testing/web-platform/tests/html/semantics/links/hyperlink-auditing/headers.optional.html create mode 100644 testing/web-platform/tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-parsable-url-getter-setter.window.js create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-opaque-path-url-getter-setter.window.js create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-url-getter-setter.window.js create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-popup.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-1.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-2.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_implicit_noopener.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html create mode 100644 testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/alternate-css-ref.html create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/alternate-css.html create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/alternate-import.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/alternate.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-lower.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-mixed.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-other.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-ref.html create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.css create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/original-id.json create mode 100644 testing/web-platform/tests/html/semantics/links/linktypes/preferred.css (limited to 'testing/web-platform/tests/html/semantics/links') diff --git a/testing/web-platform/tests/html/semantics/links/META.yml b/testing/web-platform/tests/html/semantics/links/META.yml new file mode 100644 index 0000000000..b2167370d1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/META.yml @@ -0,0 +1,2 @@ +suggested_reviewers: + - annevk diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html new file mode 100644 index 0000000000..466868dd7b --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer-when-downgrade.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header No Referrer When Downgrade Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html new file mode 100644 index 0000000000..cd7a1804f3 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-no-referrer.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header No Referrer Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html new file mode 100644 index 0000000000..98115aa653 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin-when-cross-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Origin When Cross Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin.html new file mode 100644 index 0000000000..194ca9d4ad --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-same-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-same-origin.html new file mode 100644 index 0000000000..eb86708d5b --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-same-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Same Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html new file mode 100644 index 0000000000..f6514ff2ae --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin-when-cross-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Strict Origin When Cross Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html new file mode 100644 index 0000000000..4aa311e833 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-strict-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Strict Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html new file mode 100644 index 0000000000..59742404fe --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin-unsafe-url.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Origin Header Unsafe Url Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.html new file mode 100644 index 0000000000..189e2e66d4 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.html @@ -0,0 +1,19 @@ + + + + + Ping attribute Origin no Referrer Policy + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.js b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.js new file mode 100644 index 0000000000..acc62ef93b --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-origin.js @@ -0,0 +1,40 @@ +const RESOURCES_DIR = "/html/semantics/links/downloading-resources/resources/"; + +function testOriginHeader(expectedOrigin) { + var id = self.token(); + let testUrl = RESOURCES_DIR + "inspect-header.py?header=origin&cmd=put&id=" + id; + + promise_test(function(test) { + const anchor = document.getElementById("a"); + anchor.setAttribute("ping", testUrl); + anchor.click(); + return pollResult(id) .then(result => { + assert_equals(result, expectedOrigin, "Correct origin header result"); + }); + }, "Test origin header " + RESOURCES_DIR); +} + +// Sending a ping is an asynchronous and non-blocking request to a web server. +// We may have to create a poll loop to get result from server +function pollResult(id) { + let checkUrl = RESOURCES_DIR + "inspect-header.py?header=origin&cmd=get&id=" + id; + + return new Promise(resolve => { + function checkResult() { + fetch(checkUrl).then( + function(response) { + assert_equals(response.status, 200, "Inspect header response's status is 200"); + let result = response.headers.get("x-request-origin"); + + if (result != undefined) { + resolve(result); + } else { + step_timeout(checkResult.bind(this), 100); + } + }); + } + + checkResult(); + }); + +} diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade.html new file mode 100644 index 0000000000..96c19d1d0e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer-when-downgrade.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header No Referrer When Downgrade Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer.html new file mode 100644 index 0000000000..065063075c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-no-referrer.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header No Referrer Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin.html new file mode 100644 index 0000000000..f0394261a1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin-when-cross-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Origin When Cross Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin.html new file mode 100644 index 0000000000..bef435581c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-same-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-same-origin.html new file mode 100644 index 0000000000..19b2d022af --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-same-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Same Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin.html new file mode 100644 index 0000000000..95132eee5c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin-when-cross-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Strict Origin When Cross Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin.html new file mode 100644 index 0000000000..e2678e8de8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-strict-origin.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Strict Origin Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url.html new file mode 100644 index 0000000000..cc3d1dde86 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer-unsafe-url.html @@ -0,0 +1,20 @@ + + + + + Ping attribute Referrer Header Unsafe Url Policy + + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.html b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.html new file mode 100644 index 0000000000..5e2d136443 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.html @@ -0,0 +1,19 @@ + + + + + Ping attribute no Referrer Header given + + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.js b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.js new file mode 100644 index 0000000000..818649fbff --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/header-referrer.js @@ -0,0 +1,40 @@ +const RESOURCES_DIR = "/html/semantics/links/downloading-resources/resources/"; + +function testReferrerHeader(expectedReferrer) { + let id = self.token(); + let testUrl = RESOURCES_DIR + "inspect-header.py?header=referer&cmd=put&id=" + id; + + promise_test(function(test) { + const anchor = document.getElementById("a"); + anchor.setAttribute("ping", testUrl); + anchor.click(); + return pollResult(id) .then(result => { + assert_equals(result, expectedReferrer, "Correct referrer header result"); + }); + }, "Test referer header " + RESOURCES_DIR); +} + +// Sending a ping is an asynchronous and non-blocking request to a web server. +// We may have to create a poll loop to get result from server +function pollResult(id) { + let checkUrl = RESOURCES_DIR + "inspect-header.py?header=referer&cmd=get&id=" + id; + + return new Promise(resolve => { + function checkResult() { + fetch(checkUrl).then( + function(response) { + assert_equals(response.status, 200, "Inspect header response's status is 200"); + let result = response.headers.get("x-request-referer"); + + if (result != undefined) { + resolve(result); + } else { + step_timeout(checkResult.bind(this), 100); + } + }); + } + + checkResult(); + }); + +} diff --git a/testing/web-platform/tests/html/semantics/links/downloading-resources/resources/inspect-header.py b/testing/web-platform/tests/html/semantics/links/downloading-resources/resources/inspect-header.py new file mode 100644 index 0000000000..2c68e475ff --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/downloading-resources/resources/inspect-header.py @@ -0,0 +1,18 @@ +def main(request, response): + headers = [(b"Content-Type", b"text/plain")] + command = request.GET.first(b"cmd").lower() + test_id = request.GET.first(b"id") + header = request.GET.first(b"header") + if command == b"put": + request.server.stash.put(test_id, request.headers.get(header, b"")) + + elif command == b"get": + stashed_header = request.server.stash.take(test_id) + if stashed_header is not None: + headers.append((b"x-request-" + header, stashed_header)) + + else: + response.set_error(400, u"Bad Command") + return b"ERROR: Bad Command!" + + return headers, b"" diff --git a/testing/web-platform/tests/html/semantics/links/following-hyperlinks/activation-behavior.window.js b/testing/web-platform/tests/html/semantics/links/following-hyperlinks/activation-behavior.window.js new file mode 100644 index 0000000000..d530642b9e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/following-hyperlinks/activation-behavior.window.js @@ -0,0 +1,50 @@ +["a", + "area"].forEach(type => { + + const followed = type === "a" ? true : false; + async_test(t => { + const target = document.createElement("iframe"), + link = document.createElement(type); + t.add_cleanup(() => target.remove()); + target.name = "certifiedrandom" + type; + link.target = "certifiedrandom" + type; + link.href = "/"; + document.body.appendChild(target); + target.onload = t.step_func(() => { + if(target.contentWindow.location.href === "about:blank") + return; + if(followed) { + assert_equals(target.contentWindow.location.pathname, "/"); + t.done(); + } else { + assert_unreached(); + } + }); + link.click(); + t.step_timeout(() => { + if(followed) { + assert_unreached(); + } else { + t.done(); + } + }, 500); + }, "<" + type + "> that is not connected should " + (followed ? "" : "not ") + "be followed"); + + async_test(t => { + const target = document.createElement("iframe"), + doc = document.implementation.createDocument("", ""), + link = doc.createElementNS("http://www.w3.org/1999/xhtml", type); + t.add_cleanup(() => target.remove()); + target.name = "certifiedrandom2" + type; + link.target = "certifiedrandom2" + type; + link.href = "/"; + document.body.appendChild(target); + target.onload = t.step_func(() => { + if(target.contentWindow.location.href === "about:blank") + return; + assert_unreached(); + }); + link.click(); + t.step_timeout(() => t.done(), 500); + }, "<" + type + "> that is from an inactive document should not be followed"); +}); diff --git a/testing/web-platform/tests/html/semantics/links/following-hyperlinks/active-document.window.js b/testing/web-platform/tests/html/semantics/links/following-hyperlinks/active-document.window.js new file mode 100644 index 0000000000..efa16e7d17 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/following-hyperlinks/active-document.window.js @@ -0,0 +1,23 @@ +["a", + "area", + "link"].forEach(type => { + async_test(t => { + const frame = document.createElement("iframe"), + link = document.createElement(type); + t.add_cleanup(() => frame.remove()); + frame.onload = t.step_func(() => { + // See https://github.com/whatwg/html/issues/490 + if(frame.contentWindow.location.href === "about:blank") + return; + link.click(); // must be ignored because document is not active + t.step_timeout(() => { + assert_equals(frame.contentWindow.location.pathname, "/common/blank.html"); + t.done(); + }, 500); + }); + document.body.appendChild(frame); + frame.contentDocument.body.appendChild(link); + link.href = "/"; + frame.src = "/common/blank.html"; + }, "<" + type + "> in navigated away + + + + diff --git a/testing/web-platform/tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py b/testing/web-platform/tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py new file mode 100644 index 0000000000..a0d4a38812 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/hyperlink-auditing/resources/stash-headers.py @@ -0,0 +1,27 @@ +import json +from wptserve.utils import isomorphic_decode + +def main(request, response): + key = request.GET[b"id"] + + if request.method == "POST": + content_type = request.headers.get(b"content-type", b"no content-type header") + ping_from = request.headers.get(b"ping-from", b"no ping-from header") + ping_to = request.headers.get(b"ping-to", b"no ping-to header") + + value = json.dumps({ + 'content-type': isomorphic_decode(content_type), + 'ping-from': isomorphic_decode(ping_from), + 'ping-to': isomorphic_decode(ping_to) + }) + request.server.stash.put(key, value) + + return (204, [], "") + + elif request.method == "GET": + value = request.server.stash.take(key) + if value is None: + value = "\"no headers yet\"" + return (200, [("Content-Type", "application/json")], str(value)) + + return (405, [], "") diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html new file mode 100644 index 0000000000..2db3082e21 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_attribute-getter-setter.html @@ -0,0 +1,65 @@ + + + + +HTMLAnchorElement getters and setters + + +anchor + + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter.html new file mode 100644 index 0000000000..759eada220 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_getter.html @@ -0,0 +1,48 @@ + + + + +HTMLAnchorElement getters test + + +a1 +a2 +a3 +a4 +a5 +a6 +a7 +a8 +a9 +a10 + + + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html new file mode 100644 index 0000000000..95ab1c81fb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/htmlanchorelement_noopener.html @@ -0,0 +1,78 @@ + + +Test behavior of rel="noopener" links + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-parsable-url-getter-setter.window.js b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-parsable-url-getter-setter.window.js new file mode 100644 index 0000000000..587f9b9c46 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-parsable-url-getter-setter.window.js @@ -0,0 +1,54 @@ +[ + { + "property": "origin", + "set": null + }, + { + "property": "protocol", + "get": ":", + "set": "https" + }, + { + "property": "username" + }, + { + "property": "password" + }, + { + "property": "host" + }, + { + "property": "hostname" + }, + { + "property": "port", + "set": "8000" + }, + { + "property": "pathname" + }, + { + "property": "search" + }, + { + "property": "hash" + } +].forEach(({ property, get = "", set = "string" }) => { + ["a", "area"].forEach(name => { + test(() => { + const link = document.createElement(name); + link.href = "http://test:test/"; // non-parsable URL + assert_equals(link[property], get); + }, `<${name} href="http://test:test/">.${property} getter`); + + if (set !== null) { + test(() => { + const link = document.createElement(name); + link.href = "http://test:test/"; // non-parsable URL + link[property] = set; + assert_equals(link[property], get); + assert_equals(link.href, "http://test:test/"); + }, `<${name} href="http://test:test/">.${property} setter`); + } + }); +}); diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-opaque-path-url-getter-setter.window.js b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-opaque-path-url-getter-setter.window.js new file mode 100644 index 0000000000..9549c6e2a6 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-opaque-path-url-getter-setter.window.js @@ -0,0 +1,59 @@ +[ + { + "property": "origin", + "get": "null", + "set": null + }, + { + "property": "protocol", + "get": "non-special:", + "set": "super-special", + "setget": "super-special:" + }, + { + "property": "username" + }, + { + "property": "password" + }, + { + "property": "host", + }, + { + "property": "hostname", + }, + { + "property": "port", + "set": "8000" + }, + { + "property": "pathname", + "get": "opaque", + "setget": "opaque" + }, + { + "property": "search", + "setget": "?string" + }, + { + "property": "hash", + "setget": "#string" + } +].forEach(({ property, get = "", set = "string", setget = get }) => { + ["a", "area"].forEach(name => { + test(() => { + const link = document.createElement(name); + link.href = "non-special:opaque"; + assert_equals(link[property], get); + }, `<${name} href="non-special:opaque">.${property} getter`); + + if (set !== null) { + test(() => { + const link = document.createElement(name); + link.href = "non-special:opaque"; + link[property] = set; + assert_equals(link[property], setget); + }, `<${name} href="non-special:opaque">.${property} setter`); + } + }); +}); diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-url-getter-setter.window.js b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-url-getter-setter.window.js new file mode 100644 index 0000000000..de528a2f97 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/non-special-url-getter-setter.window.js @@ -0,0 +1,63 @@ +[ + { + "property": "origin", + "get": "null", + "set": null + }, + { + "property": "protocol", + "get": "non-special:", + "set": "super-special", + "setget": "super-special:" + }, + { + "property": "username" + }, + { + "property": "password" + }, + { + "property": "host", + "get": "test:9001", + "setget": "string:9001" + }, + { + "property": "hostname", + "get": "test" + }, + { + "property": "port", + "get": "9001", + "set": "8000" + }, + { + "property": "pathname", + "get": "/", + "setget": "/string" + }, + { + "property": "search", + "setget": "?string" + }, + { + "property": "hash", + "setget": "#string" + } +].forEach(({ property, get = "", set = "string", setget = set }) => { + ["a", "area"].forEach(name => { + test(() => { + const link = document.createElement(name); + link.href = "non-special://test:9001/"; + assert_equals(link[property], get); + }, `<${name} href="non-special://test:9001/">.${property} getter`); + + if (set !== null) { + test(() => { + const link = document.createElement(name); + link.href = "non-special://test:9001/"; + link[property] = set; + assert_equals(link[property], setget); + }, `<${name} href="non-special://test:9001/">.${property} setter`); + } + }); +}); diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-popup.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-popup.html new file mode 100644 index 0000000000..2057dbf0be --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-popup.html @@ -0,0 +1,19 @@ + + + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-1.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-1.html new file mode 100644 index 0000000000..0dbd14275c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-1.html @@ -0,0 +1,4 @@ + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-2.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-2.html new file mode 100644 index 0000000000..dd2d719134 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/noopener-target-2.html @@ -0,0 +1,8 @@ + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_implicit_noopener.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_implicit_noopener.html new file mode 100644 index 0000000000..bf6a1ae5bf --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/support/target_blank_implicit_noopener.html @@ -0,0 +1,6 @@ + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html new file mode 100644 index 0000000000..73eebaff70 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener.html @@ -0,0 +1,58 @@ + + + + + + Test behavior of target=_blank links + + + + + Click me + Click me + Click me + Click me + Click me + Click me + Click me + Click me + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html new file mode 100644 index 0000000000..3da6a49ef8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/links-created-by-a-and-area-elements/target_blank_implicit_noopener_base.html @@ -0,0 +1,59 @@ + + + + + + Test behavior of base target=_blank links + + + + + + Click me + Click me + Click me + Click me + Click me + Click me + Click me + Click me + + + + + + + + + + + diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css-ref.html b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css-ref.html new file mode 100644 index 0000000000..ec961eac15 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css-ref.html @@ -0,0 +1,5 @@ + + +Reference of Alternate css + +
foobar
diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css.html b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css.html new file mode 100644 index 0000000000..366d6c5593 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-css.html @@ -0,0 +1,7 @@ + + +Alternate css + + + +
foobar
diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/alternate-import.css b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-import.css new file mode 100644 index 0000000000..7db3df1d78 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/alternate-import.css @@ -0,0 +1,3 @@ +body { + background-color: black; +} diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/alternate.css b/testing/web-platform/tests/html/semantics/links/linktypes/alternate.css new file mode 100644 index 0000000000..b101ab91f0 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/alternate.css @@ -0,0 +1,5 @@ +@import url("alternate-import.css"); + +div { + background-color: red; +} diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-lower.css b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-lower.css new file mode 100644 index 0000000000..a19c9dfd72 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-lower.css @@ -0,0 +1 @@ +#z-lower:after { content: "PASS"; color: green; } diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-mixed.css b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-mixed.css new file mode 100644 index 0000000000..7389ea1a1a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-mixed.css @@ -0,0 +1 @@ +#z-mixed:after { content: "PASS"; color: green; } diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-other.css b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-other.css new file mode 100644 index 0000000000..a6c2616d86 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-other.css @@ -0,0 +1 @@ +#z-other:after { content: "FAIL"; color: red; } diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-ref.html b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-ref.html new file mode 100644 index 0000000000..5ac2432547 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive-ref.html @@ -0,0 +1,9 @@ + + + +

text/css treated as CSS? +

TeXt/CsS treated as CSS? +

text/cſs ignored? diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.css b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.css new file mode 100644 index 0000000000..5d647d0f2e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.css @@ -0,0 +1,3 @@ +p:after { font-weight: bold; } +p:after { content: "FAIL"; color: red; } +#z-other:after { content: "PASS"; color: green; } diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html new file mode 100644 index 0000000000..39fd5520d2 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/link-type-stylesheet/process-stylesheet-linked-resource-ascii-case-insensitive.html @@ -0,0 +1,14 @@ + + + + + + + + + + + +

text/css treated as CSS? +

TeXt/CsS treated as CSS? +

text/cſs ignored? diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/original-id.json b/testing/web-platform/tests/html/semantics/links/linktypes/original-id.json new file mode 100644 index 0000000000..1e5f7b5ed3 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/original-id.json @@ -0,0 +1 @@ +{"original_id":"linkTypes"} \ No newline at end of file diff --git a/testing/web-platform/tests/html/semantics/links/linktypes/preferred.css b/testing/web-platform/tests/html/semantics/links/linktypes/preferred.css new file mode 100644 index 0000000000..54b95ac280 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/links/linktypes/preferred.css @@ -0,0 +1,3 @@ +div { + border: 4px solid green; +} -- cgit v1.2.3