Skip to content

Commit 3a260ee

Browse files
committed
feat(web-extension): detect bg script when on firefox
Firefox runs background script in a hidden page, so it has a window object.
1 parent b13c33d commit 3a260ee

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

packages/web-extension/src/messaging/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import { BackgroundMessenger, createBackgroundMessenger, generalizeBackgroundMessenger } from './BackgroundMessenger';
22
import { ChannelName, ConsumeRemoteApiOptions, ExposeApiProps, MessengerDependencies } from './types';
3-
import { FinalizationRegistryDestructor } from './util';
3+
import { FinalizationRegistryDestructor, isBackgroundProcess } from './util';
44
import { consumeMessengerRemoteApi, exposeMessengerApi } from './remoteApi';
55
import { createNonBackgroundMessenger } from './NonBackgroundMessenger';
6+
import { runtime } from 'webextension-polyfill';
67

78
export * from './BackgroundMessenger';
89
export * from './NonBackgroundMessenger';
@@ -15,7 +16,7 @@ export * from './errors';
1516

1617
export type BaseChannel = { baseChannel: ChannelName };
1718

18-
const isInBackgroundProcess = typeof window === 'undefined';
19+
const isInBackgroundProcess = isBackgroundProcess(runtime);
1920

2021
const getBackgroundMessenger = (() => {
2122
let backgroundMessenger: BackgroundMessenger | null = null;

packages/web-extension/src/messaging/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export interface MessengerPort {
6060
export interface MinimalRuntime {
6161
connect(connectInfo: Runtime.ConnectConnectInfoType): MessengerPort;
6262
onConnect: MinimalEvent<(port: MessengerPort) => void>;
63+
getBackgroundPage?: unknown;
6364
lastError?: unknown;
6465
}
6566

packages/web-extension/src/messaging/util.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
FactoryCallMessage,
1010
InternalMsg,
1111
MethodRequest,
12+
MinimalRuntime,
1213
RequestMessage,
1314
ResponseMessage
1415
} from './types';
@@ -77,3 +78,6 @@ export class FinalizationRegistryDestructor implements Destructor {
7778
this.#registry.register(obj, objectId);
7879
}
7980
}
81+
82+
export const isBackgroundProcess = (runtime: MinimalRuntime) =>
83+
typeof window === 'undefined' || typeof runtime.getBackgroundPage === 'function';

0 commit comments

Comments
 (0)