OLD | NEW |
(Empty) | |
| 1 <!doctype html> |
| 2 <html> |
| 3 <head> |
| 4 <title>html-script-module-execOrder</title> |
| 5 <script src="/resources/testharness.js"></script> |
| 6 <script src="/resources/testharnessreport.js"></script> |
| 7 <script> |
| 8 |
| 9 var execCounts = [ |
| 10 0, // test_parsedOrdered |
| 11 0, // test_dynamicOrdered |
| 12 ]; |
| 13 function assert_execCount(set, expected, description) |
| 14 { |
| 15 if (!execCounts[set]) |
| 16 { |
| 17 execCounts[set] = 0; |
| 18 } |
| 19 assert_equals(++execCounts[set], expected, description); |
| 20 } |
| 21 |
| 22 function create_script(src, opts) |
| 23 { |
| 24 var element = document.createElement("script"); |
| 25 element.src = src; |
| 26 element.async = (opts.asyncOrdered ? false : true); |
| 27 element.type = (opts.module ? "module" : "text/javascript"); |
| 28 document.body.appendChild(element); |
| 29 } |
| 30 |
| 31 </script> |
| 32 </head> |
| 33 <body> |
| 34 <h1>html-script-module-execOrder</h1> |
| 35 <script> |
| 36 |
| 37 ///// |
| 38 // Start test_parsedUnordered* |
| 39 ///// |
| 40 var test_parsedUnordered1 = async_test("Unordered module script executio
n (parsed, unordered #1)"); |
| 41 var test_parsedUnordered2 = async_test("Unordered module script executio
n (parsed, unordered #2)"); |
| 42 </script> |
| 43 <script type="module" src="execOrder-parsedUnordered1.js"></script> |
| 44 <script type="module" src="execOrder-parsedUnordered2.js"></script> |
| 45 <script> |
| 46 ///// |
| 47 // End test_parsedUnordered* |
| 48 ///// |
| 49 |
| 50 ///// |
| 51 // Start test_dynamicUnordered* |
| 52 ///// |
| 53 var test_dynamicUnordered1 = async_test("Unordered module script executi
on (dynamic, unordered #1)"); |
| 54 var test_dynamicUnordered2 = async_test("Unordered module script executi
on (dynamic, unordered #2)"); |
| 55 create_script("execOrder-dynamicUnordered1.js", { module: true }); |
| 56 create_script("execOrder-dynamicUnordered2.js", { module: true }); |
| 57 ///// |
| 58 // End test_dynamicUnordered* |
| 59 ///// |
| 60 |
| 61 ///// |
| 62 // Begin test_parsedOrdered |
| 63 ///// |
| 64 var test_parsedOrdered = async_test("Interlaced module/non-module script
execution (parsed, async-ordered)"); |
| 65 window.addEventListener("load", test_parsedOrdered.step_func(function()
{ |
| 66 assert_execCount(0, 5, "onload should have fired fifth"); |
| 67 test_parsedOrdered.done(); |
| 68 })); |
| 69 </script> |
| 70 <script src="execOrder-parsedOrdered2.js" defer></script> |
| 71 <script type="module"> |
| 72 test_parsedOrdered.step(function() { |
| 73 assert_execCount(0, 3, "Inline module-typed script element should ha
ve fired third"); |
| 74 }); |
| 75 </script> |
| 76 <script src="execOrder-parsedOrdered4.js" defer></script> |
| 77 <script> |
| 78 test_parsedOrdered.step(function() { |
| 79 assert_execCount(0, 1, "Inline untyped script element should have fi
red first"); |
| 80 }); |
| 81 ///// |
| 82 // End test_parsedOrdered |
| 83 ///// |
| 84 |
| 85 ///// |
| 86 // Start test_dynamicOrdered |
| 87 ///// |
| 88 var test_dynamicOrdered = async_test("Interlaced module/non-module scrip
t execution (dynamic, async-ordered)"); |
| 89 window.addEventListener("load", test_dynamicOrdered.step_func(function()
{ |
| 90 assert_execCount(1, 5, "onload should have fired fifth (last)"); |
| 91 test_dynamicOrdered.done(); |
| 92 })); |
| 93 create_script("execOrder-dynamicOrdered2.js", { asyncOrdered: true, modu
le: false }); |
| 94 create_script("execOrder-dynamicOrdered3.js", { asyncOrdered: true, modu
le: true }); |
| 95 create_script("execOrder-dynamicOrdered4.js", { asyncOrdered: true, modu
le: false }); |
| 96 test_dynamicOrdered.step(function() { |
| 97 assert_execCount(1, 1, "Inline untyped script element should have fi
red first"); |
| 98 }); |
| 99 ///// |
| 100 // End test_dynamicOrdered |
| 101 ///// |
| 102 |
| 103 </script> |
| 104 </body> |
| 105 </html> |
OLD | NEW |