diff options
Diffstat (limited to 'toolkit/components/tooltiptext/tests/browser_bug581947.js')
-rw-r--r-- | toolkit/components/tooltiptext/tests/browser_bug581947.js | 87 |
1 files changed, 87 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 000000000..034e0a4d1 --- /dev/null +++ b/toolkit/components/tooltiptext/tests/browser_bug581947.js @@ -0,0 +1,87 @@ +function check(aBrowser, aElementName, aBarred, aType) { + return ContentTask.spawn(aBrowser, [aElementName, aBarred, aType], 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], 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(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]); + } + }); +}); |