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

[PM-5189] Reworking how we handle updating ciphers within nested sub frames

This commit is contained in:
Cesar Gonzalez
2024-06-17 07:55:52 -05:00
parent aaa585c992
commit c06c4e9528
3 changed files with 6 additions and 10 deletions

View File

@@ -120,7 +120,7 @@ export type OverlayBackgroundExtensionMessageHandlers = {
checkShouldRepositionInlineMenu: ({ sender }: BackgroundSenderParam) => boolean;
getCurrentTabFrameId: ({ sender }: BackgroundSenderParam) => number;
updateSubFrameData: ({ message, sender }: BackgroundOnMessageHandlerParams) => void;
updateSubFrameOffsetsForReflowEvent: ({ sender }: BackgroundSenderParam) => void;
rebuildSubFrameOffsets: ({ sender }: BackgroundSenderParam) => void;
repositionAutofillInlineMenuForSubFrame: ({ sender }: BackgroundSenderParam) => void;
destroyAutofillInlineMenuListeners: ({
message,

View File

@@ -95,7 +95,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
checkShouldRepositionInlineMenu: ({ sender }) => this.checkShouldRepositionInlineMenu(sender),
getCurrentTabFrameId: ({ sender }) => this.getSenderFrameId(sender),
updateSubFrameData: ({ message, sender }) => this.updateSubFrameData(message, sender),
updateSubFrameOffsetsForReflowEvent: ({ sender }) => this.rebuildSubFrameOffsets(sender),
rebuildSubFrameOffsets: ({ sender }) => this.rebuildSubFrameOffsets(sender),
repositionAutofillInlineMenuForSubFrame: ({ sender }) =>
this.repositionInlineMenuForSubFrame(sender),
destroyAutofillInlineMenuListeners: ({ message, sender }) =>
@@ -628,7 +628,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
{ overlayElement }: { overlayElement?: string },
sender: chrome.runtime.MessageSender,
) {
if (this.delayedUpdateInlineMenuPositionTimeout && this.isFieldCurrentlyFocused) {
if (this.isFieldCurrentlyFocused && this.delayedUpdateInlineMenuPositionTimeout) {
this.closeInlineMenu(sender, { forceCloseInlineMenu: true });
return;
}

View File

@@ -45,8 +45,6 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
private focusedFieldData: FocusedFieldData;
private userInteractionEventTimeout: number | NodeJS.Timeout;
private recalculateSubFrameOffsetsTimeout: number | NodeJS.Timeout;
private reflowPerformanceObserver: PerformanceObserver;
private reflowMutationObserver: MutationObserver;
private eventHandlersMemo: { [key: string]: EventListener } = {};
private readonly extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers = {
openAutofillInlineMenu: ({ message }) => this.openInlineMenu(message),
@@ -1118,7 +1116,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
};
private handleSubFrameFocusInEvent = () => {
this.updateSubFrameForReflow();
this.rebuildSubFrameOffsets();
globalThis.removeEventListener(EVENTS.FOCUS, this.handleSubFrameFocusInEvent);
globalThis.document.body.removeEventListener(
@@ -1132,10 +1130,10 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
);
};
private updateSubFrameForReflow = () => {
private rebuildSubFrameOffsets = () => {
this.clearUserInteractionEventTimeout();
this.clearRecalculateSubFrameOffsetsTimeout();
void this.sendExtensionMessage("updateSubFrameOffsetsForReflowEvent");
void this.sendExtensionMessage("rebuildSubFrameOffsets");
};
/**
@@ -1169,8 +1167,6 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
this.handleVisibilityChangeEvent,
);
globalThis.removeEventListener(EVENTS.FOCUSOUT, this.handleFormFieldBlurEvent);
this.reflowPerformanceObserver?.disconnect();
this.reflowMutationObserver?.disconnect();
this.removeOverlayRepositionEventListeners();
}
}