<html>
<head>
<script src="../resources/js-test.js"></script>
</head>
<body>
<script>
description('Tests the cancelVibration during pattern vibration is working.');

function vibrate(pattern) {
    navigator.vibrate(pattern);
    shouldBeTrue('internals.isVibrating(document)');
}

function cancelVibration(time) {
    setTimeout(function() {
        navigator.vibrate(0);
        shouldBeFalse('internals.isVibrating(document)');
        doNextTest();
    }, time);
}

function doNextTest() {
    if (count == 4)
        finishJSTest();
    doTest(++count);
}

function doTest(num) {
    switch(num) {
    case 1: // Test that cancelling works during a vibration in a pattern.
        vibrate([20, 20, 20]);
        // Progress time by 10ms so we are in the middle of the first vibration of the pattern.
        cancelVibration(10);
        break;
    case 2: // Test that cancelling works during a pause in a pattern.
        vibrate([10, 10, 10]);
        // Progress time by 15ms so we are in the middle of the first pause of the pattern.
        cancelVibration(15);
        break;
    case 3: // Test that the system stops thinking that it is vibrating when the pattern ends.
        vibrate([10, 10, 10]);
        // Progress time by 35ms so the pattern ends naturally without interruptions.
        cancelVibration(35);
        break;
    case 4: // Test that a trailing pause is stripped so isVibrating becomes false after the last vibration in the pattern.
        vibrate([10, 10, 10, 10]); // Even number of array entries, the trailing pause will be stripped.
        // Progress time by 35ms so the pattern ends naturally without interruptions.
        cancelVibration(35);
        break;
    }
}

var count = 1;
if (window.testRunner) {
    window.jsTestIsAsync = true;
    shouldBeFalse('internals.isVibrating(document)'); // Before vibration test.
    doTest(count);
} else {
    debug('This test can not be run without the TestRunner');
}
</script>
</body>
</html>