diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents')
64 files changed, 1294 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md new file mode 100644 index 0000000000..f95e0a63a3 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/README.md @@ -0,0 +1,16 @@ +The tests in this directory are for script elements moved between documents. + +Use + +``` +$ tools/generate.py +``` + +to generate test HTML files (except for tests in subdirectories). + +Background: + +- https://www.w3.org/Bugs/Public/show_bug.cgi?id=11323 +- https://github.com/whatwg/html/issues/2137 +- https://github.com/whatwg/html/issues/2469 +- https://github.com/whatwg/html/pull/2673 diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-classic.html new file mode 100644 index 0000000000..2b84ae8088 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-module.html new file mode 100644 index 0000000000..09ee1490c1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-classic.html new file mode 100644 index 0000000000..477abd32cf --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-module.html new file mode 100644 index 0000000000..9da2276408 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-classic.html new file mode 100644 index 0000000000..bc4deb6f17 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-module.html new file mode 100644 index 0000000000..ff76954f9d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-createHTMLDocument-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "createHTMLDocument", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-classic.html new file mode 100644 index 0000000000..768120e9d8 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-module.html new file mode 100644 index 0000000000..50dd80662d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-classic.html new file mode 100644 index 0000000000..981a068230 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-module.html new file mode 100644 index 0000000000..6debb4189e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-inline-classic.html new file mode 100644 index 0000000000..53389f20db --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-parse-error-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "parse-error", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-classic.html new file mode 100644 index 0000000000..9c4a12226a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-module.html new file mode 100644 index 0000000000..0a0490cfc1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-inline-classic.html new file mode 100644 index 0000000000..932825709f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/after-prepare-iframe-success-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("after-prepare", "iframe", "success", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-classic.html new file mode 100644 index 0000000000..444382ac20 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-module.html new file mode 100644 index 0000000000..e1a1f7c08f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-classic.html new file mode 100644 index 0000000000..6bb5ebddbd --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-module.html new file mode 100644 index 0000000000..10a6549f62 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-classic.html new file mode 100644 index 0000000000..28bd935995 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "parse-error", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-module.html new file mode 100644 index 0000000000..e665a75629 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-parse-error-inline-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "parse-error", "inline", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-classic.html new file mode 100644 index 0000000000..8ee0dd1de1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "empty-src", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html new file mode 100644 index 0000000000..4791149c57 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-empty-src-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "empty-src", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-classic.html new file mode 100644 index 0000000000..3a3aceaf26 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-module.html new file mode 100644 index 0000000000..c15b4fc77f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-classic.html new file mode 100644 index 0000000000..576f4d4684 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-module.html new file mode 100644 index 0000000000..c84d61c89a --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-createHTMLDocument-success-inline-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "createHTMLDocument", "success", "inline", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-classic.html new file mode 100644 index 0000000000..febf6fcc55 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-module.html new file mode 100644 index 0000000000..f936260b8c --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-classic.html new file mode 100644 index 0000000000..870c900abf --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-module.html new file mode 100644 index 0000000000..fb44a89df1 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-classic.html new file mode 100644 index 0000000000..986e4fa396 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "parse-error", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-module.html new file mode 100644 index 0000000000..3a3fc38479 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-parse-error-inline-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "parse-error", "inline", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-classic.html new file mode 100644 index 0000000000..4f03a94358 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "empty-src", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-module.html new file mode 100644 index 0000000000..a7bd42fd32 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-empty-src-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "empty-src", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-classic.html new file mode 100644 index 0000000000..08a8ac4afa --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-module.html new file mode 100644 index 0000000000..b8c3f79fea --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-classic.html new file mode 100644 index 0000000000..b639f6109d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-module.html new file mode 100644 index 0000000000..616e46310f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/before-prepare-iframe-success-inline-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("before-prepare", "iframe", "success", "inline", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-classic.html new file mode 100644 index 0000000000..745c62d898 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-module.html new file mode 100644 index 0000000000..f6353a05fc --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-classic.html new file mode 100644 index 0000000000..21099c3ff9 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-module.html new file mode 100644 index 0000000000..2eb153acfe --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-classic.html new file mode 100644 index 0000000000..88821826ed --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-module.html new file mode 100644 index 0000000000..f2a9d95741 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-createHTMLDocument-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "createHTMLDocument", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-classic.html new file mode 100644 index 0000000000..d96bfe0d50 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "fetch-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-module.html new file mode 100644 index 0000000000..7e71bfbe15 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-fetch-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "fetch-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-classic.html new file mode 100644 index 0000000000..757c879897 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "parse-error", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-module.html new file mode 100644 index 0000000000..6ec6c5970e --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "parse-error", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-inline-classic.html new file mode 100644 index 0000000000..c0b0f9d404 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-parse-error-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "parse-error", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-classic.html new file mode 100644 index 0000000000..7955dbce62 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "success", "external", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-module.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-module.html new file mode 100644 index 0000000000..af17eb01f7 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-external-module.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "success", "external", "module"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-inline-classic.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-inline-classic.html new file mode 100644 index 0000000000..8a44e2feaf --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/move-back-iframe-success-inline-classic.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("move-back", "iframe", "success", "inline", "classic"); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md new file mode 100644 index 0000000000..dcf5597e2d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/README.md @@ -0,0 +1,6 @@ +The tests in this directory checks side effects (other than script +evaluation/event firing, which is covered by the tests in the parent directory) +caused by scripts moved between Documents. + +The tests assume that script loading is not canceled when moved between +documents (which is not explicitly specified as of Jan 2022). diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html new file mode 100644 index 0000000000..c5812765eb --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-1.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="helper.js"></script> + +<body> +<script> +runDelayEventTest('Script elements (parser-blocking)'); +</script> + +<script id="to-be-moved" src="../../resources/throw.js?pipe=trickle(d3)"></script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html new file mode 100644 index 0000000000..916673894d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-2.html @@ -0,0 +1,15 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="helper.js"></script> + +<body> +<script> +runDelayEventTest('Script elements (async)'); + +const script = document.createElement('script'); +script.setAttribute('id', 'to-be-moved'); +script.setAttribute('src', '../../resources/throw.js?pipe=trickle(d3)'); +document.body.appendChild(script); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html new file mode 100644 index 0000000000..efec7657c3 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/delay-load-event-iframe.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<body onload="parent.onloadIframe()"> +<script src="../../resources/throw.js?pipe=trickle(d2)"></script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js new file mode 100644 index 0000000000..cb5f45eb0d --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/helper.js @@ -0,0 +1,31 @@ +function runDelayEventTest(description) { + const t_original = async_test(description + + ' still delay the load event in the original Document after move'); + const t_new = async_test(description + + ' does not delay the load event in the new Document after move'); + const iframe = document.createElement('iframe'); + iframe.setAttribute('src', 'delay-load-event-iframe.html'); + const start_time = performance.now(); + document.body.appendChild(iframe); + + window.onload = t_original.step_func_done(() => { + // The `#to-be-moved` script should delay the load event until it is loaded + // (i.e. 3 seconds), not just until it is moved out to another Document + // (i.e. 1 second). Here we expect the delay should be at least 2 seconds, + // as the latency can be slightly less than 3 seconds due to preloading. + assert_greater_than(performance.now() - start_time, 2000, + 'Load event should be delayed until script is loaded'); + }); + + window.onloadIframe = t_new.step_func_done(() => { + // The iframe's load event is fired after 2 seconds of its subresource + // loading, and shouldn't wait for the `#to-be-moved` script. + assert_less_than(performance.now() - start_time, 3000, + 'Load event should not be delayed until moved script is loaded'); + }); + + t_original.step_timeout(() => { + const script = document.querySelector('#to-be-moved'); + iframe.contentDocument.body.appendChild(script); + }, 1000); +} diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html new file mode 100644 index 0000000000..6a3e2b54a7 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/in-order.html @@ -0,0 +1,35 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="help" href="https://html.spec.whatwg.org/C/#list-of-scripts-that-will-execute-in-order-as-soon-as-possible"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="helper.js"></script> +<body> +<script> +const t = async_test('Script elements (in-order) still block subsequent in-order scripts in the original Document after moved to another Document'); +const start_time = performance.now(); +const iframe = document.createElement('iframe'); +document.body.appendChild(iframe); + +const onScript2Evaluated = t.step_func_done(() => { + // `script1` should remain the + // #list-of-scripts-that-will-execute-in-order-as-soon-as-possible of the + // original Document and thus blocks `script2` evaluation until it is loaded. + assert_greater_than(performance.now() - start_time, 2000, + 'In-order scripts should block subsequent in-order scripts'); +}); + +const script1 = document.createElement('script'); +script1.async = false; +script1.setAttribute('src', '../../resources/throw.js?pipe=trickle(d2)'); +document.body.appendChild(script1); + +const script2 = document.createElement('script'); +script2.async = false; +script2.setAttribute('src', 'data:text/javascript,onScript2Evaluated()'); +document.body.appendChild(script2); + +t.step_timeout(() => { + iframe.contentDocument.body.appendChild(script1); +}, 1000); +</script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html new file mode 100644 index 0000000000..9edde13736 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/ordering/parser-blocking.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<link rel="help" href="https://html.spec.whatwg.org/C/#pending-parsing-blocking-script"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="helper.js"></script> +<body> +<script> +const t = async_test('Script elements (parser-blocking) still block the parser in the original Document after moved to another Document'); +const start_time = performance.now(); +const iframe = document.createElement('iframe'); +document.body.appendChild(iframe); + +t.step_timeout(() => { + const script = document.querySelector('#to-be-moved'); + iframe.contentDocument.body.appendChild(script); +}, 1000); + +let syncScriptEvaluated = false; + +const onSyncScript = t.step_func(() => { + syncScriptEvaluated = true; + + // The `#to-be-moved` script should block the parser and thus the sync + // script after `#to-be-moved` should be delayed until `#to-be-moved` is + // loaded (i.e. 3 seconds). + // Here we expect the delay should be at least 2 seconds, + // as the latency can be slightly less than 3 seconds due to preloading. + assert_greater_than(performance.now() - start_time, 2000, + 'Parser should be blocked until script is loaded'); +}); + +document.addEventListener('DOMContentLoaded', t.step_func_done(() => { + assert_true(syncScriptEvaluated, + 'sync script should be evaluated before DOMContentLoaded'); + assert_greater_than(performance.now() - start_time, 2000, + 'DOMContentLoaded event should be delayed until script is loaded'); +})); +</script> +<script id="to-be-moved" src="../../resources/throw.js?pipe=trickle(d3)"></script> +<script src="data:text/javascript,onSyncScript()"></script> diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-helper.js b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-helper.js new file mode 100644 index 0000000000..de4af6ac10 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-helper.js @@ -0,0 +1,214 @@ +"use strict"; + +function createDocument(documentType, result, inlineOrExternal, type, hasBlockingStylesheet) { + return new Promise((resolve, reject) => { + const iframe = document.createElement("iframe"); + iframe.src = + "resources/moving-between-documents-iframe.py" + + "?result=" + result + + "&inlineOrExternal=" + inlineOrExternal + + "&type=" + type + + "&hasBlockingStylesheet=" + hasBlockingStylesheet + + "&cache=" + Math.random(); + // As blocking stylesheets delays Document load events, we use + // DOMContentLoaded here. + // After that point, we expect iframe.contentDocument exists + // while still waiting for blocking stylesheet loading. + document.body.appendChild(iframe); + + window.addEventListener('message', (event) => { + if (documentType === "iframe") { + resolve([iframe.contentWindow, iframe.contentDocument]); + } else if (documentType === "createHTMLDocument") { + resolve([ + iframe.contentWindow, + iframe.contentDocument.implementation.createHTMLDocument("")]); + } else { + reject(new Error("Invalid document type: " + documentType)); + } + }, {once: true}); + }); +} + +window.didExecute = undefined; + +// For a script, there are three associated Documents that can +// potentially different: +// +// [1] script's parser document +// https://html.spec.whatwg.org/C/#parser-document +// +// [2] script's preparation-time document +// https://html.spec.whatwg.org/C/#preparation-time-document +// == script's node document at the beginning of #prepare-a-script +// +// [3] script's node document at the beginning of +// #execute-the-script-block +// +// This helper is for tests where [1]/[2]/[3] are different. + +// In the spec, scripts are executed only if [1]/[2]/[3] are all the same +// (or [1] is null and [2]==[3]). +// +// A check for [1]==[2] is in #prepare-a-script and +// a check for [1]==[3] is in #execute-the-script-block, +// but these are under debate: https://github.com/whatwg/html/issues/2137 +// +// A check for [2]==[3] is in #execute-the-script-block, which is added by +// https://github.com/whatwg/html/pull/2673 + +// timing: +// "before-prepare": +// A <script> is moved during parsing before #prepare-a-script. +// [1] != [2] == [3] +// +// "after-prepare": +// A <script> is moved after parsing/#prepare-a-script but +// before #execute-the-script-block. +// [1] == [2] != [3] +// +// To move such scripts, #has-a-style-sheet-that-is-blocking-scripts +// is utilized to block inline scripts after #prepare-a-script. +// Note: this is a corner case in the spec which might be removed +// from the spec in the future, e.g. +// https://github.com/whatwg/html/issues/1349 +// https://github.com/chrishtr/rendering/blob/master/stylesheet-loading-proposal.md +// +// TODO(domfarolino): Remove the "parsing but moved back" tests, because if a +// <script> is moved before #prepare-a-script, per spec it should never make +// it to #execute-the-script-block. If an implementation does not implement +// the check in #prepare-a-script, then it will fail the "before-prepare" +// tests, so these are not necessary. +// "parsing but moved back" +// A <script> is moved before #prepare-a-script, but moved back again +// to the original Document after #prepare-a-script. +// [1] == [3] != [2] +// +// destType: "iframe" or "createHTMLDocument". +// result: "fetch-error", "parse-error", or "success". +// inlineOrExternal: "inline" or "external" or "empty-src". +// type: "classic" or "module". +async function runTest(timing, destType, result, inlineOrExternal, type) { + const description = + `Move ${result} ${inlineOrExternal} ${type} script ` + + `to ${destType} ${timing}`; + + const t = async_test("Eval: " + description); + const tScriptLoadEvent = async_test("<script> load: " + description); + const tScriptErrorEvent = async_test("<script> error: " + description); + const tWindowErrorEvent = async_test("window error: " + description); + + // If scripts should be moved after #prepare-a-script before + // #execute-the-script-block, we add a style sheet that is + // blocking scripts. + const hasBlockingStylesheet = + timing === "after-prepare" || timing === "move-back"; + + const [sourceWindow, sourceDocument] = await createDocument( + "iframe", result, inlineOrExternal, type, hasBlockingStylesheet); + + // Due to https://crbug.com/1034176, Chromium needs + // blocking stylesheets also in the destination Documents. + const [destWindow, destDocument] = await createDocument( + destType, null, null, null, hasBlockingStylesheet); + + const scriptOnLoad = + tScriptLoadEvent.unreached_func("Script load event fired unexpectedly"); + const scriptOnError = (event) => { + // For Firefox: Prevent window.onerror is fired due to propagation + // from <script>'s error event. + event.stopPropagation(); + + tScriptErrorEvent.unreached_func("Script error evennt fired unexpectedly")(); + }; + + sourceWindow.didExecute = false; + sourceWindow.t = t; + sourceWindow.scriptOnLoad = scriptOnLoad; + sourceWindow.scriptOnError = scriptOnError; + sourceWindow.onerror = tWindowErrorEvent.unreached_func( + "Window error event shouldn't fired on source window"); + sourceWindow.readyToEvaluate = false; + + destWindow.didExecute = false; + destWindow.t = t; + destWindow.scriptOnLoad = scriptOnLoad; + destWindow.scriptOnError = scriptOnError; + destWindow.onerror = tWindowErrorEvent.unreached_func( + "Window error event shouldn't fired on destination window"); + destWindow.readyToEvaluate = false; + + // t=0 sec: Move between documents before #prepare-a-script. + // At this time, the script element is not yet inserted to the DOM. + if (timing === "before-prepare" || timing === "move-back") { + destDocument.body.appendChild( + sourceDocument.querySelector("streaming-element")); + } + if (timing === "before-prepare") { + sourceWindow.readyToEvaluate = true; + destWindow.readyToEvaluate = true; + } + + // t=1 sec: the script element is inserted to the DOM, i.e. + // #prepare-a-script is triggered (see monving-between-documents-iframe.py). + // In the case of `before-prepare`, the script can be evaluated. + // In other cases, the script evaluation is blocked by a style sheet. + await new Promise(resolve => step_timeout(resolve, 2000)); + + // t=2 sec: Move between documents after #prepare-a-script. + if (timing === "after-prepare") { + // At this point, the script hasn't been moved yet, so we'll move it for the + // first time, after #prepare-a-script, but before #execute-the-script-block. + destDocument.body.appendChild( + sourceDocument.querySelector("streaming-element")); + } else if (timing === "move-back") { + // At this point the script has already been moved to the destination block + // before #prepare-a-script, so we'll move it back to the source document + // before #execute-the-script-block. + sourceDocument.body.appendChild( + destDocument.querySelector("streaming-element")); + } + sourceWindow.readyToEvaluate = true; + destWindow.readyToEvaluate = true; + + // t=3 or 5 sec: Blocking stylesheet and external script are loaded, + // and thus script evaulation is unblocked. + + // Note: scripts are expected to be loaded at t=3, because the fetch + // is started by #prepare-a-script at t=1, and the script's delay is + // 2 seconds. However in Chromium, due to preload scanner, the script + // loading might take 4 seconds, because the first request by preload + // scanner of the source Document takes 2 seconds (between t=1 and t=3) + // which blocks the second request by #prepare-a-script that takes + // another 2 seconds (between t=3 and t=5). + + // t=6 sec: After all possible script evaluation points, test whether + // the script/events were evaluated/fired or not. + // As we have concurrent tests, a single global step_timeout() is + // used instead of multiple `t.step_timeout()` etc., + // to avoid potential race conditions between `t.step_timeout()`s. + return new Promise(resolve => { + step_timeout(() => { + tWindowErrorEvent.done(); + tScriptLoadEvent.done(); + tScriptErrorEvent.done(); + + t.step_func_done(() => { + assert_false(sourceWindow.didExecute, + "The script must not have executed in source window"); + assert_false(destWindow.didExecute, + "The script must not have executed in destination window"); + })(); + resolve(); + }, 4000); + }); +} + +async_test(t => { + t.step_timeout(() => { + assert_equals(window.didExecute, undefined, + "The script must not have executed in the top-level window"); + t.done(); + }, + 4000); +}, "Sanity check around top-level Window"); diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py new file mode 100644 index 0000000000..dbcfe9b8d0 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py @@ -0,0 +1,102 @@ +import random +import time + +from wptserve.utils import isomorphic_decode + + +""" +This script serves +""" + +def main(request, response): + inlineOrExternal = request.GET.first(b"inlineOrExternal", b"null") + hasBlockingStylesheet = request.GET.first(b"hasBlockingStylesheet", b"true") == b"true" + result = request.GET.first(b"result", b"success") + type = u"text/javascript" if request.GET.first(b"type", b"classic") == b"classic" else u"module" + + response.headers.set(b"Content-Type", b"text/html; charset=utf-8") + response.headers.set(b"Transfer-Encoding", b"chunked") + response.write_status_headers() + + # Step 1: Start parsing. + body = u"""<!DOCTYPE html> + <head> + <script> + parent.postMessage("fox", "*"); + </script> + """ + + if hasBlockingStylesheet: + body += u""" + <link rel="stylesheet" href="slow-flag-setter.py?result=css&cache=%f"> + """ % random.random() + + body += u""" + </head> + <body> + """ + + if inlineOrExternal == b"inline" or inlineOrExternal == b"external" or inlineOrExternal == b"empty-src": + body += u""" + <streaming-element> + """ + + # Trigger DOM processing + body += u"A" * 100000 + + response.writer.write(u"%x\r\n" % len(body)) + response.writer.write(body) + response.writer.write(u"\r\n") + + body = u"" + + if inlineOrExternal == b"inline": + time.sleep(1) + body += u""" + <script id="s1" type="%s" + onload="scriptOnLoad()" + onerror="scriptOnError(event)"> + if (!window.readyToEvaluate) { + window.didExecute = "executed too early"; + } else { + window.didExecute = "executed"; + } + """ % type + if result == b"parse-error": + body += u"1=2 parse error\n" + + body += u""" + </script> + </streaming-element> + """ + elif inlineOrExternal == b"external": + time.sleep(1) + body += u""" + <script id="s1" type="%s" + src="slow-flag-setter.py?result=%s&cache=%s" + onload="scriptOnLoad()" + onerror="scriptOnError(event)"></script> + </streaming-element> + """ % (type, isomorphic_decode(result), random.random()) + elif inlineOrExternal == b"empty-src": + time.sleep(1) + body += u""" + <script id="s1" type="%s" + src="" + onload="scriptOnLoad()" + onerror="scriptOnError(event)"></script> + </streaming-element> + """ % (type,) + + # // if readyToEvaluate is false, the script is probably + # // wasn't blocked by stylesheets as expected. + + # Trigger DOM processing + body += u"B" * 100000 + + response.writer.write(u"%x\r\n" % len(body)) + response.writer.write(body) + response.writer.write(u"\r\n") + + response.writer.write(u"0\r\n") + response.writer.write(u"\r\n") diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/slow-flag-setter.py b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/slow-flag-setter.py new file mode 100644 index 0000000000..20d7ed4bd0 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/slow-flag-setter.py @@ -0,0 +1,29 @@ + +import time + +def main(request, response): + headers = [(b"Content-Type", b"text/javascript")] + + result = request.GET.first(b"result", b"success") + if result == b"css": + time.sleep(3) + headers = [(b"Content-Type", b"text/css")] + body = u"" + else: + time.sleep(2) + + body = u""" + fetch('exec'); + console.log('exec'); + if (!window.readyToEvaluate) { + window.didExecute = "executed too early"; + } else { + window.didExecute = "executed"; + } + """ + if result == b"parse-error": + body = u"1=2 parse error;" + if result == b"fetch-error": + return 404, [(b'Content-Type', b'text/plain')], u"""window.didExecute = "fetch error";""" + + return headers, body diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/tools/generate.py b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/tools/generate.py new file mode 100644 index 0000000000..80a655e821 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/tools/generate.py @@ -0,0 +1,61 @@ +template = '''<!DOCTYPE html> +<meta charset="utf-8"> +<meta name="timeout" content="long"> +<title>Moving script elements between documents</title> +<!-- This is generated by tools/generate.py. Do not manually edit. --> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#execute-the-script-block"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="resources/moving-between-documents-helper.js"></script> + +<body> +<script> +runTest("%s", "%s", "%s", "%s", "%s"); +</script> +''' + +n = 0 +for timing in ["before-prepare", "after-prepare", "move-back"]: + for destType in ["iframe", "createHTMLDocument"]: + for inlineOrExternal in ["inline", "external", "empty-src"]: + for result in ["fetch-error", "parse-error", "success"]: + for type in ["classic", "module"]: + # The |inlineOrExternal| keyword creates a certain kind of script, + # and the |result| keyword can influence the generated script in + # different ways i.e., giving the script a parse-error, or creating + # a script that fails to load. When we're creating an inline script, + # it doesn't make sense to test the fetch-error case, so we ignore + # this combination, as the server will not react to it in any + # meaningful way. + if inlineOrExternal == "inline" and result == "fetch-error": + continue + + if inlineOrExternal == "empty-src": + # The "empty-src" tests aim to exercise #prepare-a-script step 26 + # substep 2, where the <script> has a src attribute that is empty: + # "If src is the empty string, queue a task to fire an event named + # error at the element, and return." + # Therefore, the server will generate a script that does not have a + # "parse-error" or "fetch-error", so we can ignore these combinations. + if result != "success": + continue + + # The "empty-src" tests check that the parser document <=> node document + # check is implemented correctly in #prepare-a-script. Therefore we're + # only interested in tests that move the <script> before #prepare-a-script. + if timing != "before-prepare": + continue + + # The current test helper uses + # #has-a-style-sheet-that-is-blocking-scripts to block script + # evaluation after #prepare-a-script, but in some cases this + # doesn't work: + # - inline scripts to createHTMLDocument + if timing != "before-prepare" and destType == "createHTMLDocument" and inlineOrExternal == "inline": + continue + # - module inline scripts https://github.com/whatwg/html/issues/3890 + if timing != "before-prepare" and inlineOrExternal == "inline" and type == "module": + continue + + with open('%s-%s-%s-%s-%s.html' % (timing, destType, result, inlineOrExternal, type), 'w') as f: + f.write(template % (timing, destType, result, inlineOrExternal, type)) |