diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/document-metadata/the-link-element')
11 files changed, 166 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/.gitkeep b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/.gitkeep new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/.gitkeep diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html new file mode 100644 index 000000000..127b253f5 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/document-without-browsing-context.html @@ -0,0 +1,35 @@ +<!doctype html> +<meta charset="utf-8"> +<title>Documents without browsing contexts should not load stylesheets</title> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/common/utils.js"></script> +<body> +<script> + function count(id, t) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', 'stylesheet.py?count=1&id=' + id); + xhr.onload = t.step_func_done(function() { + assert_equals(xhr.responseText, "1"); + }); + xhr.onerror = t.unreached_func(); + xhr.send(); + } + + async_test(function(t) { + var id = token(); + var doc = (new DOMParser()).parseFromString('<link rel="stylesheet" href="stylesheet.py?id=' + id + '"></link>', 'text/html'); + var link = doc.querySelector('link'); + document.head.appendChild(link); + t.step_timeout(function() { count(id, t) }, 500); + }, 'Create a document, adopt the node'); + + async_test(function(t) { + var id = token(); + var d = document.createElement('div'); + document.body.appendChild(d); + d.innerHTML = '<link rel="stylesheet" href="stylesheet.py?id=' + id + '"></link>'; + t.step_timeout(function() { count(id, t) }, 500); + }, 'Create a stylesheet in innerHTML document'); +</script> +</body> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html new file mode 100644 index 000000000..6f6172a2d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-load-event.html @@ -0,0 +1,18 @@ +<!DOCTYPE html> +<link rel="author" title="Josh Matthews" href="mailto:josh@joshmatthews.net"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-link-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link href="style.css?pipe=trickle(d3)" rel="stylesheet" id="style_test"></link> +<script> +var saw_link_onload = false; +var t = async_test("Check if the stylesheet's load event blocks the document load event"); +document.getElementById('style_test').onload = t.step_func(function() { + saw_link_onload = true; +}); +window.addEventListener('load', t.step_func_done(function() { + assert_true(saw_link_onload); +})); +</script> +</head> +</html> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-rellist.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-rellist.html new file mode 100644 index 000000000..414965195 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-rellist.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<title>link.relList: non-string contains</title> +<link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-link-element"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#domtokenlist"> +<link rel="help" href="https://heycam.github.io/webidl/#ecmascript-binding"> +<link rel="help" href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf#page=57"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<link id="link" rel="undefined null 0 NaN Infinity"> +<div id="log"></div> +<script> +test(function() { + var list = document.getElementById("link").relList; + assert_equals(list.contains(undefined), true); //"undefined" + assert_equals(list.contains(null), true); //"null" + assert_equals(list.contains(-0), true); //"0" + assert_equals(list.contains(+0), true); //"0" + assert_equals(list.contains(NaN), true); //"NaN" + assert_equals(list.contains(+Infinity), true); //"Infinity" + assert_equals(list.contains(-Infinity), false); //"-Infinity" + assert_equals(list.supports("stylesheet"), true); + assert_equals(list.supports("nosuchrelvalueever"), false); +}); +</script> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html new file mode 100644 index 000000000..7a86a8638 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/link-style-error-01.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<title>link: error events</title> +<link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-link-element"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<div id="log"></div> +<div id="test"> +<script> +var t404 = async_test("Should get an error event for a 404 error.") +t404.step(function() { + var elt = document.createElement("link"); + elt.onerror = t404.step_func(function() { + assert_true(true, "Got error event for 404 error.") + t404.step_timeout(function() { t404.done() }, 0); + }) + elt.onload = t404.unreached_func("load event should not be fired"); + elt.rel = "stylesheet"; + elt.href = "nonexistent_stylesheet.css"; + document.getElementsByTagName("head")[0].appendChild(elt); +}) + +var tUnsupported = async_test("Should get an error event for an unsupported URL.") +tUnsupported.step(function() { + var elt = document.createElement("link"); + elt.onerror = tUnsupported.step_func(function() { + assert_true(true, "Got error event for unsupported URL.") + tUnsupported.step_timeout(function() { tUnsupported.done() }, 0); + }) + elt.onload = tUnsupported.unreached_func("load event should not be fired"); + elt.rel = "stylesheet"; + elt.href = "nonexistent:stylesheet.css"; + document.getElementsByTagName("head")[0].appendChild(elt); +}) + +var tText = async_test("Should get an error event for a text/plain response.") +tText.step(function() { + var elt = document.createElement("link"); + elt.onerror = tText.step_func(function() { + assert_true(true, "Got error event for 404 error.") + tText.done() + }) + elt.onload = tText.unreached_func("load event should not be fired"); + elt.rel = "stylesheet"; + elt.href = "../../../../../common/css-red.txt"; + document.getElementsByTagName("head")[0].appendChild(elt); +}) +</script> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/resources/stylesheet.css b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/resources/stylesheet.css new file mode 100644 index 000000000..e1b2552ff --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/resources/stylesheet.css @@ -0,0 +1,3 @@ +body { + background-color: green; +} diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/style.css b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/style.css new file mode 100644 index 000000000..d48115e56 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/style.css @@ -0,0 +1,3 @@ +body { + background-color: white; +}
\ No newline at end of file diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base-ref.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base-ref.html new file mode 100644 index 000000000..83f0d0677 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base-ref.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html> +<head> + <title>Stylesheet Without Base Tag</title> + <style> + body { background-color: green; } + </style> +</head> +<body> +</body> +</html> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base.html b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base.html new file mode 100644 index 000000000..a9f2a8bce --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet-with-base.html @@ -0,0 +1,11 @@ +<!DOCTYPE html> +<html> +<head> + <title>Stylesheet With Base Tag</title> + <link rel="match" href="stylesheet-with-base-ref.html"> + <base href="resources/"> + <link rel="stylesheet" href="stylesheet.css"> +</head> +<body> +</body> +</html> diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.css b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.css new file mode 100644 index 000000000..e8f24f94a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.css @@ -0,0 +1,3 @@ +body { + background-color: red; +} diff --git a/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.py b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.py new file mode 100644 index 000000000..a312e9e87 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/document-metadata/the-link-element/stylesheet.py @@ -0,0 +1,9 @@ +def main(request, response): + try: + count = int(request.server.stash.take(request.GET["id"])) + except: + count = 0 + if "count" in request.GET: + return str(count) + request.server.stash.put(request.GET["id"], str(count + 1)) + return 'body { color: red }' |