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.addPermission("sms", true, document);
7 SpecialPowers.setBoolPref("dom.sms.enabled", true);
9 let manager = window.navigator.mozMobileMessage;
10 let smsId;
12 function verifyInitialState() {
13 log("Verifying initial state.");
14 ok(manager instanceof MozMobileMessageManager,
15 "manager is instance of " + manager.constructor);
16 simulateIncomingSms();
17 }
19 function simulateIncomingSms() {
20 let text = "Incoming SMS courtesy of Firefox OS";
21 let remoteNumber = "5557779999";
23 log("Simulating incoming SMS.");
25 // Simulate incoming SMS sent from remoteNumber to our emulator
26 rcvdEmulatorCallback = false;
27 runEmulatorCmd("sms send " + remoteNumber + " " + text, function(result) {
28 is(result[0], "OK", "emulator callback");
29 rcvdEmulatorCallback = true;
30 });
31 }
33 // Callback for incoming SMS
34 manager.onreceived = function onreceived(event) {
35 log("Received 'onreceived' sms event.");
36 let incomingSms = event.message;
37 log("Received SMS (id: " + incomingSms.id + ").");
38 is(incomingSms.read, false, "incoming message read");
39 smsId = incomingSms.id;
41 // Wait for emulator to catch up before continuing
42 waitFor(test1, function() {
43 return(rcvdEmulatorCallback);
44 });
45 };
47 function markMsgError(invalidId, readBool, nextFunction) {
48 let requestRet = manager.markMessageRead(invalidId, readBool);
49 ok(requestRet, "smsrequest obj returned");
51 requestRet.onsuccess = function(event) {
52 log("Received 'onsuccess' smsrequest event, but expected error.");
53 ok(false, "Smsrequest should have returned error but did not");
54 nextFunction();
55 };
57 requestRet.onerror = function(event) {
58 log("Received 'onerror' smsrequest event.");
59 ok(event.target.error, "domerror obj");
60 is(event.target.error.name, "NotFoundError", "error returned");
61 nextFunction();
62 };
63 }
65 function test1() {
66 // Mark message read for a message that doesn't exist, expect error
67 let msgIdNoExist = smsId + 1;
68 log("Attempting to mark non-existent sms (id: " + msgIdNoExist
69 + ") read, expect error.");
70 markMsgError(msgIdNoExist, true, test2);
71 }
73 function test2() {
74 // Mark message read using invalid SMS id, expect error
75 invalidId = -1;
76 log("Attempting to mark sms unread using an invalid id (id: " + invalidId
77 + "), expect error.");
78 markMsgError(invalidId, false, deleteMsg);
79 }
81 function deleteMsg() {
82 log("Deleting SMS (id: " + smsId + ").");
83 let request = manager.delete(smsId);
84 ok(request instanceof DOMRequest,
85 "request is instanceof " + request.constructor);
87 request.onsuccess = function(event) {
88 log("Received 'onsuccess' smsrequest event.");
89 if (event.target.result) {
90 // Message deleted
91 cleanUp();
92 } else {
93 log("SMS delete failed.");
94 ok(false,"manager.delete request returned false");
95 cleanUp();
96 }
97 };
99 request.onerror = function(event) {
100 log("Received 'onerror' smsrequest event.");
101 ok(event.target.error, "domerror obj");
102 ok(false, "manager.delete request returned unexpected error: "
103 + event.target.error.name );
104 cleanUp();
105 };
106 }
108 function cleanUp() {
109 manager.onreceived = null;
110 SpecialPowers.removePermission("sms", document);
111 SpecialPowers.clearUserPref("dom.sms.enabled");
112 finish();
113 }
115 // Start the test
116 verifyInitialState();