summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js')
-rw-r--r--toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js b/toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js
new file mode 100644
index 0000000000..2a0bdba156
--- /dev/null
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_background_api_injection.js
@@ -0,0 +1,41 @@
+"use strict";
+
+const server = createHttpServer({ hosts: ["example.com"] });
+server.registerDirectory("/data/", do_get_file("data"));
+
+add_task(async function testBackgroundWindow() {
+ // Background navigates to http:-URL.
+ // TODO bug 1286083: Disallow background navigation.
+ allow_unsafe_parent_loads_when_extensions_not_remote();
+
+ let extension = ExtensionTestUtils.loadExtension({
+ background() {
+ browser.test.log("background script executed");
+ window.location =
+ "http://example.com/data/file_privilege_escalation.html";
+ },
+ });
+
+ let awaitConsole = new Promise(resolve => {
+ Services.console.registerListener(function listener(message) {
+ if (/WebExt Privilege Escalation/.test(message.message)) {
+ Services.console.unregisterListener(listener);
+ resolve(message);
+ }
+ });
+ });
+
+ await extension.startup();
+
+ let message = await awaitConsole;
+ ok(
+ message.message.includes(
+ "WebExt Privilege Escalation: typeof(browser) = undefined"
+ ),
+ "Document does not have `browser` APIs."
+ );
+
+ await extension.unload();
+
+ revert_allow_unsafe_parent_loads_when_extensions_not_remote();
+});