1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-27 13:43:41 +00:00

PM-6558 Vault Onboarding Extension Check on Install (#8216)

updated browser runtime background to send hasBWInstalled message on installation
This commit is contained in:
Jason Ng
2024-03-06 10:48:27 -05:00
committed by GitHub
parent 06993594cc
commit e2a543506a
8 changed files with 56 additions and 8 deletions

View File

@@ -1,5 +1,7 @@
import { mock } from "jest-mock-extended";
import { VaultOnboardingMessages } from "@bitwarden/common/vault/enums/vault-onboarding.enum";
import { postWindowMessage, sendExtensionRuntimeMessage } from "../spec/testing-utils";
describe("ContentMessageHandler", () => {
@@ -30,9 +32,11 @@ describe("ContentMessageHandler", () => {
const mockPostMessage = jest.fn();
window.postMessage = mockPostMessage;
postWindowMessage({ command: "checkIfBWExtensionInstalled" });
postWindowMessage({ command: VaultOnboardingMessages.checkBwInstalled });
expect(mockPostMessage).toHaveBeenCalled();
expect(mockPostMessage).toHaveBeenCalledWith({
command: VaultOnboardingMessages.HasBwInstalled,
});
});
});

View File

@@ -1,3 +1,5 @@
import { VaultOnboardingMessages } from "@bitwarden/common/vault/enums/vault-onboarding.enum";
import {
ContentMessageWindowData,
ContentMessageWindowEventHandlers,
@@ -33,7 +35,7 @@ const windowMessageHandlers: ContentMessageWindowEventHandlers = {
* Handles the post to the web vault showing the extension has been installed
*/
function handleExtensionInstallCheck() {
window.postMessage({ command: "hasBWInstalled" });
window.postMessage({ command: VaultOnboardingMessages.HasBwInstalled });
}
/**

View File

@@ -345,10 +345,34 @@ export default class RuntimeBackground {
if (await this.environmentService.hasManagedEnvironment()) {
await this.environmentService.setUrlsToManagedEnvironment();
}
await this.sendBwInstalledMessageToVault();
}
this.onInstalledReason = null;
}
}, 100);
}
async sendBwInstalledMessageToVault() {
try {
const vaultUrl = this.environmentService.getWebVaultUrl();
const urlObj = new URL(vaultUrl);
const tabs = await BrowserApi.tabsQuery({ url: `${urlObj.href}*` });
if (!tabs?.length) {
return;
}
for (const tab of tabs) {
await BrowserApi.executeScriptInTab(tab.id, {
file: "content/send-on-installed-message.js",
runAt: "document_end",
});
}
} catch (e) {
this.logService.error(`Error sending on installed message to vault: ${e}`);
}
}
}

View File

@@ -0,0 +1,5 @@
import { VaultOnboardingMessages } from "@bitwarden/common/vault/enums/vault-onboarding.enum";
(function (globalContext) {
globalContext.postMessage({ command: VaultOnboardingMessages.HasBwInstalled });
})(window);

View File

@@ -179,6 +179,7 @@ const mainConfig = {
"overlay/list": "./src/autofill/overlay/pages/list/bootstrap-autofill-overlay-list.ts",
"encrypt-worker": "../../libs/common/src/platform/services/cryptography/encrypt.worker.ts",
"content/lp-fileless-importer": "./src/tools/content/lp-fileless-importer.ts",
"content/send-on-installed-message": "./src/vault/content/send-on-installed-message.ts",
"content/lp-suppress-import-download": "./src/tools/content/lp-suppress-import-download.ts",
},
optimization: {