diff --git a/apps/browser/src/autofill/background/abstractions/overlay.background.ts b/apps/browser/src/autofill/background/abstractions/overlay.background.ts index 75f2659c9df..6067d563db2 100644 --- a/apps/browser/src/autofill/background/abstractions/overlay.background.ts +++ b/apps/browser/src/autofill/background/abstractions/overlay.background.ts @@ -48,6 +48,7 @@ export type FocusedFieldData = { frameId?: number; accountCreationFieldType?: string; showPasskeys?: boolean; + focusedFieldForm?: string; }; export type InlineMenuElementPosition = { diff --git a/apps/browser/src/autofill/background/overlay.background.ts b/apps/browser/src/autofill/background/overlay.background.ts index a2eb6eb7e90..5da00cfaff2 100644 --- a/apps/browser/src/autofill/background/overlay.background.ts +++ b/apps/browser/src/autofill/background/overlay.background.ts @@ -1175,6 +1175,7 @@ export class OverlayBackground implements OverlayBackgroundInterface { pageDetails, fillNewPassword: true, allowTotpAutofill: true, + focusedFieldForm: this.focusedFieldData?.focusedFieldForm, }); if (totpCode) { @@ -1859,6 +1860,7 @@ export class OverlayBackground implements OverlayBackgroundInterface { pageDetails, fillNewPassword: true, allowTotpAutofill: false, + focusedFieldForm: this.focusedFieldData?.focusedFieldForm, }); globalThis.setTimeout(async () => { diff --git a/apps/browser/src/autofill/services/abstractions/autofill.service.ts b/apps/browser/src/autofill/services/abstractions/autofill.service.ts index 5eb8ee99eb5..09e22e278be 100644 --- a/apps/browser/src/autofill/services/abstractions/autofill.service.ts +++ b/apps/browser/src/autofill/services/abstractions/autofill.service.ts @@ -30,6 +30,7 @@ export interface AutoFillOptions { allowUntrustedIframe?: boolean; allowTotpAutofill?: boolean; autoSubmitLogin?: boolean; + focusedFieldForm?: string; } export interface FormData { 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 07c97a5a344..656516d1119 100644 --- a/apps/browser/src/autofill/services/autofill-overlay-content.service.ts +++ b/apps/browser/src/autofill/services/autofill-overlay-content.service.ts @@ -974,6 +974,7 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ inlineMenuFillType: autofillFieldData?.inlineMenuFillType, showPasskeys: !!autofillFieldData?.showPasskeys, accountCreationFieldType: autofillFieldData?.accountCreationFieldType, + focusedFieldForm: autofillFieldData?.form, }; const allFields = this.formFieldElements; diff --git a/apps/browser/src/autofill/services/autofill.service.ts b/apps/browser/src/autofill/services/autofill.service.ts index 512690929cc..89c3e2ee175 100644 --- a/apps/browser/src/autofill/services/autofill.service.ts +++ b/apps/browser/src/autofill/services/autofill.service.ts @@ -434,7 +434,15 @@ export default class AutofillService implements AutofillServiceInterface { return; } - const fillScript = await this.generateFillScript(pd.details, { + // If we have a focused form, filter the page details to only include fields from that form + const details = options.focusedFieldForm + ? { + ...pd.details, + fields: pd.details.fields.filter((f) => f.form === options.focusedFieldForm), + } + : pd.details; + + const fillScript = await this.generateFillScript(details, { skipUsernameOnlyFill: options.skipUsernameOnlyFill || false, onlyEmptyFields: options.onlyEmptyFields || false, fillNewPassword: options.fillNewPassword || false,