From 14c6d97fd1e85de9c0da343623bbaeeee0a0f907 Mon Sep 17 00:00:00 2001 From: Nick Krantz <125900171+nick-livefront@users.noreply.github.com> Date: Mon, 17 Mar 2025 10:20:00 -0500 Subject: [PATCH] move `windowMessageHandlers` above event listeners to account for safari bug (#13773) --- .../content/content-message-handler.ts | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/apps/browser/src/autofill/content/content-message-handler.ts b/apps/browser/src/autofill/content/content-message-handler.ts index 5f98cf348a..55e0c071a5 100644 --- a/apps/browser/src/autofill/content/content-message-handler.ts +++ b/apps/browser/src/autofill/content/content-message-handler.ts @@ -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 */