fune/toolkit/components/extensions/child/ext-backgroundPage.js
Rob Wu 594c41f9cc Bug 1843846 - Add extra test coverage for getBackgroundPage() r=rpl
The parent patches and bug are about issues with tracing the correct
context in the parent process. The current implementation in the child
already works correctly (even before the parent patches). To make sure
that this continues to work correctly in the future, add test coverage
for `extension.getBackgroundPage()`.

Differential Revision: https://phabricator.services.mozilla.com/D183756
2023-08-04 16:29:40 +00:00

40 lines
1.2 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
this.backgroundPage = class extends ExtensionAPI {
getAPI(context) {
function getBackgroundPage() {
for (let view of context.extension.views) {
if (
// To find the (top-level) background context, this logic relies on
// the order of views, implied by the fact that the top-level context
// is created before child contexts. If this assumption ever becomes
// invalid, add a check for view.isBackgroundContext.
view.viewType == "background" &&
context.principal.subsumes(view.principal)
) {
return view.contentWindow;
}
}
return null;
}
return {
extension: {
getBackgroundPage,
},
runtime: {
getBackgroundPage() {
return context.childManager
.callParentAsyncFunction("runtime.internalWakeupBackground", [])
.then(() => {
return context.cloneScope.Promise.resolve(getBackgroundPage());
});
},
},
};
}
};