chromium/third_party/blink/web_tests/http/tests/xmlhttprequest/ontimeout-event.html

<!doctype html>
<html>
<head>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
</head>
<body>
<p> Verify that a timeout ProgressEvent is dispatched and have the expected values.</p>
<div id="log"></div>
<script type="text/javascript">

function verifyProgressEvent(context, e)
{
    assert_true(e.loaded >= 0, "Non-zero 'loaded' value for '" + context + "' event.");
    assert_true(!e.lengthComputable || e.total > 0, "Non-zero 'total' value for '" + context + "' event.");
}

function logProgressEvent(e) {
    results += " " + e.type;
}

function unexpectedProgressEvent(e) {
    assert_unreached("Unexpected request error");
}

function timeoutHandler(e)
{
    assert_true(e instanceof ProgressEvent);
    verifyProgressEvent("ontimeout", e);
    testOnTimeoutEvent.done();
}

var testOnTimeoutEvent = async_test("Check that 'timeout' events are delivered and have expected values.");
testOnTimeoutEvent.step(function () {
    var xhr = new XMLHttpRequest();
    xhr.ontimeout = testOnTimeoutEvent.step_func(timeoutHandler);
    xhr.onabort = testOnTimeoutEvent.step_func(unexpectedProgressEvent);
    xhr.onerror = testOnTimeoutEvent.step_func(unexpectedProgressEvent);
    xhr.onload = testOnTimeoutEvent.step_func(unexpectedProgressEvent);
    xhr.timeout = 30;
    xhr.open("GET", "/resources/load-and-stall.php?name=../resources/test.mp4&stallAt=100&stallFor=10000&mimeType=video/mp4", true);
    xhr.send();
});
</script>
</body>
</html>