| <!DOCTYPE HTML> | |
| <meta charset=utf-8> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <div id=log></div> | |
| <iframe></iframe> | |
| <iframe id="blob-test"></iframe> <!-- will get blob: URI --> | |
| <iframe src="javascript:'javascript'"></iframe> | |
| <iframe srcdoc="srcdoc"></iframe> | |
| <!-- Use the non-default HTTP port so we can make sure it gets included in | |
| self.origin --> | |
| <iframe src="http://{{domains[www1]}}:{{ports[http][1]}}{{location[path]}}/../resources/self-origin-subframe.html"></iframe> | |
| <!-- Using the Unicode version on purpose, we expect to get back the Punycode | |
| version in self.origin --> | |
| <iframe src="http://élève.{{domains[]}}:{{ports[http][1]}}{{location[path]}}/../resources/self-origin-subframe.html"></iframe> | |
| <iframe src="resources/self-origin-subframe.html" sandbox="allow-scripts"></iframe> | |
| <script type="application/javascript"> | |
| test(function() { | |
| var blob = new Blob(['blob']); | |
| var url = URL.createObjectURL(blob); | |
| document.getElementById("blob-test").src = url; | |
| }, "Assigning blob url"); | |
| /* Each message test is a four things: window to send message to, message to | |
| send, expected response, async test to use. */ | |
| var messageTests = [ | |
| [ frames[4], "getOrigin", "http://{{domains[www1]}}:{{ports[http][1]}}", | |
| async_test("Should have the right origin for cross-origin subframe") ], | |
| [ frames[4], "setDomainAndGetOrigin", "http://{{domains[www1]}}:{{ports[http][1]}}", | |
| async_test("Should have the right origin for cross-origin subframe after setting document.domain") ], | |
| [ frames[5], "getOrigin", "http://xn--lve-6lad.{{domains[]}}:{{ports[http][1]}}", | |
| async_test("Should have the right origin for IDN subframe") ], | |
| [ frames[5], "setDomainAndGetOrigin", "http://xn--lve-6lad.{{domains[]}}:{{ports[http][1]}}", | |
| async_test("Should have the right origin for IDN subframe after setting document.domain") ], | |
| [ frames[6], "getOrigin", "null", | |
| async_test("Should have the right origin for sandboxed iframe") ], | |
| ]; | |
| var curTest = 0; | |
| function nextMessageTest() { | |
| if (curTest == messageTests.length) { | |
| return; | |
| } | |
| var testData = messageTests[curTest]; | |
| testData[0].postMessage(testData[1], "*"); | |
| } | |
| window.onmessage = function(e) { | |
| var testData = messageTests[curTest++]; | |
| testData[3].step(function() { | |
| assert_equals(e.data, testData[2]) | |
| }); | |
| testData[3].done(); | |
| nextMessageTest(); | |
| } | |
| addEventListener("load", nextMessageTest); | |
| test(function() { | |
| assert_equals(self.origin, "http://{{location[host]}}"); | |
| }, "We should have the right origin for our page"); | |
| var t1 = async_test("about:blank subframe origins"); | |
| addEventListener("load", t1.step_func_done(function() { | |
| assert_equals(frames[0].location.origin, "null", | |
| "Should have the right location origin for about:blank iframe"); | |
| assert_equals(frames[0].origin, "http://{{location[host]}}", | |
| "Should have the right origin for about:blank iframe"); | |
| })); | |
| var t2 = async_test("blob: subframe origins"); | |
| addEventListener("load", t2.step_func_done(function() { | |
| assert_equals(frames[1].location.origin, "http://{{location[host]}}", | |
| "Should have the right location origin for blob: iframe"); | |
| assert_equals(frames[1].origin, "http://{{location[host]}}", | |
| "Should have the right origin for blob: iframe"); | |
| })); | |
| var t3 = async_test("javascript: subframe origins"); | |
| addEventListener("load", t3.step_func_done(function() { | |
| assert_equals(frames[2].origin, "http://{{location[host]}}", | |
| "Should have the right origin for javascript: iframe"); | |
| })); | |
| var t4 = async_test("srcdoc subframe origins"); | |
| addEventListener("load", t4.step_func_done(function() { | |
| assert_equals(frames[3].location.origin, "null", | |
| "Should have the right location origin for srcdoc iframe"); | |
| assert_equals(frames[3].origin, "http://{{location[host]}}", | |
| "Should have the right origin for srcdoc iframe"); | |
| })); | |
| </script> |