1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/voicemail/test/marionette/test_voicemail_statuschanged.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,208 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +SpecialPowers.addPermission("voicemail", true, document); 1.8 + 1.9 +let voicemail = window.navigator.mozVoicemail; 1.10 +let serviceId = 0; 1.11 + 1.12 +ok(voicemail instanceof MozVoicemail); 1.13 +is(voicemail.status, null); 1.14 + 1.15 +function sendIndicatorPDU(pdu, listener, nextTest) { 1.16 + let smsCommand = "sms pdu " + pdu; 1.17 + let commandCompleted = false; 1.18 + let sawEvent = false; 1.19 + 1.20 + voicemail.addEventListener("statuschanged", function statusChanged(event) { 1.21 + voicemail.removeEventListener("statuschanged", statusChanged); 1.22 + 1.23 + try { 1.24 + listener(event); 1.25 + } catch (e) { 1.26 + ok(false, String(e)); 1.27 + } 1.28 + 1.29 + sawEvent = true; 1.30 + if (commandCompleted) { 1.31 + nextTest(); 1.32 + } 1.33 + }); 1.34 + 1.35 + log("-> " + smsCommand); 1.36 + runEmulatorCmd(smsCommand, function(result) { 1.37 + log("<- " + result); 1.38 + is(result[0], "OK"); 1.39 + commandCompleted = true; 1.40 + if (sawEvent) { 1.41 + nextTest(); 1.42 + } 1.43 + }); 1.44 +} 1.45 + 1.46 +// TODO: Add tests for store/discard once they are implemented 1.47 +// See RadioInterfaceLayer.js / Bug #768441 1.48 + 1.49 +function isVoicemailStatus(status) { 1.50 + is(voicemail.getStatus(), status); 1.51 + is(voicemail.getStatus(serviceId), status); 1.52 + 1.53 + is(voicemail.getStatus().hasMessages, status.hasMessages); 1.54 + is(voicemail.getStatus().messageCount, status.messageCount); 1.55 + is(voicemail.getStatus().returnNumber, status.returnNumber); 1.56 + is(voicemail.getStatus().returnMessage, status.returnMessage); 1.57 +} 1.58 + 1.59 +const MWI_PDU_PREFIX = "0000"; 1.60 +const MWI_PDU_UDH_PREFIX = "0040"; 1.61 +const MWI_PID_DEFAULT = "00"; 1.62 +const MWI_DCS_DISCARD_INACTIVE = "C0"; 1.63 +const MWI_DCS_DISCARD_ACTIVE = "C8"; 1.64 +const MWI_TIMESTAMP = "00000000000000"; 1.65 + 1.66 +const MWI_DEFAULT_BODY = "1 new voicemail"; 1.67 +const MWI_UD_DEFAULT = PDUBuilder.buildUserData({ 1.68 + body: MWI_DEFAULT_BODY 1.69 +}); 1.70 + 1.71 +const MWI_LEVEL2_SENDER = "+15125551235"; 1.72 +const MWI_LEVEL2_PDU_ADDRESS = PDUBuilder.buildAddress(MWI_LEVEL2_SENDER); 1.73 +const MWI_LEVEL2_DISCARD_ACTIVE_PDU = 1.74 + MWI_PDU_PREFIX + 1.75 + MWI_LEVEL2_PDU_ADDRESS + 1.76 + MWI_PID_DEFAULT + 1.77 + MWI_DCS_DISCARD_ACTIVE + 1.78 + MWI_TIMESTAMP + 1.79 + MWI_UD_DEFAULT; 1.80 + 1.81 +function testLevel2DiscardActive() { 1.82 + 1.83 + function onLevel2Active(event) { 1.84 + let status = event.status; 1.85 + // TODO: bug 905228 - MozVoicemailStatus is not defined. 1.86 + //ok(status instanceof MozVoicemailStatus); 1.87 + is(status.hasMessages, true); 1.88 + is(status.messageCount, -1); 1.89 + is(status.returnNumber, MWI_LEVEL2_SENDER); 1.90 + is(status.returnMessage, MWI_DEFAULT_BODY); 1.91 + isVoicemailStatus(status); 1.92 + } 1.93 + 1.94 + sendIndicatorPDU(MWI_LEVEL2_DISCARD_ACTIVE_PDU, 1.95 + onLevel2Active, 1.96 + testLevel2DiscardInactive); 1.97 + 1.98 +} 1.99 + 1.100 +const MWI_LEVEL2_DISCARD_INACTIVE_PDU = 1.101 + MWI_PDU_PREFIX + 1.102 + MWI_LEVEL2_PDU_ADDRESS + 1.103 + MWI_PID_DEFAULT + 1.104 + MWI_DCS_DISCARD_INACTIVE + 1.105 + MWI_TIMESTAMP + 1.106 + MWI_UD_DEFAULT; 1.107 + 1.108 +function testLevel2DiscardInactive() { 1.109 + function onLevel2Inactive(event) { 1.110 + let status = event.status; 1.111 + // TODO: bug 905228 - MozVoicemailStatus is not defined. 1.112 + //ok(status instanceof MozVoicemailStatus); 1.113 + is(status.hasMessages, false); 1.114 + is(status.messageCount, 0); 1.115 + is(status.returnNumber, MWI_LEVEL2_SENDER); 1.116 + is(status.returnMessage, MWI_DEFAULT_BODY); 1.117 + isVoicemailStatus(status); 1.118 + } 1.119 + 1.120 + sendIndicatorPDU(MWI_LEVEL2_DISCARD_INACTIVE_PDU, 1.121 + onLevel2Inactive, 1.122 + testLevel3DiscardActive); 1.123 +} 1.124 + 1.125 + 1.126 +// Tests for Level 3 MWI with a message count in the User Data Header 1.127 +const MWI_LEVEL3_SENDER = "+15125551236"; 1.128 +const MWI_LEVEL3_PDU_ADDRESS = PDUBuilder.buildAddress(MWI_LEVEL3_SENDER); 1.129 + 1.130 +const MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT = 3; 1.131 +const MWI_LEVEL3_ACTIVE_BODY = "3 new voicemails"; 1.132 +const MWI_LEVEL3_ACTIVE_UD = PDUBuilder.buildUserData({ 1.133 + headers: [{ 1.134 + id: RIL.PDU_IEI_SPECIAL_SMS_MESSAGE_INDICATION, 1.135 + length: 2, 1.136 + octets: [ 1.137 + RIL.PDU_MWI_STORE_TYPE_DISCARD, 1.138 + MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT 1.139 + ] 1.140 + }], 1.141 + body: MWI_LEVEL3_ACTIVE_BODY 1.142 +}); 1.143 + 1.144 +const MWI_LEVEL3_DISCARD_ACTIVE_PDU = 1.145 + MWI_PDU_UDH_PREFIX + 1.146 + MWI_LEVEL3_PDU_ADDRESS + 1.147 + MWI_PID_DEFAULT + 1.148 + MWI_DCS_DISCARD_ACTIVE + 1.149 + MWI_TIMESTAMP + 1.150 + MWI_LEVEL3_ACTIVE_UD; 1.151 + 1.152 +function testLevel3DiscardActive() { 1.153 + 1.154 + function onLevel3Active(event) { 1.155 + let status = event.status; 1.156 + // TODO: bug 905228 - MozVoicemailStatus is not defined. 1.157 + //ok(status instanceof MozVoicemailStatus); 1.158 + is(status.hasMessages, true); 1.159 + is(status.messageCount, MWI_LEVEL3_ACTIVE_UDH_MSG_COUNT); 1.160 + is(status.returnNumber, MWI_LEVEL3_SENDER); 1.161 + is(status.returnMessage, MWI_LEVEL3_ACTIVE_BODY); 1.162 + isVoicemailStatus(status); 1.163 + } 1.164 + 1.165 + sendIndicatorPDU(MWI_LEVEL3_DISCARD_ACTIVE_PDU, 1.166 + onLevel3Active, 1.167 + testLevel3DiscardInactive); 1.168 +} 1.169 + 1.170 +const MWI_LEVEL3_INACTIVE_BODY = "No unread voicemails"; 1.171 +const MWI_LEVEL3_INACTIVE_UD = PDUBuilder.buildUserData({ 1.172 + headers: [{ 1.173 + id: RIL.PDU_IEI_SPECIAL_SMS_MESSAGE_INDICATION, 1.174 + length: 2, 1.175 + octets: [ 1.176 + RIL.PDU_MWI_STORE_TYPE_DISCARD, 1.177 + 0 // messageCount 1.178 + ] 1.179 + }], 1.180 + body: MWI_LEVEL3_INACTIVE_BODY 1.181 +}); 1.182 + 1.183 +const MWI_LEVEL3_DISCARD_INACTIVE_PDU = 1.184 + MWI_PDU_UDH_PREFIX + 1.185 + MWI_LEVEL3_PDU_ADDRESS + 1.186 + MWI_PID_DEFAULT + 1.187 + MWI_DCS_DISCARD_ACTIVE + 1.188 + MWI_TIMESTAMP + 1.189 + MWI_LEVEL3_INACTIVE_UD; 1.190 + 1.191 +function testLevel3DiscardInactive() { 1.192 + function onLevel3Inactive(event) { 1.193 + let status = event.status; 1.194 + // TODO: bug 905228 - MozVoicemailStatus is not defined. 1.195 + //ok(status instanceof MozVoicemailStatus); 1.196 + is(status.hasMessages, false); 1.197 + is(status.messageCount, 0); 1.198 + is(status.returnNumber, MWI_LEVEL3_SENDER); 1.199 + is(status.returnMessage, MWI_LEVEL3_INACTIVE_BODY); 1.200 + isVoicemailStatus(status); 1.201 + } 1.202 + 1.203 + sendIndicatorPDU(MWI_LEVEL3_DISCARD_INACTIVE_PDU, onLevel3Inactive, cleanUp); 1.204 +} 1.205 + 1.206 +function cleanUp() { 1.207 + SpecialPowers.removePermission("voicemail", document); 1.208 + finish(); 1.209 +} 1.210 + 1.211 +testLevel2DiscardActive();