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", () => { it("triggers extension message handlers from the AutofillOverlayContentService", () => {
autofillOverlayContentService.extensionMessageHandlers.messageHandler = jest.fn(); autofillOverlayContentService.messageHandlers.messageHandler = jest.fn();
sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse); sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse);
expect( expect(autofillOverlayContentService.messageHandlers.messageHandler).toHaveBeenCalled();
autofillOverlayContentService.extensionMessageHandlers.messageHandler,
).toHaveBeenCalled();
}); });
it("triggers extension message handlers from the AutofillInlineMenuContentService", () => { it("triggers extension message handlers from the AutofillInlineMenuContentService", () => {
inlineMenuElements.extensionMessageHandlers.messageHandler = jest.fn(); inlineMenuElements.messageHandlers.messageHandler = jest.fn();
sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse); sendMockExtensionMessage({ command: "messageHandler" }, sender, sendResponse);
expect(inlineMenuElements.extensionMessageHandlers.messageHandler).toHaveBeenCalled(); expect(inlineMenuElements.messageHandlers.messageHandler).toHaveBeenCalled();
}); });
describe("collectPageDetails", () => { describe("collectPageDetails", () => {

View File

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

View File

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

View File

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

View File

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

View File

@@ -40,7 +40,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
private recalculateSubFrameOffsetsTimeout: number | NodeJS.Timeout; private recalculateSubFrameOffsetsTimeout: number | NodeJS.Timeout;
private autofillFieldKeywordsMap: WeakMap<AutofillField, string> = new WeakMap(); private autofillFieldKeywordsMap: WeakMap<AutofillField, string> = new WeakMap();
private eventHandlersMemo: { [key: string]: EventListener } = {}; private eventHandlersMemo: { [key: string]: EventListener } = {};
readonly extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers = { private readonly extensionMessageHandlers: AutofillOverlayContentExtensionMessageHandlers = {
openAutofillInlineMenu: ({ message }) => this.openAutofillInlineMenu(message), openAutofillInlineMenu: ({ message }) => this.openAutofillInlineMenu(message),
addNewVaultItemFromOverlay: () => this.addNewVaultItem(), addNewVaultItemFromOverlay: () => this.addNewVaultItem(),
blurMostRecentlyFocusedField: () => this.blurMostRecentlyFocusedField(), blurMostRecentlyFocusedField: () => this.blurMostRecentlyFocusedField(),
@@ -70,6 +70,14 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
this.setupGlobalEventListeners(); 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 * Sets up the autofill inline menu listener on the form field element. This method is called
* during the page details collection process. * during the page details collection process.