<html>
<head>
<script>
function log(m) {
    document.getElementById("log").innerHTML += m + "<br>";
}

var multiplyFactor = 2;   // Create this many timers in every timer callback.
var targetLatency = 10000; // Multiply timers until it takes this much to fire all their callbacks.
var timerCount = 1;

function timerCallback(creationTimestamp) {
    --timerCount;

    if (!multiplyFactor) {
        if (timerCount == 0)
            log("No more timers - UI should be responsive now.");
        return;
    }

    // Create more timers. Capture the current time so when callbacks are fired,
    // we can check how long it actually took (latency caused by a long timer queue).
    var timestamp = new Date().getTime();
    for (i = 0; i < multiplyFactor; ++i) {
        setTimeout(function() { timerCallback(timestamp); }, 0);
        ++timerCount;
    }

    // Once the timer queue gets long enough for the timer firing latency to be over the limit,
    // stop multplying them and keep the number of timers constant.
    if (multiplyFactor > 1 && new Date().getTime() - creationTimestamp > targetLatency)
        multiplyFactor = 1;
}

function runTest() {
    log("Freezing UI...");
    setTimeout(function() { timerCallback(new Date().getTime()); }, 0);
    setTimeout("multiplyFactor = 0; log('Finishing. Started to drain timers.');", 10000);
}

</script>
</head>
<body onload="runTest()">
This test will create enough timers to freeze browser UI. After 10 seconds, it
will start drain the timers so the UI becomes responsive again in a few seconds.
You don't need to kill the browser.<br>If the bug is fixed, there will be no
UI freeze. Refresh the page to repeat the experiment.<br>Try to click at this
button (or browser's menu) while UI is frozen: <button onclick="log('clicked')">Click Me</button> <hr>
<div id="log"></div>
</body>
</html>
