<!DOCTYPE HTML> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=534833 --> <head> <title>Test for Bug 534833</title> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=534833">Mozilla Bug 534833</a> <p id="display"></p> <div id="content" style="display: none"> </div> <pre id="test"> <script type="application/javascript"> /** Test for Bug 534833 **/ SimpleTest.waitForExplicitFinish(); addLoadEvent(runTests); var input1GotClick = 0; var input2GotClick = 0; var textarea1GotClick = 0; var textarea2GotClick = 0; var div1GotClick = 0; var div2GotClick = 0; var tests = [ { element: "text", clickText: true }, { element: "text2", clickText: false }, { element: "area", clickText: true }, { element: "area2", clickText: false }, { element: "d", clickText: true }, { element: "d", clickText: false }, { element: "d2", clickText: true }, { element: "d2", clickText: false } ]; function nextTest_() { if (!tests.length) { finishTests(); return; } var test = tests.shift(); var el = document.getElementById(test.element); el.scrollIntoView(true); if (test.clickText) { synthesizeMouse(el, 5, 5, {type : "mousedown" }); synthesizeMouse(el, 5, 5, {type : "mouseup" }); } else { synthesizeMouse(el, el.getBoundingClientRect().width - 5, 5, {type : "mousedown" }); synthesizeMouse(el, el.getBoundingClientRect().width - 5, 5, {type : "mouseup" }); } nextTest(); } function nextTest() { var el = document.getElementById("initialfocus"); el.addEventListener("focus", function() { el.removeEventListener("focus", arguments.callee, false); setTimeout(nextTest_, 0); }, false); el.focus(); } function runTests() { var t = document.getElementById("text"); var t2 = document.getElementById("text2"); var a = document.getElementById("area"); var a2 = document.getElementById("area2"); var d = document.getElementById("d"); var d2 = document.getElementById("d2"); // input 1 t.onfocus = function(e) { t.value = ""; } t.onclick = function(e) { ++input1GotClick; } // input 2 t2.onfocus = function(e) { t2.value = ""; } t2.onclick = function(e) { ++input2GotClick; } // textarea 1 a.onfocus = function(e) { a.value = ""; } a.onclick = function(e) { ++textarea1GotClick; } // textarea 2 a2.onfocus = function(e) { a2.value = ""; } a2.onclick = function(e) { ++textarea2GotClick; } // div 1 var c = 0; d.onmousedown = function(e) { d.textContent = (++c) + " / click before or after |"; } d.onclick = function(e) { ++div1GotClick; } // div 2 var c2 = 0; d2.onmousedown = function(e) { d2.firstChild.data = (++c2) + " / click before or after |"; } d2.onclick = function(e) { ++div2GotClick; } nextTest(); } function finishTests() { is(input1GotClick, 1, "input element should have got a click!"); is(input2GotClick, 1, "input element should have got a click! (2)"); is(textarea1GotClick, 1, "textarea element should have got a click!"); is(textarea2GotClick, 1, "textarea element should have got a click! (2)"); is(div1GotClick, 2, "div element's content text was replaced, it should have got 2 click!"); is(div2GotClick, 2, "div element's content text was modified, it should have got 2 clicks!"); SimpleTest.finish(); } </script> </pre> <input type="text" id="initialfocus"><br> <input type="text" id="text" value="click before |" style="width: 95%;"><br> <input type="text" id="text2" value="click after |" style="width: 95%;"> <br> <textarea id="area" rows="2" style="width: 95%;"> click before | </textarea><br> <textarea id="area2" rows="2" style="width: 95%;"> click after | </textarea> <div id="d" style="border: 1px solid black;">click before or after |</div> <div id="d2" style="border: 1px solid black;">click before or after |</div> </body> </html>