[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[] = [
|
export const SubmitLoginButtonNames: string[] = ["login", "signin", "submit", "continue", "next"];
|
||||||
"login",
|
|
||||||
"signin",
|
|
||||||
"submit",
|
|
||||||
"continue",
|
|
||||||
"next",
|
|
||||||
"go",
|
|
||||||
];
|
|
||||||
|
|
||||||
export const SubmitChangePasswordButtonNames: string[] = [
|
export const SubmitChangePasswordButtonNames: string[] = [
|
||||||
"change",
|
"change",
|
||||||
|
|
|
@ -34,6 +34,7 @@ import {
|
||||||
elementIsFillableFormField,
|
elementIsFillableFormField,
|
||||||
elementIsSelectElement,
|
elementIsSelectElement,
|
||||||
getAttributeBoolean,
|
getAttributeBoolean,
|
||||||
|
nodeIsAnchorElement,
|
||||||
nodeIsButtonElement,
|
nodeIsButtonElement,
|
||||||
nodeIsTypeSubmitElement,
|
nodeIsTypeSubmitElement,
|
||||||
sendExtensionMessage,
|
sendExtensionMessage,
|
||||||
|
@ -434,6 +435,12 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
|
||||||
formElement.addEventListener(EVENTS.SUBMIT, this.handleFormFieldSubmitEvent);
|
formElement.addEventListener(EVENTS.SUBMIT, this.handleFormFieldSubmitEvent);
|
||||||
|
|
||||||
const closesSubmitButton = await this.findSubmitButton(formElement);
|
const closesSubmitButton = await this.findSubmitButton(formElement);
|
||||||
|
|
||||||
|
if (!closesSubmitButton) {
|
||||||
|
await this.setupSubmitListenerOnFormlessField(formFieldElement);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.setupSubmitButtonEventListeners(closesSubmitButton);
|
this.setupSubmitButtonEventListeners(closesSubmitButton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -508,6 +515,14 @@ export class AutofillOverlayContentService implements AutofillOverlayContentServ
|
||||||
if (submitButtonElement) {
|
if (submitButtonElement) {
|
||||||
return 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.
|
* Returns a boolean representing the attribute value of an element.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue