Improve test cases for network information APIs
[WebKit-https.git] / LayoutTests / networkinformation / script-tests / add-listener-from-callback.js
1 description('Tests that adding a new event listener from a callback works as expected.');
2
3 var bandwidth = 10;
4 var metered = false;
5
6 var connection = navigator.webkitConnection;
7
8 function checkNetworkInformation() {
9     shouldBe("typeof connection.bandwidth", '"number"');
10     shouldBe("typeof connection.metered", '"boolean"');
11 }
12
13 var firstListenerEvents = 0;
14 function firstListener() {
15     checkNetworkInformation();
16     if (++firstListenerEvents == 1) {
17         connection.addEventListener('webkitnetworkinfochange', secondListener);
18         internals.setNetworkInformation(document, 'webkitnetworkinfochange', bandwidth, metered);
19     }
20     else if (firstListenerEvents > 2)
21         testFailed('Too many events for first listener.');
22     maybeFinishTest();
23 }
24
25 var secondListenerEvents = 0;
26 function secondListener() {
27     checkNetworkInformation();
28     if (++secondListenerEvents > 1)
29         testFailed('Too many events for second listener.');
30     maybeFinishTest();
31 }
32
33 function maybeFinishTest() {
34     if (firstListenerEvents == 2 && secondListenerEvents == 1)
35         finishJSTest();
36 }
37
38 connection.addEventListener('webkitnetworkinfochange', firstListener);
39 internals.setNetworkInformation(document, 'webkitnetworkinfochange', bandwidth, metered);
40
41 window.jsTestIsAsync = true;