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 MARIONETTE_TIMEOUT = 60000;
6 SpecialPowers.setBoolPref("dom.sms.enabled", true);
7 SpecialPowers.setBoolPref("dom.sms.requestStatusReport", true);
8 SpecialPowers.addPermission("sms", true, document);
10 const SENDER = "15555215554"; // the emulator's number
11 const RECEIVER = "5551117777"; // the destination number
13 let manager = window.navigator.mozMobileMessage;
14 let msgText = "Mozilla Firefox OS!";
15 let gotSmsOnsent = false;
16 let gotReqOnsuccess = false;
18 function verifyInitialState() {
19 log("Verifying initial state.");
20 ok(manager instanceof MozMobileMessageManager,
21 "manager is instance of " + manager.constructor);
22 sendSms();
23 }
25 function sendSms() {
26 let smsId = 0;
28 log("Sending an SMS.");
29 manager.onsent = function(event) {
30 log("Received 'onsent' event.");
31 gotSmsOnsent = true;
32 let sentSms = event.message;
33 ok(sentSms, "outgoing sms");
34 ok(sentSms.id, "sms id");
35 smsId = sentSms.id;
36 log("Sent SMS (id: " + smsId + ").");
37 ok(sentSms.threadId, "thread id");
38 is(sentSms.body, msgText, "msg body");
39 is(sentSms.delivery, "sent", "delivery");
40 is(sentSms.deliveryStatus, "pending", "deliveryStatus");
41 is(sentSms.read, true, "read");
42 is(sentSms.receiver, RECEIVER, "receiver");
43 is(sentSms.sender, SENDER, "sender");
44 is(sentSms.messageClass, "normal", "messageClass");
45 is(sentSms.deliveryTimestamp, 0, "deliveryTimestamp is 0");
47 if (gotSmsOnsent && gotReqOnsuccess) { verifySmsExists(smsId); }
48 };
50 let requestRet = manager.send(RECEIVER, msgText);
51 ok(requestRet, "smsrequest obj returned");
53 requestRet.onsuccess = function(event) {
54 log("Received 'onsuccess' smsrequest event.");
55 gotReqOnsuccess = true;
56 if(event.target.result){
57 if (gotSmsOnsent && gotReqOnsuccess) { verifySmsExists(smsId); }
58 } else {
59 log("smsrequest returned false for manager.send");
60 ok(false,"SMS send failed");
61 cleanUp();
62 }
63 };
65 requestRet.onerror = function(event) {
66 log("Received 'onerror' smsrequest event.");
67 ok(event.target.error, "domerror obj");
68 ok(false, "manager.send request returned unexpected error: "
69 + event.target.error.name );
70 cleanUp();
71 };
72 }
74 function verifySmsExists(smsId) {
75 log("Getting SMS (id: " + smsId + ").");
76 let requestRet = manager.getMessage(smsId);
77 ok(requestRet, "smsrequest obj returned");
79 requestRet.onsuccess = function(event) {
80 log("Received 'onsuccess' smsrequest event.");
81 ok(event.target.result, "smsrequest event.target.result");
82 let foundSms = event.target.result;
83 is(foundSms.id, smsId, "found SMS id matches");
84 is(foundSms.body, msgText, "found SMS msg text matches");
85 is(foundSms.delivery, "sent", "delivery");
86 is(foundSms.read, true, "read");
87 is(foundSms.receiver, RECEIVER, "receiver");
88 is(foundSms.sender, SENDER, "sender");
89 is(foundSms.messageClass, "normal", "messageClass");
90 log("Got SMS (id: " + foundSms.id + ") as expected.");
91 deleteSms(smsId);
92 };
94 requestRet.onerror = function(event) {
95 log("Received 'onerror' smsrequest event.");
96 ok(event.target.error, "domerror obj");
97 is(event.target.error.name, "NotFoundError", "error returned");
98 log("Could not get SMS (id: " + smsId + ") but should have.");
99 ok(false,"SMS was not found");
100 cleanUp();
101 };
102 }
104 function deleteSms(smsId){
105 log("Deleting SMS (id: " + smsId + ") using sms id parameter.");
106 let requestRet = manager.delete(smsId);
107 ok(requestRet,"smsrequest obj returned");
109 requestRet.onsuccess = function(event) {
110 log("Received 'onsuccess' smsrequest event.");
111 if(event.target.result){
112 verifySmsDeleted(smsId);
113 } else {
114 log("smsrequest returned false for manager.delete");
115 ok(false,"SMS delete failed");
116 cleanUp();
117 }
118 };
120 requestRet.onerror = function(event) {
121 log("Received 'onerror' smsrequest event.");
122 ok(event.target.error, "domerror obj");
123 ok(false, "manager.delete request returned unexpected error: "
124 + event.target.error.name );
125 cleanUp();
126 };
127 }
129 function verifySmsDeleted(smsId) {
130 log("Getting SMS (id: " + smsId + ").");
131 let requestRet = manager.getMessage(smsId);
132 ok(requestRet, "smsrequest obj returned");
134 requestRet.onsuccess = function(event) {
135 log("Received 'onsuccess' smsrequest event.");
136 ok(event.target.result, "smsrequest event.target.result");
137 let foundSms = event.target.result;
138 is(foundSms.id, smsId, "found SMS id matches");
139 is(foundSms.body, msgText, "found SMS msg text matches");
140 log("Got SMS (id: " + foundSms.id + ") but should not have.");
141 ok(false, "SMS was not deleted");
142 cleanUp();
143 };
145 requestRet.onerror = function(event) {
146 log("Received 'onerror' smsrequest event.");
147 ok(event.target.error, "domerror obj");
148 is(event.target.error.name, "NotFoundError", "error returned");
149 log("Could not get SMS (id: " + smsId + ") as expected.");
150 cleanUp();
151 };
152 }
154 function cleanUp() {
155 manager.onsent = null;
156 SpecialPowers.removePermission("sms", document);
157 SpecialPowers.clearUserPref("dom.sms.enabled");
158 SpecialPowers.clearUserPref("dom.sms.requestStatusReport");
159 finish();
160 }
162 // Start the test
163 verifyInitialState();