diff options
Diffstat (limited to 'dom/html/test/test_bug615833.html')
-rw-r--r-- | dom/html/test/test_bug615833.html | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/dom/html/test/test_bug615833.html b/dom/html/test/test_bug615833.html new file mode 100644 index 000000000..f72245d4c --- /dev/null +++ b/dom/html/test/test_bug615833.html @@ -0,0 +1,156 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=615697 +--> +<head> + <title>Test for Bug 615697</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=615697">Mozilla Bug 615697</a> +<p id="display"></p> +<div id="content"> + <input> + <textarea></textarea> + <input type='radio'> + <input type='checkbox'> + <select> + <option>foo</option> + <option>bar</option> + </select> + <select multiple size='1'> + <option>tulip</option> + </select> +</div> +<pre id="test"> +<script type="application/javascript"> + +/** Test for Bug 615697 **/ + +/** + * This test is making all elements trigger 'change' event. + * You should read the test from bottom to top: + * events are registered from the last one to the first one. + * + * Sometimes, elements are focused before a click. This might sound useless + * but it guarantees to have the element visible before simulating the click. + */ + +var input = document.getElementsByTagName('input')[0]; +var textarea = document.getElementsByTagName('textarea')[0]; +var radio = document.getElementsByTagName('input')[1]; +var checkbox= document.getElementsByTagName('input')[2]; +var select = document.getElementsByTagName('select')[0]; +var selectMultiple = document.getElementsByTagName('select')[1]; + +function checkChangeEvent(aEvent) +{ + ok(aEvent.bubbles, "change event should bubble"); + ok(!aEvent.cancelable, "change event shouldn't be cancelable"); +} + +selectMultiple.addEventListener("change", function(aEvent) { + selectMultiple.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + SimpleTest.finish(); +}, false); + +selectMultiple.addEventListener("focus", function() { + selectMultiple.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeMouseAtCenter(selectMultiple, {}); + }); +}, false); + +select.addEventListener("change", function(aEvent) { + select.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + selectMultiple.focus(); +}, false); + +select.addEventListener("keyup", function() { + select.removeEventListener("keyup", arguments.callee, false); + select.blur(); +}, false); + +select.addEventListener("focus", function() { + select.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeKey("VK_DOWN", {}); + }); +}, false); + +checkbox.addEventListener("change", function(aEvent) { + checkbox.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + select.focus(); +}, false); + +checkbox.addEventListener("focus", function() { + checkbox.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeMouseAtCenter(checkbox, {}); + }); +}, false); + +radio.addEventListener("change", function(aEvent) { + radio.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + checkbox.focus(); +}, false); + +radio.addEventListener("focus", function() { + radio.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeMouseAtCenter(radio, {}); + }); +}, false); + +textarea.addEventListener("change", function(aEvent) { + textarea.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + radio.focus(); +}, false); + +textarea.addEventListener("input", function() { + textarea.removeEventListener("input", arguments.callee, false); + textarea.blur(); +}, false); + +textarea.addEventListener("focus", function() { + textarea.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeKey('f', {}); + }); +}, false); + +input.addEventListener("change", function(aEvent) { + input.removeEventListener("change", arguments.callee, false); + checkChangeEvent(aEvent); + textarea.focus(); +}, false); + +input.addEventListener("input", function() { + input.removeEventListener("input", arguments.callee, false); + input.blur(); +}, false); + +input.addEventListener("focus", function() { + input.removeEventListener("focus", arguments.callee, false); + SimpleTest.executeSoon(function () { + synthesizeKey('f', {}); + }); +}, false); + +SimpleTest.waitForExplicitFinish(); +SimpleTest.waitForFocus(function() { + input.focus(); +}); + +</script> +</pre> +</body> +</html> |