<html>
<head>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<input type="range" id="slider" oninput="log(event)" onchange="log(event)"  min=0 max=100 value=50>
<script>
    description('Test that for each keyboard event both input and change event are dispatched');
    var changeEventCounter = 0;
    var lastChangeEventCounter = changeEventCounter;
    var inputEventCounter = 0;
    var lastInputEventCounter = inputEventCounter;

    function log(event) {
        if (event.type == 'input')
           inputEventCounter++;
        if (event.type == 'change')
            changeEventCounter++;
    }

    function testInput() {
        var slider = document.getElementById('slider');
        if (window.testRunner) {
            // slider drag
            slider.focus();
            debug('Move left');
            eventSender.keyDown('leftArrow');
            shouldBeGreaterThanOrEqual('inputEventCounter' , 'lastInputEventCounter + 1');
            shouldBeGreaterThanOrEqual('changeEventCounter', 'lastChangeEventCounter + 1');
            debug('Move right');
            lastInputEventCounter = inputEventCounter;
            lastChangeEventCounter = changeEventCounter;
            eventSender.keyDown('rightArrow');
            shouldBeGreaterThanOrEqual('inputEventCounter' , 'lastInputEventCounter + 1');
            shouldBeGreaterThanOrEqual('changeEventCounter', 'lastChangeEventCounter + 1');
        }
    }
    testInput();
</script>
</body>
</html>
