mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 05:39:41 +02:00
MozReview-Commit-ID: 9J7oKa636UX --HG-- extra : rebase_source : 7300467808098a3a234474ab8eb411e6c24b2ac9
90 lines
2.7 KiB
JavaScript
90 lines
2.7 KiB
JavaScript
function check(aBrowser, aElementName, aBarred, aType) {
|
|
return ContentTask.spawn(aBrowser, [aElementName, aBarred, aType], function*([aElementName, aBarred, aType]) {
|
|
let doc = content.document;
|
|
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], function*([aElementName, aBarred]) {
|
|
let doc = content.document;
|
|
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(function*() {
|
|
yield BrowserTestUtils.withNewTab({
|
|
gBrowser,
|
|
url: "data:text/html,<!DOCTYPE html><html><body><form id='content'></form></body></html>",
|
|
}, 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) {
|
|
yield check(browser, data[0], data[1], data[2]);
|
|
}
|
|
|
|
let todo_testData = [
|
|
[ 'keygen', 'false' ],
|
|
];
|
|
|
|
for (let data of todo_testData) {
|
|
yield todo_check(browser, data[0], data[1]);
|
|
}
|
|
});
|
|
});
|
|
|