dom/telephony/test/marionette/test_emergency_label.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:2b5d4d23ad73
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 MARIONETTE_TIMEOUT = 60000;
5 MARIONETTE_HEAD_JS = 'head.js';
6
7 let number;
8 let emergency;
9 let outgoing;
10
11 let testCase = 0;
12 let expectedResults = [
13 ["112", true],
14 ["911", true],
15 ["0912345678", false],
16 ["777", false],
17 ];
18
19 function createGoldenCallListResult0(number, state) {
20 // "outbound to xxxxxxxxxx : ringing"
21 let padPattern = " ";
22 let pad = padPattern.substring(0, padPattern.length - number.length);
23 return "outbound to " + number + pad + " : " + state;
24 }
25
26 function dial() {
27 log("Make an outgoing call.");
28
29 telephony.dial(number).then(call => {
30 outgoing = call;
31 ok(outgoing);
32 is(outgoing.number, number);
33 is(outgoing.state, "dialing");
34
35 is(outgoing, telephony.active);
36 is(telephony.calls.length, 1);
37 is(telephony.calls[0], outgoing);
38
39 outgoing.onalerting = function onalerting(event) {
40 log("Received 'onalerting' call event.");
41 is(outgoing, event.call);
42 is(outgoing.state, "alerting");
43 is(outgoing.emergency, emergency);
44
45 emulator.run("gsm list", function(result) {
46 log("Call list is now: " + result);
47 is(result[0], createGoldenCallListResult0(number, "ringing"));
48 is(result[1], "OK");
49 answer();
50 });
51 };
52 });
53 }
54
55 function answer() {
56 log("Answering the call.");
57
58 // We get no "connecting" event when the remote party answers the call.
59
60 outgoing.onconnected = function onconnected(event) {
61 log("Received 'connected' call event.");
62 is(outgoing, event.call);
63 is(outgoing.state, "connected");
64 is(outgoing.emergency, emergency);
65
66 is(outgoing, telephony.active);
67
68 emulator.run("gsm list", function(result) {
69 log("Call list is now: " + result);
70 is(result[0], createGoldenCallListResult0(number, "active"));
71 is(result[1], "OK");
72 hangUp();
73 });
74 };
75 emulator.run("gsm accept " + number);
76 }
77
78 function hangUp() {
79 log("Hanging up the call.");
80
81 // We get no "disconnecting" event when the remote party terminates the call.
82
83 outgoing.ondisconnected = function ondisconnected(event) {
84 log("Received 'disconnected' call event.");
85 is(outgoing, event.call);
86 is(outgoing.state, "disconnected");
87 is(outgoing.emergency, emergency);
88
89 is(telephony.active, null);
90 is(telephony.calls.length, 0);
91
92 emulator.run("gsm list", function(result) {
93 log("Call list is now: " + result);
94 is(result[0], "OK");
95 verifyNextEmergencyLabel();
96 });
97 };
98 emulator.run("gsm cancel " + number);
99 }
100
101 function cleanUp() {
102 finish();
103 }
104
105 function verifyNextEmergencyLabel() {
106 if (testCase >= expectedResults.length) {
107 cleanUp();
108 } else {
109 log("Running test case: " + testCase + "/" + expectedResults.length);
110 number = expectedResults[testCase][0];
111 emergency = expectedResults[testCase][1];
112 testCase++;
113
114 // No more calls in the list; give time for emulator to catch up
115 waitFor(dial, function() {
116 return (telephony.calls.length === 0);
117 });
118 }
119 }
120
121 startTest(function() {
122 verifyNextEmergencyLabel();
123 });

mercurial