summaryrefslogtreecommitdiffstats
path: root/caps/tests/mochitest/test_app_principal_equality.html
diff options
context:
space:
mode:
Diffstat (limited to 'caps/tests/mochitest/test_app_principal_equality.html')
-rw-r--r--caps/tests/mochitest/test_app_principal_equality.html88
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>