blob: f06d9d27c4b22f11e74c899a926e9c7ee6fd4dab [file] [log] [blame]
<!DOCTYPE>
<html>
<body>
<script src="../../../resources/js-test.js"></script>
<script src="../resources/common.js"></script>
<input type="number" id="num1" onchange="handleChangeEvent(this);" oninput="handleInputEvent(this);">
<script>
var changeEventCounter = 0;
var inputEventCounter = 0;
function handleChangeEvent(element) {
++changeEventCounter;
}
function handleInputEvent(element) {
++inputEventCounter;
}
var numberInput1= document.getElementById('num1');
numberInput1.focus();
debug('Should not trigger any event');
hoverOverElement(numberInput1);
shouldBe('inputEventCounter', '0');
shouldBe('changeEventCounter', '0');
numberInput1.value = 0;
eventSender.mouseMoveTo(numberInput1.offsetLeft + numberInput1.offsetWidth - 10, numberInput1.offsetTop + numberInput1.offsetHeight / 4);
eventSender.mouseDown();
debug('Input event is triggered but no change event is triggered on mouse down');
shouldBe('inputEventCounter', '1');
shouldBe('changeEventCounter', '0');
shouldBeEqualToString('numberInput1.value', '1');
eventSender.mouseUp();
debug('Change events occurs on mouse up');
shouldBe('inputEventCounter', '1');
shouldBe('changeEventCounter', '1');
shouldBeEqualToString('numberInput1.value', '1');
debug('Pressed more than once, still events are triggered');
eventSender.mouseMoveTo(numberInput1.offsetLeft + numberInput1.offsetWidth - 10, numberInput1.offsetTop + numberInput1.offsetHeight / 4);
eventSender.mouseDown();
eventSender.mouseUp();
shouldBe('inputEventCounter', '2');
shouldBe('changeEventCounter', '2');
shouldBeEqualToString('numberInput1.value', '2');
debug('When moving away from field, it should not trigger event, only on value change');
numberInput1.blur();
shouldBe('inputEventCounter', '2');
shouldBe('changeEventCounter', '2');
shouldBeEqualToString('numberInput1.value', '2');
</script>
</body>
</html>