From cb76f004b4229787d95304e9bde01f31ad9f04b8 Mon Sep 17 00:00:00 2001 From: Cesar Gonzalez Date: Tue, 18 Jun 2024 12:07:42 -0500 Subject: [PATCH] [PM-5189] Reworking how we handle updating the inline menu position --- .../autofill/background/overlay.background.ts | 50 ++----------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/apps/browser/src/autofill/background/overlay.background.ts b/apps/browser/src/autofill/background/overlay.background.ts index a219b91573c..33c13ab6562 100644 --- a/apps/browser/src/autofill/background/overlay.background.ts +++ b/apps/browser/src/autofill/background/overlay.background.ts @@ -65,10 +65,8 @@ export class OverlayBackground implements OverlayBackgroundInterface { private inlineMenuCiphers: Map = new Map(); private inlineMenuPageTranslations: Record; private inlineMenuFadeInTimeout: number | NodeJS.Timeout; - private delayedUpdateInlineMenuPositionTimeout: number | NodeJS.Timeout; private delayedCloseTimeout: number | NodeJS.Timeout; private repositionInlineMenu$ = new Subject(); - private rebuildSubFrameOffsets$ = new Subject(); private focusedFieldData: FocusedFieldData; private isFieldCurrentlyFocused: boolean = false; private isFieldCurrentlyFilling: boolean = false; @@ -147,12 +145,6 @@ export class OverlayBackground implements OverlayBackgroundInterface { switchMap((sender) => this.repositionInlineMenu(sender)), ) .subscribe(); - this.rebuildSubFrameOffsets$ - .pipe( - debounceTime(200), - switchMap((sender) => this.rebuildSubFrameOffsets(sender)), - ) - .subscribe(); } /** @@ -312,7 +304,6 @@ export class OverlayBackground implements OverlayBackgroundInterface { const subFrameOffsetsForTab = this.subFrameOffsetsForTab[sender.tab.id]; if (subFrameOffsetsForTab) { subFrameOffsetsForTab.set(message.subFrameData.frameId, message.subFrameData); - this.delayedUpdateInlineMenuPosition(sender); } } @@ -385,7 +376,6 @@ export class OverlayBackground implements OverlayBackgroundInterface { } subFrameOffsetsForTab.set(frameId, subFrameData); - this.delayedUpdateInlineMenuPosition(sender); } /** @@ -426,20 +416,6 @@ export class OverlayBackground implements OverlayBackgroundInterface { } } - /** - * Triggers a delayed repositioning of the inline menu. Used in cases where the page in some way - * is resized, scrolled, or when a sub frame is interacted with. - * - * @param sender - The sender of the message - */ - private delayedUpdateInlineMenuPosition(sender: chrome.runtime.MessageSender) { - this.clearDelayedUpdateInlineMenuPositionTimeout(); - this.delayedUpdateInlineMenuPositionTimeout = globalThis.setTimeout(async () => { - this.clearDelayedUpdateInlineMenuPositionTimeout(); - await this.updateInlineMenuPositionAfterRepositionEvent(sender); - }, 650); - } - /** * Handles updating the inline menu's position after rebuilding the sub frames * for the provided tab. Will skip repositioning the inline menu if the field @@ -597,16 +573,6 @@ export class OverlayBackground implements OverlayBackgroundInterface { } } - /** - * Clears the timeout used to trigger a delayed update of the inline menu position. - */ - private clearDelayedUpdateInlineMenuPositionTimeout() { - if (this.delayedUpdateInlineMenuPositionTimeout) { - clearTimeout(this.delayedUpdateInlineMenuPositionTimeout); - this.delayedUpdateInlineMenuPositionTimeout = null; - } - } - /** * Handles cleanup when an overlay element is closed. Disconnects * the list and button ports and sets them to null. @@ -646,16 +612,7 @@ export class OverlayBackground implements OverlayBackgroundInterface { { overlayElement }: { overlayElement?: string }, sender: chrome.runtime.MessageSender, ) { - if (this.isFieldCurrentlyFocused && this.delayedUpdateInlineMenuPositionTimeout) { - this.closeInlineMenu(sender, { forceCloseInlineMenu: true }); - return; - } - - if ( - !overlayElement || - sender.tab.id !== this.focusedFieldData?.tabId || - this.delayedUpdateInlineMenuPositionTimeout - ) { + if (!overlayElement || sender.tab.id !== this.focusedFieldData?.tabId) { return; } @@ -1371,9 +1328,8 @@ export class OverlayBackground implements OverlayBackgroundInterface { return; } - if (this.focusedFieldData.frameId > 0 && sender.frameId !== this.focusedFieldData.frameId) { - this.rebuildSubFrameOffsets$.next(sender); - return; + if (this.focusedFieldData.frameId > 0) { + await this.rebuildSubFrameOffsets(sender); } await this.updateInlineMenuPositionAfterRepositionEvent(sender);