From 362745ad57c7e8af41e7fce391d35d20f8dc90c8 Mon Sep 17 00:00:00 2001 From: Jordan Aasen <166539328+jaasen-livefront@users.noreply.github.com> Date: Thu, 23 Jan 2025 15:45:26 -0800 Subject: [PATCH] [PM-15943] - When filling a password, the extension flickers (#12900) * use requestAnimationFrame instead of arbitrary timeout * fix failing test --- .../vault/popup/services/vault-popup-autofill.service.spec.ts | 4 ++-- .../src/vault/popup/services/vault-popup-autofill.service.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.spec.ts b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.spec.ts index 2dad1e3034c..5c9cf57f475 100644 --- a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.spec.ts +++ b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.spec.ts @@ -280,10 +280,10 @@ describe("VaultPopupAutofillService", () => { it("should close popup after a timeout for chromium browsers", async () => { mockPlatformUtilsService.isFirefox.mockReturnValue(false); - jest.spyOn(global, "setTimeout"); + jest.spyOn(global, "requestAnimationFrame"); await service.doAutofill(mockCipher); jest.advanceTimersByTime(50); - expect(setTimeout).toHaveBeenCalledTimes(1); + expect(requestAnimationFrame).toHaveBeenCalled(); expect(BrowserApi.closePopup).toHaveBeenCalled(); }); diff --git a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts index ff282d7a6d0..c0221af75b6 100644 --- a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts +++ b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts @@ -280,7 +280,7 @@ export class VaultPopupAutofillService { } // Slight delay to fix bug in Chromium browsers where popup closes without copying totp to clipboard - setTimeout(() => BrowserApi.closePopup(window), 50); + requestAnimationFrame(() => BrowserApi.closePopup(window)); } /**