1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-06 00:13:28 +00:00

move windowMessageHandlers above event listeners to account for safari bug (#13773)

This commit is contained in:
Nick Krantz
2025-03-17 10:20:00 -05:00
committed by GitHub
parent fdcb6ff7a2
commit 14c6d97fd1

View File

@@ -5,6 +5,21 @@ import {
ContentMessageWindowEventHandlers,
} from "./abstractions/content-message-handler";
/**
* Handlers for window messages from the content script.
* NOTE: These handlers should be above the event listener to ensure they are defined before being used.
*/
const windowMessageHandlers: ContentMessageWindowEventHandlers = {
authResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleAuthResultMessage(data, referrer),
webAuthnResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleWebAuthnResultMessage(data, referrer),
[VaultMessages.checkBwInstalled]: () => handleExtensionInstallCheck(),
duoResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleDuoResultMessage(data, referrer),
[VaultMessages.OpenPopup]: () => handleOpenPopupMessage(),
};
/**
* IMPORTANT: Safari seems to have a bug where it doesn't properly handle
* window message events from content scripts when the listener these events
@@ -18,20 +33,6 @@ setupExtensionDisconnectAction(() => {
chrome.runtime.onMessage.removeListener(handleExtensionMessage);
});
/**
* Handlers for window messages from the content script.
*/
const windowMessageHandlers: ContentMessageWindowEventHandlers = {
authResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleAuthResultMessage(data, referrer),
webAuthnResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleWebAuthnResultMessage(data, referrer),
[VaultMessages.checkBwInstalled]: () => handleExtensionInstallCheck(),
duoResult: ({ data, referrer }: { data: any; referrer: string }) =>
handleDuoResultMessage(data, referrer),
[VaultMessages.OpenPopup]: () => handleOpenPopupMessage(),
};
/**
* Handles the post to the web vault showing the extension has been installed
*/