From fd1676e838b86e2b95511ba0016d40e8df9352ab Mon Sep 17 00:00:00 2001 From: Cesar Gonzalez Date: Tue, 25 Jun 2024 13:19:58 -0500 Subject: [PATCH] [PM-5189] Fixing issue within Safari relating to repositioning elements from outer frame --- .../src/autofill/background/overlay.background.spec.ts | 4 ++-- apps/browser/src/autofill/background/overlay.background.ts | 6 ++++-- .../services/autofill-overlay-content.service.spec.ts | 2 +- .../autofill/services/autofill-overlay-content.service.ts | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/apps/browser/src/autofill/background/overlay.background.spec.ts b/apps/browser/src/autofill/background/overlay.background.spec.ts index a908a8fb75d..f5f9d6ebc59 100644 --- a/apps/browser/src/autofill/background/overlay.background.spec.ts +++ b/apps/browser/src/autofill/background/overlay.background.spec.ts @@ -252,7 +252,7 @@ describe("OverlayBackground", () => { await flushPromises(); expect(subFrameOffsetsSpy[tabId]).toStrictEqual( - new Map([[1, { left: 4, top: 4, url: "url", parentFrameIds: [1, 0] }]]), + new Map([[1, { left: 4, top: 4, url: "url", parentFrameIds: [0, 1] }]]), ); expect(pageDetailsForTabSpy[tabId].size).toBe(2); }); @@ -279,7 +279,7 @@ describe("OverlayBackground", () => { expect(getFrameDetailsSpy).toHaveBeenCalledTimes(1); expect(subFrameOffsetsSpy[tabId]).toStrictEqual( - new Map([[1, { left: 0, top: 0, url: "url", parentFrameIds: [] }]]), + new Map([[1, { left: 0, top: 0, url: "url", parentFrameIds: [0] }]]), ); }); diff --git a/apps/browser/src/autofill/background/overlay.background.ts b/apps/browser/src/autofill/background/overlay.background.ts index 36cad8ca65b..e4e890702a5 100644 --- a/apps/browser/src/autofill/background/overlay.background.ts +++ b/apps/browser/src/autofill/background/overlay.background.ts @@ -373,7 +373,7 @@ export class OverlayBackground implements OverlayBackgroundInterface { return; } - const subFrameData: SubFrameOffsetData = { url, top: 0, left: 0, parentFrameIds: [] }; + const subFrameData: SubFrameOffsetData = { url, top: 0, left: 0, parentFrameIds: [0] }; let frameDetails = await BrowserApi.getFrameDetails({ tabId, frameId }); while (frameDetails && frameDetails.parentFrameId > -1) { @@ -406,7 +406,9 @@ export class OverlayBackground implements OverlayBackgroundInterface { subFrameData.top += subFrameOffset.top; subFrameData.left += subFrameOffset.left; - subFrameData.parentFrameIds.push(frameDetails.parentFrameId); + if (!subFrameData.parentFrameIds.includes(frameDetails.parentFrameId)) { + subFrameData.parentFrameIds.push(frameDetails.parentFrameId); + } frameDetails = await BrowserApi.getFrameDetails({ tabId, diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts index b2cb7f1c948..b29173e5077 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.spec.ts @@ -1398,7 +1398,7 @@ describe("AutofillOverlayContentService", () => { frameId: subFrameId, left: 0, top: 0, - parentFrameIds: [], + parentFrameIds: [0], subFrameDepth: 0, }, }, diff --git a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts index 52f8d78352d..1061e3bf3aa 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts @@ -922,7 +922,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ frameId: message.subFrameId, left: 0, top: 0, - parentFrameIds: [], + parentFrameIds: [0], subFrameDepth: 0, } as SubFrameDataFromWindowMessage, },