Skip to content

Commit c48ca8e

Browse files
authored
#6141 Fix isServiceWorker check (#6144)
* update isServiceWorker check * fix isServiceWorker
1 parent c9ed5e2 commit c48ca8e

3 files changed

Lines changed: 9 additions & 14 deletions

File tree

extension/js/common/browser/browser-msg.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -629,8 +629,8 @@ export class BrowserMsg {
629629
private static async sendAwait(destString: string | undefined, name: string, bm?: Dict<unknown>, awaitRes = false): Promise<Bm.Response> {
630630
bm = bm || {};
631631
// console.debug(`sendAwait ${name} to ${destString || 'bg'}`, bm);
632-
const isBackgroundPage = await Env.isBackgroundPage();
633-
if (isBackgroundPage && BrowserMsg.HANDLERS_REGISTERED_BACKGROUND && typeof destString === 'undefined') {
632+
const isServiceWorker = await Env.isServiceWorker();
633+
if (isServiceWorker && BrowserMsg.HANDLERS_REGISTERED_BACKGROUND && typeof destString === 'undefined') {
634634
// calling from bg script to bg script: skip messaging
635635
const handler: Bm.AsyncRespondingHandler = BrowserMsg.HANDLERS_REGISTERED_BACKGROUND[name];
636636
return await handler(bm);
@@ -647,7 +647,7 @@ export class BrowserMsg {
647647
stack: CatchHelper.stackTrace(),
648648
};
649649
// eslint-disable-next-line no-null/no-null
650-
if (!(await Env.isBackgroundPage()) && msg.to !== null) {
650+
if (!(await Env.isServiceWorker()) && msg.to !== null) {
651651
const validMsg: Bm.RawWithWindowExtensions = { ...msg, to: msg.to };
652652
// send via window messaging in parallel
653653
Catch.try(async () => {
@@ -695,9 +695,9 @@ export class BrowserMsg {
695695
};
696696
try {
697697
if (chrome.runtime) {
698-
Env.isBackgroundPage()
699-
.then(isBackgroundPage => {
700-
if (isBackgroundPage) {
698+
Env.isServiceWorker()
699+
.then(isServiceWorker => {
700+
if (isServiceWorker) {
701701
chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
702702
for (const tab of tabs) {
703703
chrome.tabs.sendMessage(Number(tab.id), msg, resolve);

extension/js/common/browser/chrome.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ type ChromeStorageType = 'local' | 'session';
1313

1414
const handleFatalErr = async (reason: 'storage_undefined', error: Error) => {
1515
try {
16-
if (await Env.isBackgroundPage()) {
16+
if (await Env.isServiceWorker()) {
1717
throw error;
1818
} else if (Env.isContentScript()) {
1919
console.error('Incomplete extension environment in content script', error);

extension/js/common/browser/env.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,8 @@ export class Env {
4242
}
4343

4444
// Check if the current context is a Service Worker
45-
public static async isBackgroundPage() {
46-
// In firefox, window&document is not null even in background page
47-
if (typeof browser !== 'undefined' && typeof browser.runtime?.getBackgroundPage !== 'undefined') {
48-
const backgroundPage = await browser.runtime.getBackgroundPage();
49-
return backgroundPage === window;
50-
}
51-
return typeof window === 'undefined' && typeof document === 'undefined';
45+
public static async isServiceWorker() {
46+
return typeof window === 'undefined' && typeof importScripts === 'function';
5247
}
5348

5449
public static isExtension() {

0 commit comments

Comments
 (0)