diff options
Diffstat (limited to 'testing/web-platform/tests/html/dom/self-origin.sub.html')
-rw-r--r-- | testing/web-platform/tests/html/dom/self-origin.sub.html | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/dom/self-origin.sub.html b/testing/web-platform/tests/html/dom/self-origin.sub.html new file mode 100644 index 0000000000..aba2b3016a --- /dev/null +++ b/testing/web-platform/tests/html/dom/self-origin.sub.html @@ -0,0 +1,93 @@ +<!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> |