diff options
Diffstat (limited to 'caps/tests/mochitest/test_app_principal_equality.html')
-rw-r--r-- | caps/tests/mochitest/test_app_principal_equality.html | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/caps/tests/mochitest/test_app_principal_equality.html b/caps/tests/mochitest/test_app_principal_equality.html new file mode 100644 index 000000000..f59f1f789 --- /dev/null +++ b/caps/tests/mochitest/test_app_principal_equality.html @@ -0,0 +1,88 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=777467 +--> +<head> + <meta charset="utf-8"> + <title>Test app principal's equality</title> + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=777467">Mozilla Bug 777467</a> +<p id="display"></p> +<script> + +/** Test for app principal's equality **/ + +SimpleTest.waitForExplicitFinish(); + +var permissions = new Promise(resolve => { + SpecialPowers.pushPermissions( + [{ type: "browser", allow: true, context: document }, + { type: "embed-apps", allow: true, context: document }], + resolve); +}); + +permissions.then(() => { + $('content').innerHTML = + '<iframe src="error404"></iframe>\n' + + '<iframe mozbrowser src="error404"></iframe>\n' + + '<iframe mozapp="http://example.org/manifest.webapp" mozbrowser src="error404"></iframe>'; + + var iframes = document.getElementsByTagName("iframe"); + var promises = [] + for (var i = 0; i < promises.length; ++i) { + promises.push(new Promise(resolve => { + iframes[i].addEventListener("load", resolve); + })); + } + + return Promise.all(promises); +}); + +var prefs = new Promise(resolve => { + SpecialPowers.pushPrefEnv( + { set: [[ "dom.mozBrowserFramesEnabled", true ], + [ "dom.ipc.browser_frames.oop_by_default", false ]] }, + resolve); +}); +</script> +<div id="content" style="display: none;"> +</div> +<pre id="test"> +<script type="application/javascript"> + +function canAccessDocument(win) { + var result = true; + try { + win.document; + } catch(e) { + result = false; + } + return result; +} + +var loaded = new Promise(resolve => addLoadEvent(resolve)); + +Promise.all([ permissions, prefs, loaded ]).then(runTest); + +function runTest() { + // Test the witness frame (we can access same-origin frame). + is(canAccessDocument(frames[0]), true, + "should be able to access the first frame"); + + // Test different app/browserElement frames. + for (var i=1; i<frames.length; ++i) { + is(canAccessDocument(frames[i]), false, + "should not be able to access the other frames"); + } + + SimpleTest.finish(); +} + +</script> +</pre> +</body> +</html> |