| <html> |
| <head> |
| |
| <script> |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| function dispatchEvent(target, eventType, offsetX, offsetY) |
| { |
| var targetRect = target.getBoundingClientRect(); |
| var ev = document.createEvent("MouseEvent"); |
| ev.initMouseEvent(eventType, true, true, window, 1, 1, 1, targetRect.left + offsetX, targetRect.top + offsetY, false, false, false, false, 0, document); |
| target.dispatchEvent(ev); |
| } |
| |
| function log(s) |
| { |
| document.getElementById('result').innerHTML += s + '<br>'; |
| } |
| |
| function defaultPreventingHandler(e) { |
| e.preventDefault(); |
| } |
| |
| function runTests() |
| { |
| var radio1 = document.getElementById("radio1"); |
| var radio2 = document.getElementById("radio2"); |
| |
| var radio3 = document.getElementById("radio3"); |
| var radio4 = document.getElementById("radio4"); |
| |
| var check1 = document.getElementById("check1"); |
| var check2 = document.getElementById("check2"); |
| |
| radio1.checked = true; |
| |
| radio3.checked = true; |
| radio3.indeterminate = true; |
| radio4.indeterminate = true; |
| |
| check1.checked = true; |
| check1.indeterminate = true; |
| |
| check2.checked = false; |
| check2.indeterminate = true; |
| |
| radio3.addEventListener('click', defaultPreventingHandler, false); |
| radio4.addEventListener('click', defaultPreventingHandler, false); |
| check1.addEventListener('click', defaultPreventingHandler, false); |
| check2.addEventListener('click', defaultPreventingHandler, false); |
| |
| // Clicking selected radio should not unselect them both |
| dispatchEvent(radio1, "click", 2, 2); |
| |
| // Default-prevented click should not change checked or intermediate state |
| dispatchEvent(radio3, "click", 2, 2); |
| dispatchEvent(radio4, "click", 2, 2); |
| |
| // Default-prevented click should not change checked or intermediate state |
| dispatchEvent(check1, "click", 2, 2); |
| dispatchEvent(check2, "click", 2, 2); |
| |
| if (radio1.checked) |
| log('Click did not unselect all radio buttons: PASS'); |
| else |
| log('Click unselected all radio buttons: FAIL'); |
| |
| log('<br>Checking whether default-prevented click clobbered indeterminate state:') |
| log('On checked radio button: ' + (radio3.indeterminate ? 'PASS' : 'FAIL')); |
| log('On unchecked radio button: ' + (radio4.indeterminate ? 'PASS' : 'FAIL')); |
| log('On checked checkbox: ' + (check1.indeterminate ? 'PASS' : 'FAIL')); |
| log('On unchecked checkbox: ' + (check2.indeterminate ? 'PASS' : 'FAIL')); |
| |
| log('<br>Checking whether default-prevented click clobbered checked state:') |
| log('On checked radio button: ' + (radio3.checked ? 'PASS' : 'FAIL')); |
| log('On unchecked radio button: ' + (!radio4.checked ? 'PASS' : 'FAIL')); |
| log('On checked checkbox: ' + (check1.checked ? 'PASS' : 'FAIL')); |
| log('On unchecked checkbox: ' + (!check2.checked ? 'PASS' : 'FAIL')); |
| } |
| </script> |
| |
| </head> |
| |
| <body onload="runTests()"> |
| |
| <form> |
| <input type="radio" name="test" id="radio1" value="a">A |
| <input type="radio" name="test" id="radio2" value="b">B |
| </form> |
| |
| <form> |
| <input type="radio" name="test2" id="radio3" value="a">Intermediate A |
| <input type="radio" name="test2" id="radio4" value="b">Intermediate B |
| </form> |
| |
| <form> |
| <input type="checkbox" name="check1" id="check1" value="a">C |
| <input type="checkbox" name="check2" id="check2" value="b">D |
| </form> |
| |
| <div id="result"></div> |
| </body> |
| </html> |