blob: 4605d9c3bb024c7b44a775e684e192e549106407 [file] [log] [blame]
<!DOCTYPE html>
<title></title>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/gesture-util.js"></script>
<div>
<input type="number" id="test" value="0">
<input id="another">
</div>
<script>
// Positive deltaX or deltaY means scroll right or down.
async function dispatchWheelEvent(element, deltaX, deltaY)
{
element_center = elementCenter(element);
await wheelTick(deltaX, deltaY, element_center);
}
promise_test(async t => {
const input = document.getElementById('test');
input.focus();
// Initial value is 0. We'll wheel up by 1
await dispatchWheelEvent(input, 0, -1);
assert_equals(input.value, "1", "Wheel up increments value to 1.");
// We change the selected value in ScrollBegin and the three wheel ticks
// are treated as a single stream with one ScrollBegin, so we increase or
// decrease by one value even though there is more than one wheel tick.
// Wheel up by 3:
await dispatchWheelEvent(input, 0, -3);
assert_equals(input.value, "2", "Larger delta still increments by 1.");
// Wheel down by 1
await dispatchWheelEvent(input, 0, 1);
assert_equals(input.value, "1", "Wheel down decrements value by 1.");
// Wheel down by 3
await dispatchWheelEvent(input, 0, 3);
assert_equals(input.value, "0", "Larger delta still decrements by 1.");
// Disabled input element
input.disabled = true;
await dispatchWheelEvent(input, 0, -1);
assert_equals(input.value, "0", "Disabled element isn't changed.");
input.removeAttribute('disabled');
// Read-only input element
input.readOnly = true;
await dispatchWheelEvent(input, 0, -1);
assert_equals(input.value, "0", "Read only element isn't changed.");
input.readOnly = false;
// No focus
document.getElementById('another').focus();
await dispatchWheelEvent(input, 0, -1);
assert_equals(input.value, "0", "Unfocused element isn't changed.");
}, "Wheel operations for <input type='number'>");
</script>