1
0
mirror of https://github.com/bitwarden/browser.git synced 2025-03-22 15:19:15 +01:00

[PM-5189] Refactoring implementation

This commit is contained in:
Cesar Gonzalez 2024-04-16 16:46:43 -05:00
parent 9bffe6f22c
commit a5824584ae
No known key found for this signature in database
GPG Key ID: 3381A5457F8CCECF
4 changed files with 20 additions and 20 deletions

View File

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

View File

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

View File

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

View File

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