summaryrefslogtreecommitdiffstats
path: root/dom/tests/browser/browser_form_associated_custom_elements_validity.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/browser/browser_form_associated_custom_elements_validity.js')
-rw-r--r--dom/tests/browser/browser_form_associated_custom_elements_validity.js47
1 files changed, 47 insertions, 0 deletions
diff --git a/dom/tests/browser/browser_form_associated_custom_elements_validity.js b/dom/tests/browser/browser_form_associated_custom_elements_validity.js
index 3765405735..da7c1ed263 100644
--- a/dom/tests/browser/browser_form_associated_custom_elements_validity.js
+++ b/dom/tests/browser/browser_form_associated_custom_elements_validity.js
@@ -109,3 +109,50 @@ add_task(async function form_report_validity() {
}
);
});
+
+add_task(async function no_validation_anchor() {
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url: `data:text/html,<my-control tabindex=0>custom elements</my-control>`,
+ },
+ async function (aBrowser) {
+ let promisePopupShown = BrowserTestUtils.waitForEvent(
+ window,
+ "popupshown"
+ );
+
+ let message = "valueMissing message";
+ await SpecialPowers.spawn(aBrowser, [message], function (aMessage) {
+ class MyControl extends content.HTMLElement {
+ static get formAssociated() {
+ return true;
+ }
+ constructor() {
+ super();
+ let internals = this.attachInternals();
+ internals.setValidity({ valueMissing: true }, aMessage);
+ internals.reportValidity();
+ }
+ }
+ content.customElements.define("my-control", MyControl);
+
+ let myControl = content.document.querySelector("my-control");
+ content.customElements.upgrade(myControl);
+ });
+ await promisePopupShown;
+
+ let invalidFormPopup =
+ window.document.getElementById("invalid-form-popup");
+ is(invalidFormPopup.state, "open", "invalid-form-popup should be opened");
+ is(invalidFormPopup.firstChild.textContent, message, "check message");
+
+ let promisePopupHidden = BrowserTestUtils.waitForEvent(
+ invalidFormPopup,
+ "popuphidden"
+ );
+ invalidFormPopup.hidePopup();
+ await promisePopupHidden;
+ }
+ );
+});