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;
5 MARIONETTE_HEAD_JS = "head.js";
7 const SETTINGS_KEY_DATA_DEFAULT_ID = "ril.data.defaultServiceId";
9 let connections;
10 let numOfRadioInterfaces;
11 let currentDataDefaultId = 0;
13 function muxModem(id) {
14 return runEmulatorCmdSafe("mux modem " + id);
15 }
17 function switchDataDefaultId(defaultId) {
18 return Promise.resolve()
19 .then(() => setSettings1(SETTINGS_KEY_DATA_DEFAULT_ID, defaultId))
20 .then(() => {
21 log("Data default id switched to: " + defaultId);
22 currentDataDefaultId = defaultId;
23 });
24 }
26 function setDataRoamingSettings(enableDataRoammingIds) {
27 let dataRoamingSettings = [];
28 for (let i = 0; i < numOfRadioInterfaces; i++) {
29 dataRoamingSettings.push(false);
30 }
32 for (let i = 0; i < enableDataRoammingIds.length; i++) {
33 log("Enable data roaming for id: " + enableDataRoammingIds[i]);
34 dataRoamingSettings[enableDataRoammingIds[i]] = true;
35 }
37 return setDataRoamingEnabled(dataRoamingSettings);
38 }
40 function setApnSettings() {
41 let apn = [{
42 "carrier":"T-Mobile US",
43 "apn":"epc.tmobile.com",
44 "mmsc":"http://mms.msg.eng.t-mobile.com/mms/wapenc",
45 "types":["default","supl","mms"]
46 }];
48 // Use the same APN for all sims for now.
49 let apns = [];
50 for (let i = 0; i < numOfRadioInterfaces; i++) {
51 apns.push(apn);
52 }
54 return setDataApnSettings(apns);
56 }
58 function waitForDataState(clientId, connected) {
59 let deferred = Promise.defer();
61 let connection = connections[clientId];
62 if (connection.data.connected === connected) {
63 log("data connection for client " + clientId + " is now " +
64 connection.data.connected);
65 deferred.resolve();
66 return;
67 }
69 return Promise.resolve()
70 .then(() => waitForManagerEvent("datachange", clientId))
71 .then(() => waitForDataState(clientId, connected));
72 }
74 function restoreTestEnvironment() {
75 return Promise.resolve()
76 .then(() => setEmulatorRoamingAndWait(false, currentDataDefaultId))
77 .then(() => setDataRoamingSettings([]))
78 .then(() => switchDataDefaultId(0))
79 .then(() => muxModem(0));
80 }
82 function testEnableData() {
83 log("Turn data on.");
85 let connection = connections[currentDataDefaultId];
86 is(connection.data.connected, false);
88 return Promise.resolve()
89 .then(() => setApnSettings())
90 .then(() => setDataEnabledAndWait(true, currentDataDefaultId));
91 }
93 function testSwitchDefaultDataToSimTwo() {
94 log("Switch data connection to sim 2.");
96 is(currentDataDefaultId, 0);
97 let connection = connections[currentDataDefaultId];
98 is(connection.data.connected, true);
100 return Promise.resolve()
101 .then(() => switchDataDefaultId(1))
102 .then(() => {
103 is(currentDataDefaultId, 1);
104 })
105 .then(() => waitForDataState(currentDataDefaultId, true));
106 }
108 function testDisableDataRoamingWhileRoaming() {
109 log("Disable data roaming setting while roaming.");
111 let connection = connections[currentDataDefaultId];
112 is(connection.data.connected, true);
113 is(connection.data.roaming, false);
115 return Promise.resolve()
116 .then(() => setDataRoamingSettings([]))
117 .then(() => muxModem(currentDataDefaultId))
118 .then(() => setEmulatorRoamingAndWait(true, currentDataDefaultId))
119 .then(() => waitForDataState(currentDataDefaultId, false));
120 }
122 function testEnableDataRoamingWhileRoaming() {
123 log("Enable data roaming setting while roaming.");
125 let connection = connections[currentDataDefaultId];
126 is(connection.data.connected, false);
127 is(connection.data.roaming, true);
129 return Promise.resolve()
130 .then(() => setDataRoamingSettings([currentDataDefaultId]))
131 .then(() => waitForDataState(currentDataDefaultId, true));
132 }
134 function testDisableData() {
135 log("Turn data off.");
137 let connection = connections[currentDataDefaultId];
138 is(connection.data.connected, true);
140 return Promise.resolve()
141 .then(() => setDataEnabledAndWait(false, currentDataDefaultId));
142 }
144 startDSDSTestCommon(function() {
145 connections = workingFrame.contentWindow.navigator.mozMobileConnections;
146 numOfRadioInterfaces = getNumOfRadioInterfaces();
148 return testEnableData()
149 .then(testSwitchDefaultDataToSimTwo)
150 .then(testDisableDataRoamingWhileRoaming)
151 .then(testEnableDataRoamingWhileRoaming)
152 .then(testDisableData)
153 .then(restoreTestEnvironment);
154 }, ["settings-read", "settings-write"]);