dom/mobileconnection/tests/marionette/test_dsds_mobile_data_connection.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

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"]);

mercurial