aboutsummaryrefslogtreecommitdiff
path: root/extensions/chrome-profile-bridge/index.ts
diff options
context:
space:
mode:
authorTianren Dong <tianrendong.dtr@gmail.com>2026-05-15 02:42:38 -0400
committerTianren Dong <tianrendong.dtr@gmail.com>2026-05-15 02:42:38 -0400
commit0ce964f978a613e6dbe624a09210fd71b420546e (patch)
tree8bd1be3fa134f447003af355dc2a101bae84f807 /extensions/chrome-profile-bridge/index.ts
parent2f0384423d36b38b6f9552a78ca3d8d3fec1e75d (diff)
Clear pi-chrome singleton on shutdown
Diffstat (limited to 'extensions/chrome-profile-bridge/index.ts')
-rw-r--r--extensions/chrome-profile-bridge/index.ts8
1 files changed, 6 insertions, 2 deletions
diff --git a/extensions/chrome-profile-bridge/index.ts b/extensions/chrome-profile-bridge/index.ts
index 5c72da6..f96bb12 100644
--- a/extensions/chrome-profile-bridge/index.ts
+++ b/extensions/chrome-profile-bridge/index.ts
@@ -419,8 +419,9 @@ function StringEnum<T extends readonly [string, ...string[]]>(values: T) {
}
export default function (pi: ExtensionAPI): void {
+ const instanceToken = Symbol("pi-chrome-instance");
const globalState = globalThis as typeof globalThis & {
- [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string };
+ [PI_CHROME_GLOBAL_KEY]?: { version: string; root: string; token: symbol };
};
const alreadyLoaded = globalState[PI_CHROME_GLOBAL_KEY];
if (alreadyLoaded) {
@@ -429,7 +430,7 @@ export default function (pi: ExtensionAPI): void {
);
return;
}
- globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot() };
+ globalState[PI_CHROME_GLOBAL_KEY] = { version: PI_CHROME_VERSION, root: extensionRoot(), token: instanceToken };
const bridge = new ChromeProfileBridge(DEFAULT_HOST, DEFAULT_PORT);
let backgroundDefault = false;
@@ -490,6 +491,9 @@ export default function (pi: ExtensionAPI): void {
pi.on("session_shutdown", () => {
bridge.stop();
+ if (globalState[PI_CHROME_GLOBAL_KEY]?.token === instanceToken) {
+ delete globalState[PI_CHROME_GLOBAL_KEY];
+ }
});
pi.on("before_agent_start", (event) => {