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:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user