<!DOCTYPE html>
<p>
    Test that no more message events are fired after EventSource.close() is called, even if it
    means discarding events that were already processed.
    Passes if only one message is received.
</p>
<pre id=log></pre>
<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    var log = document.getElementById("log");
    var es = new EventSource("resources/event-stream.php");
    var counter = 0;
    es.addEventListener('message', function (e) {
        log.innerHTML += "Got message #" + ++counter + "\n";

        if (counter > 1)
            log.innerHTML += "FAIL. Handler called after the source was closed explicitely.\n";

        es.close();

        setTimeout(function () {
            // Need to wait to see if we're called again.
            // event-stream.php sends a bunch of events before flushing, so if close() didn't take
            // effect we'd get a second message practically instantaneously, waiting 100ms should be ok.
            if (window.testRunner)
                testRunner.notifyDone();
        }, 100);
    }, false);

</script>
