summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/resources/examples/apisample12.html
blob: 785d57b2ba5a02c97869fa2c34a1828d181129cd (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>
<html>
<head>
<title>Example with iframe that notifies containing document via cross document messaging</title>
<script src="../testharness.js"></script>
<script src="../testharnessreport.js"></script>
</head>
<body>
<h1>Notifications From Tests Running In An IFRAME</h1>
<p>A test is run inside an <tt>iframe</tt> with a same origin document. The
containing document should receive messages via <tt>postMessage</tt>/
<tt>onmessage</tt> as the tests progress inside the <tt>iframe</tt>. A single
passing test is expected in the summary below.
</p>
<div id="log"></div>

<script>
var t = async_test("Containing document receives messages");
var start_received = false;
var result_received = false;
var completion_received = false;

// These are the messages that are expected to be seen while running the tests
// in the IFRAME.
var expected_messages = [
    t.step_func(
        function(message) {
            assert_equals(message.data.type, "start");
            assert_own_property(message.data, "properties");
        }),

    t.step_func(
        function(message) {
            assert_equals(message.data.type, "test_state");
            assert_equals(message.data.test.status, message.data.test.NOTRUN);
        }),

    t.step_func(
        function(message) {
            assert_equals(message.data.type, "result");
            assert_equals(message.data.test.status, message.data.test.PASS);
        }),

    t.step_func(
        function(message) {
            assert_equals(message.data.type, "complete");
            assert_equals(message.data.tests.length, 1);
            assert_equals(message.data.tests[0].status,
                          message.data.tests[0].PASS);
            assert_equals(message.data.status.status, message.data.status.OK);
            t.done();
        }),

    t.unreached_func("Too many messages received")
];

on_event(window,
         "message",
         function(message) {
             var handler = expected_messages.shift();
             handler(message);
         });
</script>
<iframe src="apisample6.html" style="display:none">
  <!-- apisample6 implements a file_is_test test. -->
</iframe>
</body>