| <!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="single-page-test-pass.html" style="display:none"> |
| <!-- single-page-test-pass.html implements a file_is_test test. --> |
| </iframe> |
| <script type="text/json" id="expected"> |
| { |
| "summarized_status": { |
| "status_string": "OK", |
| "message": null, |
| "stack": null |
| }, |
| "summarized_tests": [ |
| { |
| "status_string": "PASS", |
| "name": "Containing document receives messages", |
| "properties": {}, |
| "message": null, |
| "stack": null |
| } |
| ], |
| "type": "complete" |
| } |
| </script> |
| </body> |