diff --git a/extension/js/common/browser/browser-msg.ts b/extension/js/common/browser/browser-msg.ts index 15ffca67143..3321888a884 100644 --- a/extension/js/common/browser/browser-msg.ts +++ b/extension/js/common/browser/browser-msg.ts @@ -629,8 +629,8 @@ export class BrowserMsg { private static async sendAwait(destString: string | undefined, name: string, bm?: Dict, awaitRes = false): Promise { bm = bm || {}; // console.debug(`sendAwait ${name} to ${destString || 'bg'}`, bm); - const isBackgroundPage = await Env.isBackgroundPage(); - if (isBackgroundPage && BrowserMsg.HANDLERS_REGISTERED_BACKGROUND && typeof destString === 'undefined') { + const isServiceWorker = await Env.isServiceWorker(); + if (isServiceWorker && BrowserMsg.HANDLERS_REGISTERED_BACKGROUND && typeof destString === 'undefined') { // calling from bg script to bg script: skip messaging const handler: Bm.AsyncRespondingHandler = BrowserMsg.HANDLERS_REGISTERED_BACKGROUND[name]; return await handler(bm); @@ -647,7 +647,7 @@ export class BrowserMsg { stack: CatchHelper.stackTrace(), }; // eslint-disable-next-line no-null/no-null - if (!(await Env.isBackgroundPage()) && msg.to !== null) { + if (!(await Env.isServiceWorker()) && msg.to !== null) { const validMsg: Bm.RawWithWindowExtensions = { ...msg, to: msg.to }; // send via window messaging in parallel Catch.try(async () => { @@ -695,9 +695,9 @@ export class BrowserMsg { }; try { if (chrome.runtime) { - Env.isBackgroundPage() - .then(isBackgroundPage => { - if (isBackgroundPage) { + Env.isServiceWorker() + .then(isServiceWorker => { + if (isServiceWorker) { chrome.tabs.query({ active: true, currentWindow: true }, tabs => { for (const tab of tabs) { chrome.tabs.sendMessage(Number(tab.id), msg, resolve); diff --git a/extension/js/common/browser/chrome.ts b/extension/js/common/browser/chrome.ts index c9cbca975f9..649948aa1c9 100644 --- a/extension/js/common/browser/chrome.ts +++ b/extension/js/common/browser/chrome.ts @@ -13,7 +13,7 @@ type ChromeStorageType = 'local' | 'session'; const handleFatalErr = async (reason: 'storage_undefined', error: Error) => { try { - if (await Env.isBackgroundPage()) { + if (await Env.isServiceWorker()) { throw error; } else if (Env.isContentScript()) { console.error('Incomplete extension environment in content script', error); diff --git a/extension/js/common/browser/env.ts b/extension/js/common/browser/env.ts index d7b4828eafd..996a1a9f25a 100644 --- a/extension/js/common/browser/env.ts +++ b/extension/js/common/browser/env.ts @@ -42,13 +42,8 @@ export class Env { } // Check if the current context is a Service Worker - public static async isBackgroundPage() { - // In firefox, window&document is not null even in background page - if (typeof browser !== 'undefined' && typeof browser.runtime?.getBackgroundPage !== 'undefined') { - const backgroundPage = await browser.runtime.getBackgroundPage(); - return backgroundPage === window; - } - return typeof window === 'undefined' && typeof document === 'undefined'; + public static async isServiceWorker() { + return typeof window === 'undefined' && typeof importScripts === 'function'; } public static isExtension() {