<head>
<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

function log(msg)
{
    document.getElementById("logger").innerHTML += msg + "<br>";
}

function finishTest()
{
    if (testRunner)
        testRunner.notifyDone();
}

var timeoutCount = 0;

function spinABit()
{
    if (timeoutCount == 20) {
        log("No connect event seen in 20 run loop spins. Yay.");
        finishTest();
    }

    ++timeoutCount;
    setTimeout(spinABit, 0);
}

function handleGamepadConnect()
{
    log("Connect event seen! Should NOT have been seen");
    finishTest();
}

function runTest() {
    addEventListener("gamepadconnected", handleGamepadConnect);

    // Connecting the gamepad and changing axis values should *not* make it visible.
    // Only button presses should expose it.
    testRunner.setMockGamepadDetails(0, "Test Joystick", 2, 2);
    testRunner.connectMockGamepad(0);
    testRunner.setMockGamepadAxisValue(0, 0, 0.7);
    testRunner.setMockGamepadAxisValue(0, 1, -1.0);

    setTimeout(spinABit, 0);
}

</script>
</head>
<body onload="runTest();">
<div id="logger"></div>
</body>
