Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 SpecialPowers.addPermission("voicemail", true, document);
6 let voicemail = window.navigator.mozVoicemail;
7 let serviceId = 0;
9 ok(voicemail instanceof MozVoicemail);
10 is(voicemail.status, null);
12 function sendIndicatorPDU(pdu, listener, nextTest) {
13 let smsCommand = "sms pdu " + pdu;
14 let commandCompleted = false;
15 let sawEvent = false;
17 voicemail.addEventListener("statuschanged", function statusChanged(event) {
18 voicemail.removeEventListener("statuschanged", statusChanged);
20 try {
21 listener(event);
22 } catch (e) {
23 ok(false, String(e));
24 }
26 sawEvent = true;
27 if (commandCompleted) {
28 nextTest();
29 }
30 });
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 }
43 // TODO: Add tests for store/discard once they are implemented
44 // See RadioInterfaceLayer.js / Bug #768441
46 function isVoicemailStatus(status) {
47 is(voicemail.getStatus(), status);
48 is(voicemail.getStatus(serviceId), status);
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 }
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";
63 const MWI_DEFAULT_BODY = "1 new voicemail";
64 const MWI_UD_DEFAULT = PDUBuilder.buildUserData({
65 body: MWI_DEFAULT_BODY
66 });
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;
78 function testLevel2DiscardActive() {
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 }
91 sendIndicatorPDU(MWI_LEVEL2_DISCARD_ACTIVE_PDU,
92 onLevel2Active,
93 testLevel2DiscardInactive);
95 }
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;
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 }
117 sendIndicatorPDU(MWI_LEVEL2_DISCARD_INACTIVE_PDU,
118 onLevel2Inactive,
119 testLevel3DiscardActive);
120 }
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);
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 });
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;
149 function testLevel3DiscardActive() {
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 }
162 sendIndicatorPDU(MWI_LEVEL3_DISCARD_ACTIVE_PDU,
163 onLevel3Active,
164 testLevel3DiscardInactive);
165 }
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 });
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;
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 }
200 sendIndicatorPDU(MWI_LEVEL3_DISCARD_INACTIVE_PDU, onLevel3Inactive, cleanUp);
201 }
203 function cleanUp() {
204 SpecialPowers.removePermission("voicemail", document);
205 finish();
206 }
208 testLevel2DiscardActive();