105 lines
3.5 KiB
HTML
105 lines
3.5 KiB
HTML
<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>
|