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