1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-18 17:23:37 +00:00

[PM-5189] Refactoring implementation

This commit is contained in:
Cesar Gonzalez
2024-04-16 16:46:43 -05:00
parent 9bffe6f22c
commit a5824584ae
4 changed files with 20 additions and 20 deletions

View File

@@ -21,7 +21,7 @@ export type AutofillExtensionMessage = {
isOverlayCiphersPopulated?: boolean; isOverlayCiphersPopulated?: boolean;
direction?: "previous" | "next" | "current"; direction?: "previous" | "next" | "current";
forceCloseOverlay?: boolean; forceCloseOverlay?: boolean;
autofillOverlayVisibility?: number; inlineMenuVisibility?: number;
}; };
}; };

View File

@@ -223,7 +223,7 @@ describe("AutofillOverlayContentService", () => {
describe("identifies the overlay visibility setting", () => { describe("identifies the overlay visibility setting", () => {
it("defaults the overlay visibility setting to `OnFieldFocus` if a value is not set", async () => { it("defaults the overlay visibility setting to `OnFieldFocus` if a value is not set", async () => {
sendExtensionMessageSpy.mockResolvedValueOnce(undefined); sendExtensionMessageSpy.mockResolvedValueOnce(undefined);
autofillOverlayContentService["autofillOverlayVisibility"] = undefined; autofillOverlayContentService["inlineMenuVisibility"] = undefined;
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
autofillFieldElement, autofillFieldElement,
@@ -231,21 +231,21 @@ describe("AutofillOverlayContentService", () => {
); );
expect(sendExtensionMessageSpy).toHaveBeenCalledWith("getInlineMenuVisibilitySetting"); expect(sendExtensionMessageSpy).toHaveBeenCalledWith("getInlineMenuVisibilitySetting");
expect(autofillOverlayContentService["autofillOverlayVisibility"]).toEqual( expect(autofillOverlayContentService["inlineMenuVisibility"]).toEqual(
AutofillOverlayVisibility.OnFieldFocus, AutofillOverlayVisibility.OnFieldFocus,
); );
}); });
it("sets the overlay visibility setting to the value returned from the background script", async () => { it("sets the overlay visibility setting to the value returned from the background script", async () => {
sendExtensionMessageSpy.mockResolvedValueOnce(AutofillOverlayVisibility.OnFieldFocus); sendExtensionMessageSpy.mockResolvedValueOnce(AutofillOverlayVisibility.OnFieldFocus);
autofillOverlayContentService["autofillOverlayVisibility"] = undefined; autofillOverlayContentService["inlineMenuVisibility"] = undefined;
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
autofillFieldElement, autofillFieldElement,
autofillFieldData, autofillFieldData,
); );
expect(autofillOverlayContentService["autofillOverlayVisibility"]).toEqual( expect(autofillOverlayContentService["inlineMenuVisibility"]).toEqual(
AutofillOverlayVisibility.OnFieldFocus, AutofillOverlayVisibility.OnFieldFocus,
); );
}); });
@@ -594,7 +594,7 @@ describe("AutofillOverlayContentService", () => {
it("skips triggering the handler logic if autofill is currently filling", async () => { it("skips triggering the handler logic if autofill is currently filling", async () => {
isFieldCurrentlyFillingSpy.mockResolvedValue(true); isFieldCurrentlyFillingSpy.mockResolvedValue(true);
autofillOverlayContentService["mostRecentlyFocusedField"] = autofillFieldElement; autofillOverlayContentService["mostRecentlyFocusedField"] = autofillFieldElement;
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnFieldFocus; AutofillOverlayVisibility.OnFieldFocus;
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
autofillFieldElement, autofillFieldElement,
@@ -623,7 +623,7 @@ describe("AutofillOverlayContentService", () => {
}); });
it("removes the overlay list if the autofill visibility is set to onClick", async () => { it("removes the overlay list if the autofill visibility is set to onClick", async () => {
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnButtonClick; AutofillOverlayVisibility.OnButtonClick;
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
autofillFieldElement, autofillFieldElement,
@@ -660,7 +660,7 @@ describe("AutofillOverlayContentService", () => {
it("opens the autofill overlay if the form element has no value", async () => { it("opens the autofill overlay if the form element has no value", async () => {
(autofillFieldElement as HTMLInputElement).value = ""; (autofillFieldElement as HTMLInputElement).value = "";
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnFieldFocus; AutofillOverlayVisibility.OnFieldFocus;
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
autofillFieldElement, autofillFieldElement,
@@ -675,7 +675,7 @@ describe("AutofillOverlayContentService", () => {
it("opens the autofill overlay if the overlay ciphers are not populated and the user is authed", async () => { it("opens the autofill overlay if the overlay ciphers are not populated and the user is authed", async () => {
(autofillFieldElement as HTMLInputElement).value = ""; (autofillFieldElement as HTMLInputElement).value = "";
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnFieldFocus; AutofillOverlayVisibility.OnFieldFocus;
jest.spyOn(autofillOverlayContentService as any, "isUserAuthed").mockReturnValue(true); jest.spyOn(autofillOverlayContentService as any, "isUserAuthed").mockReturnValue(true);
await autofillOverlayContentService.setupAutofillOverlayListenerOnField( await autofillOverlayContentService.setupAutofillOverlayListenerOnField(
@@ -690,7 +690,7 @@ describe("AutofillOverlayContentService", () => {
}); });
it("updates the overlay button position if the focus event is not opening the overlay", async () => { it("updates the overlay button position if the focus event is not opening the overlay", async () => {
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnFieldFocus; AutofillOverlayVisibility.OnFieldFocus;
(autofillFieldElement as HTMLInputElement).value = "test"; (autofillFieldElement as HTMLInputElement).value = "test";
jest jest
@@ -828,7 +828,7 @@ describe("AutofillOverlayContentService", () => {
}); });
it("opens the autofill overlay button only if overlay visibility is set for onButtonClick", () => { it("opens the autofill overlay button only if overlay visibility is set for onButtonClick", () => {
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnButtonClick; AutofillOverlayVisibility.OnButtonClick;
autofillOverlayContentService["openAutofillOverlayMenu"]({ isOpeningFullOverlay: false }); autofillOverlayContentService["openAutofillOverlayMenu"]({ isOpeningFullOverlay: false });
@@ -845,7 +845,7 @@ describe("AutofillOverlayContentService", () => {
}); });
it("overrides the onButtonClick visibility setting to open both overlay elements", () => { it("overrides the onButtonClick visibility setting to open both overlay elements", () => {
autofillOverlayContentService["autofillOverlayVisibility"] = autofillOverlayContentService["inlineMenuVisibility"] =
AutofillOverlayVisibility.OnButtonClick; AutofillOverlayVisibility.OnButtonClick;
autofillOverlayContentService["openAutofillOverlayMenu"]({ isOpeningFullOverlay: true }); autofillOverlayContentService["openAutofillOverlayMenu"]({ isOpeningFullOverlay: true });

View File

@@ -24,7 +24,7 @@ import { AutoFillConstants } from "./autofill-constants";
class AutofillOverlayContentService implements AutofillOverlayContentServiceInterface { class AutofillOverlayContentService implements AutofillOverlayContentServiceInterface {
pageDetailsUpdateRequired = false; pageDetailsUpdateRequired = false;
autofillOverlayVisibility: number; inlineMenuVisibility: number;
private readonly findTabs = tabbable; private readonly findTabs = tabbable;
private readonly sendExtensionMessage = sendExtensionMessage; private readonly sendExtensionMessage = sendExtensionMessage;
private formFieldElements: Set<ElementWithOpId<FormFieldElement>> = new Set([]); private formFieldElements: Set<ElementWithOpId<FormFieldElement>> = new Set([]);
@@ -92,7 +92,7 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
await this.updateMostRecentlyFocusedField(formFieldElement); await this.updateMostRecentlyFocusedField(formFieldElement);
} }
if (!this.autofillOverlayVisibility) { if (!this.inlineMenuVisibility) {
await this.getInlineMenuVisibilitySetting(); await this.getInlineMenuVisibilitySetting();
} }
@@ -133,7 +133,7 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
} }
if ( if (
this.autofillOverlayVisibility === AutofillOverlayVisibility.OnButtonClick && this.inlineMenuVisibility === AutofillOverlayVisibility.OnButtonClick &&
!isOpeningFullOverlay !isOpeningFullOverlay
) { ) {
this.updateOverlayButtonPosition(); this.updateOverlayButtonPosition();
@@ -456,7 +456,7 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
const formElementHasValue = Boolean((formFieldElement as HTMLInputElement).value); const formElementHasValue = Boolean((formFieldElement as HTMLInputElement).value);
if ( if (
this.autofillOverlayVisibility === AutofillOverlayVisibility.OnButtonClick || this.inlineMenuVisibility === AutofillOverlayVisibility.OnButtonClick ||
(formElementHasValue && initiallyFocusedField !== this.mostRecentlyFocusedField) (formElementHasValue && initiallyFocusedField !== this.mostRecentlyFocusedField)
) { ) {
await this.sendExtensionMessage("closeAutofillOverlayMenu", { await this.sendExtensionMessage("closeAutofillOverlayMenu", {
@@ -724,7 +724,7 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
*/ */
private async getInlineMenuVisibilitySetting() { private async getInlineMenuVisibilitySetting() {
const overlayVisibility = await this.sendExtensionMessage("getInlineMenuVisibilitySetting"); const overlayVisibility = await this.sendExtensionMessage("getInlineMenuVisibilitySetting");
this.autofillOverlayVisibility = overlayVisibility || AutofillOverlayVisibility.OnFieldFocus; this.inlineMenuVisibility = overlayVisibility || AutofillOverlayVisibility.OnFieldFocus;
} }
/** /**
@@ -982,11 +982,11 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
}; };
private updateInlineMenuVisibility({ data }: AutofillExtensionMessage) { private updateInlineMenuVisibility({ data }: AutofillExtensionMessage) {
if (isNaN(data?.autofillOverlayVisibility)) { if (isNaN(data?.inlineMenuVisibility)) {
return; return;
} }
this.autofillOverlayVisibility = data.autofillOverlayVisibility; this.inlineMenuVisibility = data.inlineMenuVisibility;
} }
private async isFieldCurrentlyFilling() { private async isFieldCurrentlyFilling() {

View File

@@ -2088,7 +2088,7 @@ export default class AutofillService implements AutofillServiceInterface {
const tabs = await BrowserApi.tabsQuery({}); const tabs = await BrowserApi.tabsQuery({});
tabs.forEach((tab) => tabs.forEach((tab) =>
BrowserApi.tabSendMessageData(tab, "updateInlineMenuVisibility", { BrowserApi.tabSendMessageData(tab, "updateInlineMenuVisibility", {
autofillOverlayVisibility: currentSetting, inlineMenuVisibility: currentSetting,
}), }),
); );
return; return;