Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / eventsource / script-tests / eventsource-reconnect.js
1 if (self.importScripts)
2     importScripts("/js-test-resources/js-test.js");
3
4 description("Test EventSource reconnect after end of event stream.");
5
6 self.jsTestIsAsync = true;
7
8 var retryTimeout;
9
10 function checkReadyState(es, desiredState) {
11     shouldBe("es.readyState", "es." + desiredState);
12 }
13
14 var errCount = 0;
15 var es = new EventSource("/eventsource/resources/reconnect.php");
16
17 checkReadyState(es, "CONNECTING");
18
19 es.onopen = function (evt) {
20     checkReadyState(es, "OPEN");
21 };
22
23 var evt;
24 es.onmessage = function (arg) {
25     evt = arg;
26     if (errCount)
27         shouldBeEqualToString("evt.data", "77");
28     shouldBeEqualToString("evt.lastEventId", "77");
29 };
30
31 es.onerror = function () {
32     errCount++;
33     if (errCount < 2) {
34         checkReadyState(es, "CONNECTING");
35         retryTimeout = setTimeout(end, 1000);
36         return;
37     }
38     clearTimeout(retryTimeout);
39     retryTimeout = null;
40     end();
41 };
42
43 function end() {
44     es.close();
45     if (retryTimeout)
46         testFailed("did not reconnect in time");
47     else
48         checkReadyState(es, "CLOSED");
49
50     finishJSTest();
51 }