dom/voicemail/test/marionette/test_voicemail_statuschanged.js

changeset 0
6474c204b198
     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();

mercurial