[PM-4415] Implementing a method for capturing submission of forms through anchor elements
This commit is contained in:
parent
8001e8103e
commit
b4c0919a28
|
@ -870,14 +870,7 @@ export class IdentityAutoFillConstants {
|
|||
};
|
||||
}
|
||||
|
||||
export const SubmitLoginButtonNames: string[] = [
|
||||
"login",
|
||||
"signin",
|
||||
"submit",
|
||||
"continue",
|
||||
"next",
|
||||
"go",
|
||||
];
|
||||
export const SubmitLoginButtonNames: string[] = ["login", "signin", "submit", "continue", "next"];
|
||||
|
||||
export const SubmitChangePasswordButtonNames: string[] = [
|
||||
"change",
|
||||
|
|
|
@ -34,6 +34,7 @@ import {
|
|||
elementIsFillableFormField,
|
||||
elementIsSelectElement,
|
||||
getAttributeBoolean,
|
||||
nodeIsAnchorElement,
|
||||
nodeIsButtonElement,
|
||||
nodeIsTypeSubmitElement,
|
||||
sendExtensionMessage,
|
||||
|
@ -434,6 +435,12 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
|
|||
formElement.addEventListener(EVENTS.SUBMIT, this.handleFormFieldSubmitEvent);
|
||||
|
||||
const closesSubmitButton = await this.findSubmitButton(formElement);
|
||||
|
||||
if (!closesSubmitButton) {
|
||||
await this.setupSubmitListenerOnFormlessField(formFieldElement);
|
||||
return;
|
||||
}
|
||||
|
||||
this.setupSubmitButtonEventListeners(closesSubmitButton);
|
||||
}
|
||||
}
|
||||
|
@ -508,6 +515,14 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
|
|||
if (submitButtonElement) {
|
||||
return submitButtonElement;
|
||||
}
|
||||
|
||||
// If the submit button is not a traditional button element, check for an anchor element that contains submission keywords.
|
||||
const submitAnchorElement = await this.querySubmitButtonElement(element, "a", (node: Node) =>
|
||||
nodeIsAnchorElement(node),
|
||||
);
|
||||
if (submitAnchorElement) {
|
||||
return submitAnchorElement;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -323,6 +323,10 @@ export function nodeIsButtonElement(node: Node): node is HTMLButtonElement {
|
|||
);
|
||||
}
|
||||
|
||||
export function nodeIsAnchorElement(node: Node): node is HTMLAnchorElement {
|
||||
return nodeIsElement(node) && elementIsInstanceOf<HTMLAnchorElement>(node, "a");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a boolean representing the attribute value of an element.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue