dom/voicemail/test/marionette/test_voicemail_statuschanged.js

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:86a7ab7172ea
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 SpecialPowers.addPermission("voicemail", true, document);
5
6 let voicemail = window.navigator.mozVoicemail;
7 let serviceId = 0;
8
9 ok(voicemail instanceof MozVoicemail);
10 is(voicemail.status, null);
11
12 function sendIndicatorPDU(pdu, listener, nextTest) {
13 let smsCommand = "sms pdu " + pdu;
14 let commandCompleted = false;
15 let sawEvent = false;
16
17 voicemail.addEventListener("statuschanged", function statusChanged(event) {
18 voicemail.removeEventListener("statuschanged", statusChanged);
19
20 try {
21 listener(event);
22 } catch (e) {
23 ok(false, String(e));
24 }
25
26 sawEvent = true;
27 if (commandCompleted) {
28 nextTest();
29 }
30 });
31
32 log("-> " + smsCommand);
33 runEmulatorCmd(smsCommand, function(result) {
34 log("<- " + result);
35 is(result[0], "OK");
36 commandCompleted = true;
37 if (sawEvent) {
38 nextTest();
39 }
40 });
41 }
42
43 // TODO: Add tests for store/discard once they are implemented
44 // See RadioInterfaceLayer.js / Bug #768441
45
46 function isVoicemailStatus(status) {
47 is(voicemail.getStatus(), status);
48 is(voicemail.getStatus(serviceId), status);
49
50 is(voicemail.getStatus().hasMessages, status.hasMessages);
51 is(voicemail.getStatus().messageCount, status.messageCount);
52 is(voicemail.getStatus().returnNumber, status.returnNumber);
53 is(voicemail.getStatus().returnMessage, status.returnMessage);
54 }
55
56 const MWI_PDU_PREFIX = "0000";
57 const MWI_PDU_UDH_PREFIX = "0040";
58 const MWI_PID_DEFAULT = "00";
59 const MWI_DCS_DISCARD_INACTIVE = "C0";
60 const MWI_DCS_DISCARD_ACTIVE = "C8";
61 const MWI_TIMESTAMP = "00000000000000";
62
63 const MWI_DEFAULT_BODY = "1 new voicemail";
64 const MWI_UD_DEFAULT = PDUBuilder.buildUserData({
65 body: MWI_DEFAULT_BODY
66 });
67
68 const MWI_LEVEL2_SENDER = "+15125551235";
69 const MWI_LEVEL2_PDU_ADDRESS = PDUBuilder.buildAddress(MWI_LEVEL2_SENDER);
70 const MWI_LEVEL2_DISCARD_ACTIVE_PDU =
71 MWI_PDU_PREFIX +
72 MWI_LEVEL2_PDU_ADDRESS +
73 MWI_PID_DEFAULT +
74 MWI_DCS_DISCARD_ACTIVE +
75 MWI_TIMESTAMP +
76 MWI_UD_DEFAULT;
77
78 function testLevel2DiscardActive() {
79
80 function onLevel2Active(event) {
81 let status = event.status;
82 // TODO: bug 905228 - MozVoicemailStatus is not defined.
83 //ok(status instanceof MozVoicemailStatus);
84 is(status.hasMessages, true);
85 is(status.messageCount, -1);
86 is(status.returnNumber, MWI_LEVEL2_SENDER);
87 is(status.returnMessage, MWI_DEFAULT_BODY);
88 isVoicemailStatus(status);
89 }
90
91 sendIndicatorPDU(MWI_LEVEL2_DISCARD_ACTIVE_PDU,
92 onLevel2Active,
93 testLevel2DiscardInactive);
94
95 }
96
97 const MWI_LEVEL2_DISCARD_INACTIVE_PDU =
98 MWI_PDU_PREFIX +
99 MWI_LEVEL2_PDU_ADDRESS +
100 MWI_PID_DEFAULT +
101 MWI_DCS_DISCARD_INACTIVE +
102 MWI_TIMESTAMP +
103 MWI_UD_DEFAULT;
104
105 function testLevel2DiscardInactive() {
106 function onLevel2Inactive(event) {
107 let status = event.status;
108 // TODO: bug 905228 - MozVoicemailStatus is not defined.
109 //ok(status instanceof MozVoicemailStatus);
110 is(status.hasMessages, false);
111 is(status.messageCount, 0);
112 is(status.returnNumber, MWI_LEVEL2_SENDER);
113 is(status.returnMessage, MWI_DEFAULT_BODY);
114 isVoicemailStatus(status);
115 }
116
117 sendIndicatorPDU(MWI_LEVEL2_DISCARD_INACTIVE_PDU,
118 onLevel2Inactive,
119 testLevel3DiscardActive);
120 }
121
122
123 // Tests for Level 3 MWI with a message count in the User Data Header
124 const MWI_LEVEL3_SENDER = "+15125551236";
125 const MWI_LEVEL3_PDU_ADDRESS = PDUBuilder.buildAddress(MWI_LEVEL3_SENDER);
126
127 const MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT = 3;
128 const MWI_LEVEL3_ACTIVE_BODY = "3 new voicemails";
129 const MWI_LEVEL3_ACTIVE_UD = PDUBuilder.buildUserData({
130 headers: [{
131 id: RIL.PDU_IEI_SPECIAL_SMS_MESSAGE_INDICATION,
132 length: 2,
133 octets: [
134 RIL.PDU_MWI_STORE_TYPE_DISCARD,
135 MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT
136 ]
137 }],
138 body: MWI_LEVEL3_ACTIVE_BODY
139 });
140
141 const MWI_LEVEL3_DISCARD_ACTIVE_PDU =
142 MWI_PDU_UDH_PREFIX +
143 MWI_LEVEL3_PDU_ADDRESS +
144 MWI_PID_DEFAULT +
145 MWI_DCS_DISCARD_ACTIVE +
146 MWI_TIMESTAMP +
147 MWI_LEVEL3_ACTIVE_UD;
148
149 function testLevel3DiscardActive() {
150
151 function onLevel3Active(event) {
152 let status = event.status;
153 // TODO: bug 905228 - MozVoicemailStatus is not defined.
154 //ok(status instanceof MozVoicemailStatus);
155 is(status.hasMessages, true);
156 is(status.messageCount, MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT);
157 is(status.returnNumber, MWI_LEVEL3_SENDER);
158 is(status.returnMessage, MWI_LEVEL3_ACTIVE_BODY);
159 isVoicemailStatus(status);
160 }
161
162 sendIndicatorPDU(MWI_LEVEL3_DISCARD_ACTIVE_PDU,
163 onLevel3Active,
164 testLevel3DiscardInactive);
165 }
166
167 const MWI_LEVEL3_INACTIVE_BODY = "No unread voicemails";
168 const MWI_LEVEL3_INACTIVE_UD = PDUBuilder.buildUserData({
169 headers: [{
170 id: RIL.PDU_IEI_SPECIAL_SMS_MESSAGE_INDICATION,
171 length: 2,
172 octets: [
173 RIL.PDU_MWI_STORE_TYPE_DISCARD,
174 0 // messageCount
175 ]
176 }],
177 body: MWI_LEVEL3_INACTIVE_BODY
178 });
179
180 const MWI_LEVEL3_DISCARD_INACTIVE_PDU =
181 MWI_PDU_UDH_PREFIX +
182 MWI_LEVEL3_PDU_ADDRESS +
183 MWI_PID_DEFAULT +
184 MWI_DCS_DISCARD_ACTIVE +
185 MWI_TIMESTAMP +
186 MWI_LEVEL3_INACTIVE_UD;
187
188 function testLevel3DiscardInactive() {
189 function onLevel3Inactive(event) {
190 let status = event.status;
191 // TODO: bug 905228 - MozVoicemailStatus is not defined.
192 //ok(status instanceof MozVoicemailStatus);
193 is(status.hasMessages, false);
194 is(status.messageCount, 0);
195 is(status.returnNumber, MWI_LEVEL3_SENDER);
196 is(status.returnMessage, MWI_LEVEL3_INACTIVE_BODY);
197 isVoicemailStatus(status);
198 }
199
200 sendIndicatorPDU(MWI_LEVEL3_DISCARD_INACTIVE_PDU, onLevel3Inactive, cleanUp);
201 }
202
203 function cleanUp() {
204 SpecialPowers.removePermission("voicemail", document);
205 finish();
206 }
207
208 testLevel2DiscardActive();

mercurial