diff -r 000000000000 -r 6474c204b198 browser/base/content/test/general/browser_bug581947.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/base/content/test/general/browser_bug581947.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,90 @@ +function check(aElementName, aBarred) { + let doc = gBrowser.contentDocument; + let tooltip = document.getElementById("aHTMLTooltip"); + let content = doc.getElementById('content'); + + let e = doc.createElement(aElementName); + content.appendChild(e); + + ok(!tooltip.fillInPageTooltip(e), + "No tooltip should be shown when the element is valid"); + + e.setCustomValidity('foo'); + if (aBarred) { + ok(!tooltip.fillInPageTooltip(e), + "No tooltip should be shown when the element is barred from constraint validation"); + } else { + ok(tooltip.fillInPageTooltip(e), + e.tagName + " " +"A tooltip should be shown when the element isn't valid"); + } + + e.setAttribute('title', ''); + ok (!tooltip.fillInPageTooltip(e), + "No tooltip should be shown if the title attribute is set"); + + e.removeAttribute('title'); + content.setAttribute('novalidate', ''); + ok (!tooltip.fillInPageTooltip(e), + "No tooltip should be shown if the novalidate attribute is set on the form owner"); + content.removeAttribute('novalidate'); + + content.removeChild(e); +} + +function todo_check(aElementName, aBarred) { + let doc = gBrowser.contentDocument; + let tooltip = document.getElementById("aHTMLTooltip"); + let content = doc.getElementById('content'); + + let e = doc.createElement(aElementName); + content.appendChild(e); + + let cought = false; + try { + e.setCustomValidity('foo'); + } catch (e) { + cought = true; + } + + todo(!cought, "setCustomValidity should exist for " + aElementName); + + content.removeChild(e); +} + +function test () { + waitForExplicitFinish(); + gBrowser.selectedTab = gBrowser.addTab(); + gBrowser.selectedBrowser.addEventListener("load", function () { + gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true); + + let testData = [ + /* element name, barred */ + [ 'input', false ], + [ 'textarea', false ], + [ 'button', true ], + [ 'select', false ], + [ 'output', true ], + [ 'fieldset', true ], + [ 'object', true ], + ]; + + for each (let data in testData) { + check(data[0], data[1]); + } + + let todo_testData = [ + [ 'keygen', 'false' ], + ]; + + for each(let data in todo_testData) { + todo_check(data[0], data[1]); + } + + gBrowser.removeCurrentTab(); + finish(); + }, true); + + content.location = + "data:text/html,
"; +} +