mirror of
https://github.com/bitwarden/browser
synced 2025-12-19 09:43:23 +00:00
Merge branch 'main' into autofill/pm-6546-blurring-of-autofilled-elements-causes-problems-in-blur-event-listeners
This commit is contained in:
@@ -1214,7 +1214,10 @@ describe("AutofillOverlayContentService", () => {
|
|||||||
autofillOverlayContentService as any,
|
autofillOverlayContentService as any,
|
||||||
"removeAutofillOverlay",
|
"removeAutofillOverlay",
|
||||||
);
|
);
|
||||||
|
|
||||||
autofillOverlayContentService["mostRecentlyFocusedField"] = undefined;
|
autofillOverlayContentService["mostRecentlyFocusedField"] = undefined;
|
||||||
|
autofillOverlayContentService["overlayButtonElement"] = document.createElement("div");
|
||||||
|
autofillOverlayContentService["overlayListElement"] = document.createElement("div");
|
||||||
|
|
||||||
globalThis.dispatchEvent(new Event(EVENTS.SCROLL));
|
globalThis.dispatchEvent(new Event(EVENTS.SCROLL));
|
||||||
jest.advanceTimersByTime(800);
|
jest.advanceTimersByTime(800);
|
||||||
@@ -1222,8 +1225,8 @@ describe("AutofillOverlayContentService", () => {
|
|||||||
expect(sendExtensionMessageSpy).toHaveBeenCalledWith("updateAutofillOverlayHidden", {
|
expect(sendExtensionMessageSpy).toHaveBeenCalledWith("updateAutofillOverlayHidden", {
|
||||||
display: "block",
|
display: "block",
|
||||||
});
|
});
|
||||||
expect(autofillOverlayContentService["isOverlayButtonVisible"]).toEqual(true);
|
expect(autofillOverlayContentService["isOverlayButtonVisible"]).toEqual(false);
|
||||||
expect(autofillOverlayContentService["isOverlayListVisible"]).toEqual(true);
|
expect(autofillOverlayContentService["isOverlayListVisible"]).toEqual(false);
|
||||||
expect(removeAutofillOverlaySpy).toHaveBeenCalled();
|
expect(removeAutofillOverlaySpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1280,6 +1283,32 @@ describe("AutofillOverlayContentService", () => {
|
|||||||
|
|
||||||
expect(removeAutofillOverlaySpy).toHaveBeenCalled();
|
expect(removeAutofillOverlaySpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("defaults overlay elements to a visibility of `false` if the element is not rendered on the page", async () => {
|
||||||
|
jest.useFakeTimers();
|
||||||
|
jest
|
||||||
|
.spyOn(autofillOverlayContentService as any, "updateMostRecentlyFocusedField")
|
||||||
|
.mockImplementation(() => {
|
||||||
|
autofillOverlayContentService["focusedFieldData"] = {
|
||||||
|
focusedFieldRects: {
|
||||||
|
top: 100,
|
||||||
|
},
|
||||||
|
focusedFieldStyles: {},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
jest
|
||||||
|
.spyOn(autofillOverlayContentService as any, "updateOverlayElementsPosition")
|
||||||
|
.mockImplementation();
|
||||||
|
autofillOverlayContentService["overlayButtonElement"] = document.createElement("div");
|
||||||
|
autofillOverlayContentService["overlayListElement"] = undefined;
|
||||||
|
|
||||||
|
globalThis.dispatchEvent(new Event(EVENTS.SCROLL));
|
||||||
|
jest.advanceTimersByTime(800);
|
||||||
|
await flushPromises();
|
||||||
|
|
||||||
|
expect(autofillOverlayContentService["isOverlayButtonVisible"]).toEqual(true);
|
||||||
|
expect(autofillOverlayContentService["isOverlayListVisible"]).toEqual(false);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("handleOverlayElementMutationObserverUpdate", () => {
|
describe("handleOverlayElementMutationObserverUpdate", () => {
|
||||||
|
|||||||
@@ -646,12 +646,10 @@ class AutofillOverlayContentService implements AutofillOverlayContentServiceInte
|
|||||||
*/
|
*/
|
||||||
private toggleOverlayHidden(isHidden: boolean) {
|
private toggleOverlayHidden(isHidden: boolean) {
|
||||||
const displayValue = isHidden ? "none" : "block";
|
const displayValue = isHidden ? "none" : "block";
|
||||||
// FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling.
|
void this.sendExtensionMessage("updateAutofillOverlayHidden", { display: displayValue });
|
||||||
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
||||||
this.sendExtensionMessage("updateAutofillOverlayHidden", { display: displayValue });
|
|
||||||
|
|
||||||
this.isOverlayButtonVisible = !isHidden;
|
this.isOverlayButtonVisible = !!this.overlayButtonElement && !isHidden;
|
||||||
this.isOverlayListVisible = !isHidden;
|
this.isOverlayListVisible = !!this.overlayListElement && !isHidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -220,10 +220,6 @@ function getBgService<T>(service: keyof MainBackground) {
|
|||||||
useFactory: () => new WebCryptoFunctionService(window),
|
useFactory: () => new WebCryptoFunctionService(window),
|
||||||
deps: [],
|
deps: [],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
provide: FileUploadService,
|
|
||||||
useFactory: getBgService<FileUploadService>("fileUploadService"),
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
provide: InternalFolderService,
|
provide: InternalFolderService,
|
||||||
useExisting: FolderServiceAbstraction,
|
useExisting: FolderServiceAbstraction,
|
||||||
@@ -323,7 +319,6 @@ function getBgService<T>(service: keyof MainBackground) {
|
|||||||
useFactory: getBgService<PasswordGenerationServiceAbstraction>("passwordGenerationService"),
|
useFactory: getBgService<PasswordGenerationServiceAbstraction>("passwordGenerationService"),
|
||||||
deps: [],
|
deps: [],
|
||||||
},
|
},
|
||||||
{ provide: ApiService, useFactory: getBgService<ApiService>("apiService"), deps: [] },
|
|
||||||
{
|
{
|
||||||
provide: SendService,
|
provide: SendService,
|
||||||
useFactory: (
|
useFactory: (
|
||||||
|
|||||||
Reference in New Issue
Block a user