summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/defer-script/document-write.html
blob: 63e251bae5c0a0274481c196c0a942e88e8a3f2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<!doctype html>
<title>DeferAllScript: document.write()</title>
<html>
<head>
    <meta charset="utf-8">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script>
    const t1 = async_test("document.write()");
    const t2 = async_test("document.write(),close()");
    const t3 = async_test("document.open(),write()");
    const t4 = async_test("document.open(),write(),close()");
    function finish() {
      const expected = ["Inline1", "Sync2", "Async1", "Sync1",
                        "EndOfBody", "DOMContentLoaded", "WindowLoad"];
      t1.step_func_done(() => {
        assert_array_equals(
          document.getElementById("document-write").contentWindow.result,
          expected,
          "Execution order");
      })();

      t2.step_func_done(() => {
        assert_array_equals(
          document.getElementById("document-write-close").contentWindow.result,
          expected,
          "Execution order");
      })();

      t3.step_func_done(() => {
        assert_array_equals(
          document.getElementById("document-open-write").contentWindow.result,
          expected,
          "Execution order");
      })();

      t4.step_func_done(() => {
        assert_array_equals(
          document.getElementById(
              "document-open-write-close").contentWindow.result,
          expected,
          "Execution order");
      })();
      // For cases where documents are kept open, call `document.close()` here
      // to finish the test harness.
      for (const iframe of document.querySelectorAll("iframe")) {
        iframe.contentDocument.close();
      }
    }

    // For cases where documents are kept open (that should never occur in
    // non-intervention cases), schedule `finish()` because Window load events
    // might be not fired.
    setTimeout(finish, 5000);
    </script>
</head>
<body onload="finish()">
<iframe id="document-write"
        src="resources/document-write-iframe.sub.html?script=document-write.js"></iframe>
<iframe id="document-write-close"
        src="resources/document-write-iframe.sub.html?script=document-write-close.js"></iframe>
<iframe id="document-open-write"
        src="resources/document-write-iframe.sub.html?script=document-open-write.js"></iframe>
<iframe id="document-open-write-close"
        src="resources/document-write-iframe.sub.html?script=document-open-write-close.js"></iframe>
</body>
</html>