blob: eeb27e6e8b590e7e5600c6fdd55b9ca0b396b748 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<input id="readonlyNumber" type="number" onmouseup="mouseupEventOnReadonlyNumber()" />
<input id="disabledNumber" type="number" onmouseup="mouseupEventOnDisabledNumber()" />
<p>
This tests if the value of a number input form does not continue
to increase/decrease in the following scenario.<br/>
(1) Click the spin button of the input form.<br/>
(2) Hook the 'mouseup' event and disable the input form.<br/>
(3) Enable the input form after some delay.<br/>
To run this test manually, input any value in the input form
and then click the spin-down button.
At this point, click the spin-down button quickly and
do not move the cursor from the spin-down button after the click.
If the value decreases by just 1, this test passes.
</p>
<div id="console"></div>
<script>
var testInputs;
var testDelays;
var input;
var delay;
window.jsTestIsAsync = true;
if (window.testRunner && window.eventSender) {
testInputs = [document.getElementById("readonlyNumber"), document.getElementById("disabledNumber")];
setTimeout(function() {
nextInputTest();
}, 0);
}
function nextInputTest() {
if (testInputs.length == 0) {
finishJSTest();
} else {
input = testInputs.shift();
input.focus();
testDelays = [1, 10, 100];
debug("");
debug("Test on a " + (input.id == "readonlyNumber" ? "readonly" : "disabled") + " number input form:");
nextDelayTest();
}
}
function nextDelayTest() {
if (testDelays.length == 0) {
nextInputTest();
} else {
delay = testDelays.shift();
initializeInputAttributes(input, 1234567);
debug("delay = " + delay + " ms");
clickSpinDownButton(input);
setTimeout(function() {
shouldBeEqualToString('input.value', "1234566");
nextDelayTest();
}, 500);
}
}
function mouseupEventOnReadonlyNumber() {
input.readOnly = true;
setTimeout(function() {
input.readOnly = false;
}, delay);
}
function mouseupEventOnDisabledNumber() {
input.disabled = true;
setTimeout(function() {
input.disabled = false;
}, delay);
}
function initializeInputAttributes(input, value) {
input.value = value;
input.disabled = false;
input.readOnly = false;
}
function clickSpinDownButton(input) {
var x = input.offsetLeft + input.offsetWidth - 6;
var y = input.offsetTop + input.offsetHeight - 6;
eventSender.mouseMoveTo(x, y);
eventSender.mouseDown();
eventSender.mouseUp();
}
</script>
</body>
</html>