| Index: LayoutTests/http/tests/eventsource/script-tests/eventsource-reconnect.js
 | 
| diff --git a/LayoutTests/http/tests/eventsource/script-tests/eventsource-reconnect.js b/LayoutTests/http/tests/eventsource/script-tests/eventsource-reconnect.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..7c4f54bd5411b6f190f1008f83e84c323d382284
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/http/tests/eventsource/script-tests/eventsource-reconnect.js
 | 
| @@ -0,0 +1,51 @@
 | 
| +if (self.importScripts)
 | 
| +    importScripts("/js-test-resources/js-test.js");
 | 
| +
 | 
| +description("Test EventSource reconnect after end of event stream.");
 | 
| +
 | 
| +self.jsTestIsAsync = true;
 | 
| +
 | 
| +var retryTimeout;
 | 
| +
 | 
| +function checkReadyState(es, desiredState) {
 | 
| +    shouldBe("es.readyState", "es." + desiredState);
 | 
| +}
 | 
| +
 | 
| +var errCount = 0;
 | 
| +var es = new EventSource("/eventsource/resources/reconnect.php");
 | 
| +
 | 
| +checkReadyState(es, "CONNECTING");
 | 
| +
 | 
| +es.onopen = function (evt) {
 | 
| +    checkReadyState(es, "OPEN");
 | 
| +};
 | 
| +
 | 
| +var evt;
 | 
| +es.onmessage = function (arg) {
 | 
| +    evt = arg;
 | 
| +    if (errCount)
 | 
| +        shouldBeEqualToString("evt.data", "77");
 | 
| +    shouldBeEqualToString("evt.lastEventId", "77");
 | 
| +};
 | 
| +
 | 
| +es.onerror = function () {
 | 
| +    errCount++;
 | 
| +    if (errCount < 2) {
 | 
| +        checkReadyState(es, "CONNECTING");
 | 
| +        retryTimeout = setTimeout(end, 1000);
 | 
| +        return;
 | 
| +    }
 | 
| +    clearTimeout(retryTimeout);
 | 
| +    retryTimeout = null;
 | 
| +    end();
 | 
| +};
 | 
| +
 | 
| +function end() {
 | 
| +    es.close();
 | 
| +    if (retryTimeout)
 | 
| +        testFailed("did not reconnect in time");
 | 
| +    else
 | 
| +        checkReadyState(es, "CLOSED");
 | 
| +
 | 
| +    finishJSTest();
 | 
| +}
 | 
| 
 |