Index: third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/module/execorder.html |
diff --git a/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/module/execorder.html b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/module/execorder.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..3f28267298b5198d148bd27145ab7a68435727b6 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/external/wpt/html/semantics/scripting-1/the-script-element/module/execorder.html |
@@ -0,0 +1,105 @@ |
+<!doctype html> |
+<html> |
+<head> |
+ <title>html-script-module-execOrder</title> |
+ <script src="/resources/testharness.js"></script> |
+ <script src="/resources/testharnessreport.js"></script> |
+ <script> |
+ |
+ var execCounts = [ |
+ 0, // test_parsedOrdered |
+ 0, // test_dynamicOrdered |
+ ]; |
+ function assert_execCount(set, expected, description) |
+ { |
+ if (!execCounts[set]) |
+ { |
+ execCounts[set] = 0; |
+ } |
+ assert_equals(++execCounts[set], expected, description); |
+ } |
+ |
+ function create_script(src, opts) |
+ { |
+ var element = document.createElement("script"); |
+ element.src = src; |
+ element.async = (opts.asyncOrdered ? false : true); |
+ element.type = (opts.module ? "module" : "text/javascript"); |
+ document.body.appendChild(element); |
+ } |
+ |
+ </script> |
+</head> |
+<body> |
+ <h1>html-script-module-execOrder</h1> |
+ <script> |
+ |
+ ///// |
+ // Start test_parsedUnordered* |
+ ///// |
+ var test_parsedUnordered1 = async_test("Unordered module script execution (parsed, unordered #1)"); |
+ var test_parsedUnordered2 = async_test("Unordered module script execution (parsed, unordered #2)"); |
+ </script> |
+ <script type="module" src="execOrder-parsedUnordered1.js"></script> |
+ <script type="module" src="execOrder-parsedUnordered2.js"></script> |
+ <script> |
+ ///// |
+ // End test_parsedUnordered* |
+ ///// |
+ |
+ ///// |
+ // Start test_dynamicUnordered* |
+ ///// |
+ var test_dynamicUnordered1 = async_test("Unordered module script execution (dynamic, unordered #1)"); |
+ var test_dynamicUnordered2 = async_test("Unordered module script execution (dynamic, unordered #2)"); |
+ create_script("execOrder-dynamicUnordered1.js", { module: true }); |
+ create_script("execOrder-dynamicUnordered2.js", { module: true }); |
+ ///// |
+ // End test_dynamicUnordered* |
+ ///// |
+ |
+ ///// |
+ // Begin test_parsedOrdered |
+ ///// |
+ var test_parsedOrdered = async_test("Interlaced module/non-module script execution (parsed, async-ordered)"); |
+ window.addEventListener("load", test_parsedOrdered.step_func(function() { |
+ assert_execCount(0, 5, "onload should have fired fifth"); |
+ test_parsedOrdered.done(); |
+ })); |
+ </script> |
+ <script src="execOrder-parsedOrdered2.js" defer></script> |
+ <script type="module"> |
+ test_parsedOrdered.step(function() { |
+ assert_execCount(0, 3, "Inline module-typed script element should have fired third"); |
+ }); |
+ </script> |
+ <script src="execOrder-parsedOrdered4.js" defer></script> |
+ <script> |
+ test_parsedOrdered.step(function() { |
+ assert_execCount(0, 1, "Inline untyped script element should have fired first"); |
+ }); |
+ ///// |
+ // End test_parsedOrdered |
+ ///// |
+ |
+ ///// |
+ // Start test_dynamicOrdered |
+ ///// |
+ var test_dynamicOrdered = async_test("Interlaced module/non-module script execution (dynamic, async-ordered)"); |
+ window.addEventListener("load", test_dynamicOrdered.step_func(function() { |
+ assert_execCount(1, 5, "onload should have fired fifth (last)"); |
+ test_dynamicOrdered.done(); |
+ })); |
+ create_script("execOrder-dynamicOrdered2.js", { asyncOrdered: true, module: false }); |
+ create_script("execOrder-dynamicOrdered3.js", { asyncOrdered: true, module: true }); |
+ create_script("execOrder-dynamicOrdered4.js", { asyncOrdered: true, module: false }); |
+ test_dynamicOrdered.step(function() { |
+ assert_execCount(1, 1, "Inline untyped script element should have fired first"); |
+ }); |
+ ///// |
+ // End test_dynamicOrdered |
+ ///// |
+ |
+ </script> |
+</body> |
+</html> |