Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 MARIONETTE_TIMEOUT = 60000;
6 SpecialPowers.setBoolPref("dom.sms.enabled", true);
7 SpecialPowers.addPermission("sms", true, document);
9 const SENDER = "5555552368"; // the remote number
10 const RECEIVER = "15555215554"; // the emulator's number
12 let manager = window.navigator.mozMobileMessage;
13 let msgText = "Mozilla Firefox OS!";
15 function verifyInitialState() {
16 log("Verifying initial state.");
17 ok(manager instanceof MozMobileMessageManager,
18 "manager is instance of " + manager.constructor);
19 simulateIncomingSms();
20 }
22 function simulateIncomingSms() {
23 log("Simulating incoming SMS.");
25 manager.onreceived = function onreceived(event) {
26 log("Received 'onreceived' event.");
27 let incomingSms = event.message;
28 ok(incomingSms, "incoming sms");
29 ok(incomingSms.id, "sms id");
30 log("Received SMS (id: " + incomingSms.id + ").");
31 ok(incomingSms.threadId, "thread id");
32 is(incomingSms.body, msgText, "msg body");
33 is(incomingSms.delivery, "received", "delivery");
34 is(incomingSms.deliveryStatus, "success", "deliveryStatus");
35 is(incomingSms.read, false, "read");
36 is(incomingSms.receiver, RECEIVER, "receiver");
37 is(incomingSms.sender, SENDER, "sender");
38 is(incomingSms.messageClass, "normal", "messageClass");
39 is(incomingSms.deliveryTimestamp, 0, "deliveryTimestamp is 0");
41 verifySmsExists(incomingSms);
42 };
43 runEmulatorCmd("sms send " + SENDER + " " + msgText, function(result) {
44 is(result[0], "OK", "emulator output");
45 });
46 }
48 function verifySmsExists(incomingSms) {
49 log("Getting SMS (id: " + incomingSms.id + ").");
50 let requestRet = manager.getMessage(incomingSms.id);
51 ok(requestRet, "smsrequest obj returned");
53 requestRet.onsuccess = function(event) {
54 log("Received 'onsuccess' smsrequest event.");
55 ok(event.target.result, "smsrequest event.target.result");
56 let foundSms = event.target.result;
57 is(foundSms.id, incomingSms.id, "found SMS id matches");
58 is(foundSms.threadId, incomingSms.threadId, "found SMS thread id matches");
59 is(foundSms.body, msgText, "found SMS msg text matches");
60 is(foundSms.delivery, "received", "delivery");
61 is(foundSms.deliveryStatus, "success", "deliveryStatus");
62 is(foundSms.read, false, "read");
63 is(foundSms.receiver, RECEIVER, "receiver");
64 is(foundSms.sender, SENDER, "sender");
65 is(foundSms.messageClass, "normal", "messageClass");
66 log("Got SMS (id: " + foundSms.id + ") as expected.");
67 deleteSms(incomingSms);
68 };
70 requestRet.onerror = function(event) {
71 log("Received 'onerror' smsrequest event.");
72 ok(event.target.error, "domerror obj");
73 is(event.target.error.name, "NotFoundError", "error returned");
74 log("Could not get SMS (id: " + incomingSms.id + ") but should have.");
75 ok(false,"SMS was not found");
76 cleanUp();
77 };
78 }
80 function deleteSms(smsMsgObj){
81 log("Deleting SMS (id: " + smsMsgObj.id + ") using smsmsg obj parameter.");
82 let requestRet = manager.delete(smsMsgObj);
83 ok(requestRet,"smsrequest obj returned");
85 requestRet.onsuccess = function(event) {
86 log("Received 'onsuccess' smsrequest event.");
87 if(event.target.result){
88 verifySmsDeleted(smsMsgObj.id);
89 } else {
90 log("smsrequest returned false for manager.delete");
91 ok(false,"SMS delete failed");
92 cleanUp();
93 }
94 };
96 requestRet.onerror = function(event) {
97 log("Received 'onerror' smsrequest event.");
98 ok(event.target.error, "domerror obj");
99 ok(false, "manager.delete request returned unexpected error: "
100 + event.target.error.name );
101 cleanUp();
102 };
103 }
105 function verifySmsDeleted(smsId) {
106 log("Getting SMS (id: " + smsId + ").");
107 let requestRet = manager.getMessage(smsId);
108 ok(requestRet, "smsrequest obj returned");
110 requestRet.onsuccess = function(event) {
111 log("Received 'onsuccess' smsrequest event.");
112 ok(event.target.result, "smsrequest event.target.result");
113 let foundSms = event.target.result;
114 is(foundSms.id, smsId, "found SMS id matches");
115 is(foundSms.body, msgText, "found SMS msg text matches");
116 log("Got SMS (id: " + foundSms.id + ") but should not have.");
117 ok(false, "SMS was not deleted");
118 cleanUp();
119 };
121 requestRet.onerror = function(event) {
122 log("Received 'onerror' smsrequest event.");
123 ok(event.target.error, "domerror obj");
124 is(event.target.error.name, "NotFoundError", "error returned");
125 log("Could not get SMS (id: " + smsId + ") as expected.");
126 cleanUp();
127 };
128 }
130 function cleanUp() {
131 manager.onreceived = null;
132 SpecialPowers.removePermission("sms", document);
133 SpecialPowers.setBoolPref("dom.sms.enabled", false);
134 finish();
135 }
137 // Start the test
138 verifyInitialState();