summaryrefslogtreecommitdiffstats
path: root/toolkit/components/tooltiptext/tests/browser_bug581947.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/tooltiptext/tests/browser_bug581947.js')
-rw-r--r--toolkit/components/tooltiptext/tests/browser_bug581947.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/toolkit/components/tooltiptext/tests/browser_bug581947.js b/toolkit/components/tooltiptext/tests/browser_bug581947.js
new file mode 100644
index 0000000000..6e5eb9ea14
--- /dev/null
+++ b/toolkit/components/tooltiptext/tests/browser_bug581947.js
@@ -0,0 +1,107 @@
+function check(aBrowser, aElementName, aBarred, aType) {
+ return SpecialPowers.spawn(
+ aBrowser,
+ [[aElementName, aBarred, aType]],
+ async function ([aElementName, aBarred, aType]) {
+ let e = content.document.createElement(aElementName);
+ let contentElement = content.document.getElementById("content");
+ contentElement.appendChild(e);
+
+ if (aType) {
+ e.type = aType;
+ }
+
+ let tttp = Cc[
+ "@mozilla.org/embedcomp/default-tooltiptextprovider;1"
+ ].getService(Ci.nsITooltipTextProvider);
+ ok(
+ !tttp.getNodeText(e, {}, {}),
+ "No tooltip should be shown when the element is valid"
+ );
+
+ e.setCustomValidity("foo");
+ if (aBarred) {
+ ok(
+ !tttp.getNodeText(e, {}, {}),
+ "No tooltip should be shown when the element is barred from constraint validation"
+ );
+ } else {
+ ok(
+ tttp.getNodeText(e, {}, {}),
+ e.tagName + " A tooltip should be shown when the element isn't valid"
+ );
+ }
+
+ e.setAttribute("title", "");
+ ok(
+ !tttp.getNodeText(e, {}, {}),
+ "No tooltip should be shown if the title attribute is set"
+ );
+
+ e.removeAttribute("title");
+ contentElement.setAttribute("novalidate", "");
+ ok(
+ !tttp.getNodeText(e, {}, {}),
+ "No tooltip should be shown if the novalidate attribute is set on the form owner"
+ );
+ contentElement.removeAttribute("novalidate");
+
+ e.remove();
+ }
+ );
+}
+
+function todo_check(aBrowser, aElementName, aBarred) {
+ return SpecialPowers.spawn(
+ aBrowser,
+ [[aElementName, aBarred]],
+ async function ([aElementName, aBarred]) {
+ let e = content.document.createElement(aElementName);
+ let contentElement = content.document.getElementById("content");
+ contentElement.appendChild(e);
+
+ let caught = false;
+ try {
+ e.setCustomValidity("foo");
+ } catch (e) {
+ caught = true;
+ }
+
+ todo(!caught, "setCustomValidity should exist for " + aElementName);
+
+ e.remove();
+ }
+ );
+}
+
+add_task(async function () {
+ await BrowserTestUtils.withNewTab(
+ {
+ gBrowser,
+ url: "data:text/html,<!DOCTYPE html><html><body><form id='content'></form></body></html>",
+ },
+ async function (browser) {
+ let testData = [
+ /* element name, barred */
+ ["input", false, null],
+ ["textarea", false, null],
+ ["button", true, "button"],
+ ["button", false, "submit"],
+ ["select", false, null],
+ ["output", true, null],
+ ["fieldset", true, null],
+ ["object", true, null],
+ ];
+
+ for (let data of testData) {
+ await check(browser, data[0], data[1], data[2]);
+ }
+
+ let todo_testData = [["keygen", "false"]];
+
+ for (let data of todo_testData) {
+ await todo_check(browser, data[0], data[1]);
+ }
+ }
+ );
+});