gecko-dev/toolkit/components/tooltiptext/tests/browser_bug581947.js

87 lines
2.7 KiB
JavaScript

function check(aBrowser, aElementName, aBarred, aType) {
return ContentTask.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 ContentTask.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]);
}
});
});