summaryrefslogtreecommitdiffstats
path: root/toolkit/components/webextensions/ext-c-backgroundPage.js
diff options
context:
space:
mode:
authorMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
committerMatt A. Tobin <email@mattatobin.com>2018-02-10 02:51:36 -0500
commit37d5300335d81cecbecc99812747a657588c63eb (patch)
tree765efa3b6a56bb715d9813a8697473e120436278 /toolkit/components/webextensions/ext-c-backgroundPage.js
parentb2bdac20c02b12f2057b9ef70b0a946113a00e00 (diff)
parent4fb11cd5966461bccc3ed1599b808237be6b0de9 (diff)
downloadUXP-37d5300335d81cecbecc99812747a657588c63eb.tar
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.gz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.lz
UXP-37d5300335d81cecbecc99812747a657588c63eb.tar.xz
UXP-37d5300335d81cecbecc99812747a657588c63eb.zip
Merge branch 'ext-work'
Diffstat (limited to 'toolkit/components/webextensions/ext-c-backgroundPage.js')
-rw-r--r--toolkit/components/webextensions/ext-c-backgroundPage.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/toolkit/components/webextensions/ext-c-backgroundPage.js b/toolkit/components/webextensions/ext-c-backgroundPage.js
new file mode 100644
index 000000000..b5074dd9a
--- /dev/null
+++ b/toolkit/components/webextensions/ext-c-backgroundPage.js
@@ -0,0 +1,45 @@
+"use strict";
+
+global.initializeBackgroundPage = (contentWindow) => {
+ // Override the `alert()` method inside background windows;
+ // we alias it to console.log().
+ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1203394
+ let alertDisplayedWarning = false;
+ let alertOverwrite = text => {
+ if (!alertDisplayedWarning) {
+ require("devtools/client/framework/devtools-browser");
+
+ let hudservice = require("devtools/client/webconsole/hudservice");
+ hudservice.openBrowserConsoleOrFocus();
+
+ contentWindow.console.warn("alert() is not supported in background windows; please use console.log instead.");
+
+ alertDisplayedWarning = true;
+ }
+
+ contentWindow.console.log(text);
+ };
+ Cu.exportFunction(alertOverwrite, contentWindow, {defineAs: "alert"});
+};
+
+extensions.registerSchemaAPI("extension", "addon_child", context => {
+ function getBackgroundPage() {
+ for (let view of context.extension.views) {
+ if (view.viewType == "background" && context.principal.subsumes(view.principal)) {
+ return view.contentWindow;
+ }
+ }
+ return null;
+ }
+ return {
+ extension: {
+ getBackgroundPage,
+ },
+
+ runtime: {
+ getBackgroundPage() {
+ return context.cloneScope.Promise.resolve(getBackgroundPage());
+ },
+ },
+ };
+});