chromium/third_party/blink/web_tests/fast/workers/worker-timeout.html

<body>
<p>Test Timeouts (setTimeout, setInterval, clearTimeout, clearInterval).</p>
<div id=result></div>
<script>
var logIsFrozen = false;
function log(message)
{
    if (!logIsFrozen)
        document.getElementById("result").innerHTML += message + "<br>";
}

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

var worker = new Worker('resources/worker-timeout.js');

worker.onmessage = function(evt) {
    log(evt.data);
    if (evt.data == "DONE") {
        // This flag is needed because in Chromium port, the notifyDone() does not immediately snapshots
        // the result and the still-firing timer in the worker may cause more messages to be logged before
        // actual termination of the test. However one objective of the test is to keep active interval
        // while the worker gets destroyed, so we freeze log rather then stop the interval from firing.
        // See https://bugs.webkit.org/show_bug.cgi?id=31452 for more info.
        logIsFrozen = true;
        if (window.testRunner)
            testRunner.notifyDone();
    } 
}
</script>
</body>
</html>