blob: 837bc468d8f5e9a118ee364bd15170fb31a369ba [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @description
*/
import "dart:html";
import "../../testcommon.dart";
import "../../../Utils/async_utils.dart";
main() {
document.body.setInnerHtml('''
<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>
''', treeSanitizer: new NullTreeSanitizer());
dispatchEvent(target, eventType, offsetX, offsetY) {
var targetRect = target.getBoundingClientRect();
var ev = new MouseEvent(eventType, canBubble: true, cancelable: true,
view: window, detail: 1,
screenX: 1, screenY: 1,
clientX: round(targetRect.left) + offsetX, clientY: round(targetRect.top) + offsetY,
ctrlKey: false, altKey: false, shiftKey: false, metaKey: false,
button: 0, relatedTarget: document);
target.dispatchEvent(ev);
}
defaultPreventingHandler(e) {
e.preventDefault();
}
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);
debug('unselect all radio buttons');
shouldBeTrue(radio1.checked);
debug('Checking whether default-prevented click clobbered indeterminate state:');
debug('On checked radio button');
shouldBeTrue(radio3.indeterminate);
debug('On unchecked radio button');
shouldBeTrue(radio4.indeterminate);
debug('On checked checkbox');
shouldBeTrue(check1.indeterminate);
debug('On unchecked checkbox');
shouldBeTrue(check2.indeterminate);
debug('Checking whether default-prevented click clobbered checked state:');
debug('On checked radio button');
shouldBeTrue(radio3.checked);
debug('On unchecked radio button');
shouldBeFalse(radio4.checked);
debug('On checked checkbox');
shouldBeTrue(check1.checked);
debug('On unchecked checkbox');
shouldBeFalse(check2.checked);
}
runTests();
}