blob: 785d57b2ba5a02c97869fa2c34a1828d181129cd [file] [log] [blame]
<!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>