chromium/third_party/blink/web_tests/fast/files/file-reader-done-reading-abort.html

<!DOCTYPE html>
<html>
<body>
<pre id='console'></pre>
<script src="../../resources/gc.js"></script>
<script>
function log(message)
{
    document.getElementById('console').appendChild(document.createTextNode(message + "\n"));
}

function runTest()
{
    log("Test that FileReader.abort after reading is done doesn't fire events.");

    var text = "Hello";
    var reader = new FileReader();

    reader.onloadend = function(event) {
        fileString = event.target.result;
        if (fileString != text)
            log("Incorrect data read, expected " + text + ", got " + fileString);

        reader.onabort = function() {
            log("Received abort event after reading");
        };
        reader.onload = function() {
            log("Received load event after reading");
        };
        reader.onloadend = function() {
            log("Received loadend event after reading");
        };
        reader.onloadstart = function() {
            log("Received load start event after reading");
        };
        reader.onprogress = function() {
            log("Received progress event after reading");
        };

        reader.abort();
        gc();
        finishTest();
    }

    reader.onerror = function(event) {
        log("Received error event: " + event.target.error.code);
    };

    reader.readAsText(new Blob([text]));
}

function finishTest()
{
    log("DONE");
    if (testRunner.notifyDone)
        testRunner.notifyDone();
}

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

window.onload = runTest;
</script>
</body>
</html>