46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
"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());
|
|
},
|
|
},
|
|
};
|
|
});
|