diff options
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_sandboxed_resource.js')
-rw-r--r-- | toolkit/components/extensions/test/xpcshell/test_ext_sandboxed_resource.js | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_sandboxed_resource.js b/toolkit/components/extensions/test/xpcshell/test_ext_sandboxed_resource.js new file mode 100644 index 0000000000..05489d753d --- /dev/null +++ b/toolkit/components/extensions/test/xpcshell/test_ext_sandboxed_resource.js @@ -0,0 +1,55 @@ +"use strict"; + +// Test that an extension page which is sandboxed may load resources +// from itself without relying on web acessible resources. +add_task(async function test_webext_background_sandbox_privileges() { + function backgroundSubframeScript() { + window.parent.postMessage(typeof browser, "*"); + } + + function backgroundScript() { + /* eslint-disable-next-line mozilla/balanced-listeners */ + window.addEventListener("message", event => { + if (event.data == "undefined") { + browser.test.notifyPass("webext-background-sandbox-privileges"); + } else { + browser.test.notifyFail("webext-background-sandbox-privileges"); + } + }); + } + + let extensionData = { + manifest: { + background: { + page: "background.html", + }, + }, + files: { + "background.html": `<!DOCTYPE> + <html> + <head> + <meta charset="utf-8"> + </head> + <body> + <script src="background.js"><\/script> + <iframe src="background-subframe.html" sandbox="allow-scripts"></iframe> + </body> + </html>`, + "background-subframe.html": `<!DOCTYPE> + <html> + <head> + <meta charset="utf-8"> + <script src="background-subframe.js"><\/script> + </head> + </html>`, + "background-subframe.js": backgroundSubframeScript, + "background.js": backgroundScript, + }, + }; + let extension = ExtensionTestUtils.loadExtension(extensionData); + + await extension.startup(); + + await extension.awaitFinish("webext-background-sandbox-privileges"); + await extension.unload(); +}); |