1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-19 17:53:39 +00:00

[PM-5189] Refactoring implementation

This commit is contained in:
Cesar Gonzalez
2024-06-11 09:41:08 -05:00
parent 6ec6310bb4
commit 927de0fc75
6 changed files with 22 additions and 16 deletions

View File

@@ -156,21 +156,19 @@ describe("AutofillInit", () => {
});
it("triggers extension message handlers from the AutofillOverlayContentService", () => {
autofillOverlayContentService.extensionMessageHandlers.messageHandler = jest.fn();
autofillOverlayContentService.messageHandlers.messageHandler = jest.fn();
sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse);
expect(
autofillOverlayContentService.extensionMessageHandlers.messageHandler,
).toHaveBeenCalled();
expect(autofillOverlayContentService.messageHandlers.messageHandler).toHaveBeenCalled();
});
it("triggers extension message handlers from the AutofillInlineMenuContentService", () => {
inlineMenuElements.extensionMessageHandlers.messageHandler = jest.fn();
inlineMenuElements.messageHandlers.messageHandler = jest.fn();
sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse);
expect(inlineMenuElements.extensionMessageHandlers.messageHandler).toHaveBeenCalled();
expect(inlineMenuElements.messageHandlers.messageHandler).toHaveBeenCalled();
});
describe("collectPageDetails", () => {

View File

@@ -196,12 +196,12 @@ class AutofillInit implements AutofillInitInterface {
* @param command - The extension message command.
*/
private getExtensionMessageHandler(command: string): CallableFunction | undefined {
if (this.autofillOverlayContentService?.extensionMessageHandlers?.[command]) {
return this.autofillOverlayContentService.extensionMessageHandlers[command];
if (this.autofillOverlayContentService?.messageHandlers?.[command]) {
return this.autofillOverlayContentService.messageHandlers[command];
}
if (this.autofillInlineMenuContentService?.extensionMessageHandlers?.[command]) {
return this.autofillInlineMenuContentService.extensionMessageHandlers[command];
if (this.autofillInlineMenuContentService?.messageHandlers?.[command]) {
return this.autofillInlineMenuContentService.messageHandlers[command];
}
return this.extensionMessageHandlers[command];

View File

@@ -10,7 +10,7 @@ export type InlineMenuExtensionMessageHandlers = {
};
export interface AutofillInlineMenuContentService {
extensionMessageHandlers: InlineMenuExtensionMessageHandlers;
messageHandlers: InlineMenuExtensionMessageHandlers;
isElementInlineMenu(element: HTMLElement): boolean;
destroy(): void;
}

View File

@@ -34,7 +34,7 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
display: "block",
zIndex: "2147483647",
};
private readonly _extensionMessageHandlers: InlineMenuExtensionMessageHandlers = {
private readonly extensionMessageHandlers: InlineMenuExtensionMessageHandlers = {
closeAutofillInlineMenu: ({ message }) => this.removeInlineMenu(message),
appendAutofillInlineMenuToDom: ({ message }) => this.appendInlineMenuElements(message),
toggleAutofillInlineMenuHidden: ({ message }) => this.toggleInlineMenuHidden(message),
@@ -46,8 +46,8 @@ export class AutofillInlineMenuContentService implements AutofillInlineMenuConte
this.setupMutationObserver();
}
get extensionMessageHandlers() {
return this._extensionMessageHandlers;
get messageHandlers() {
return this.extensionMessageHandlers;
}
isElementInlineMenu(element: HTMLElement) {

View File

@@ -28,7 +28,7 @@ export type AutofillOverlayContentExtensionMessageHandlers = {
export interface AutofillOverlayContentService {
pageDetailsUpdateRequired: boolean;
extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers;
messageHandlers: AutofillOverlayContentExtensionMessageHandlers;
init(): void;
setupAutofillInlineMenuListenerOnField(
autofillFieldElement: ElementWithOpId<FormFieldElement>,

View File

@@ -40,7 +40,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
private recalculateSubFrameOffsetsTimeout: number | NodeJS.Timeout;
private autofillFieldKeywordsMap: WeakMap<AutofillField, string> = new WeakMap();
private eventHandlersMemo: { [key: string]: EventListener } = {};
readonly extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers = {
private readonly extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers = {
openAutofillInlineMenu: ({ message }) => this.openAutofillInlineMenu(message),
addNewVaultItemFromOverlay: () => this.addNewVaultItem(),
blurMostRecentlyFocusedField: () => this.blurMostRecentlyFocusedField(),
@@ -70,6 +70,14 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
this.setupGlobalEventListeners();
}
/**
* Getter used to access the extension message handlers associated
* with the autofill overlay content service.
*/
get messageHandlers(): AutofillOverlayContentExtensionMessageHandlers {
return this.extensionMessageHandlers;
}
/**
* Sets up the autofill inline menu listener on the form field element. This method is called
* during the page details collection process.