dom/mobilemessage/tests/marionette/test_dsds_default_service_id.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_CONTEXT = "chrome";
     7 Cu.import("resource://gre/modules/Promise.jsm");
     9 const MMS_SERVICE_CONTRACTID = "@mozilla.org/mms/mmsservice;1";
    10 const SMS_SERVICE_CONTRACTID = "@mozilla.org/sms/smsservice;1";
    12 const PREF_RIL_NUM_RADIO_INTERFACES = "ril.numRadioInterfaces";
    13 const PREF_MMS_DEFAULT_SERVICE_ID = "dom.mms.defaultServiceId";
    14 const PREF_SMS_DEFAULT_SERVICE_ID = "dom.sms.defaultServiceId";
    16 function setPrefAndVerify(prefKey, setVal, service, attrName, expectedVal, deferred) {
    17   log("  Set '" + prefKey + "' to " + setVal);
    18   Services.prefs.setIntPref(prefKey, setVal);
    19   let prefVal = Services.prefs.getIntPref(prefKey);
    20   is(prefVal, setVal, "'" + prefKey + "' set to " + setVal);
    22   window.setTimeout(function() {
    23     let defaultVal = service[attrName];
    24     is(defaultVal, expectedVal, attrName);
    26     deferred.resolve(service);
    27   }, 0);
    28 }
    30 function getNumRadioInterfaces() {
    31   let deferred = Promise.defer();
    33   window.setTimeout(function() {
    34     let numRil = Services.prefs.getIntPref(PREF_RIL_NUM_RADIO_INTERFACES);
    35     log("numRil = " + numRil);
    37     deferred.resolve(numRil);
    38   }, 0);
    40   return deferred.promise;
    41 }
    43 function getService(contractId, ifaceName) {
    44   let deferred = Promise.defer();
    46   window.setTimeout(function() {
    47     log("Getting service for " + ifaceName);
    48     let service = Cc[contractId].getService(Ci[ifaceName]);
    49     ok(service, "service.constructor is " + service.constructor);
    51     deferred.resolve(service);
    52   }, 0);
    54   return deferred.promise;
    55 }
    57 function checkInitialEquality(attrName, prefKey, service) {
    58   let deferred = Promise.defer();
    60   log("  Checking initial value for '" + prefKey + "'");
    61   let origPrefVal = Services.prefs.getIntPref(prefKey);
    62   ok(isFinite(origPrefVal), "default '" + prefKey + "' value");
    64   window.setTimeout(function() {
    65     let defaultVal = service[attrName];
    66     is(defaultVal, origPrefVal, attrName);
    68     deferred.resolve(service);
    69   }, 0);
    71   return deferred.promise;
    72 }
    74 function checkSetToNegtiveValue(attrName, prefKey, service) {
    75   let deferred = Promise.defer();
    77   // Set to -1 and verify defaultVal == 0.
    78   setPrefAndVerify(prefKey, -1, service, attrName, 0, deferred);
    80   return deferred.promise;
    81 }
    83 function checkSetToOverflowedValue(attrName, prefKey, numRil, service) {
    84   let deferred = Promise.defer();
    86   // Set to larger-equal than numRil and verify defaultVal == 0.
    87   setPrefAndVerify(prefKey, numRil, service, attrName, 0, deferred);
    89   return deferred.promise;
    90 }
    92 function checkValueChange(attrName, prefKey, numRil, service) {
    93   let deferred = Promise.defer();
    95   if (numRil > 1) {
    96     // Set to (numRil - 1) and verify defaultVal equals.
    97     setPrefAndVerify(prefKey, numRil - 1, service, attrName, numRil - 1, deferred);
    98   } else {
    99     window.setTimeout(function() {
   100       deferred.resolve(service);
   101     }, 0);
   102   }
   104   return deferred.promise;
   105 }
   107 function verify(contractId, ifaceName, attrName, prefKey, numRil) {
   108   let deferred = Promise.defer();
   110   getService(contractId, ifaceName)
   111     .then(checkInitialEquality.bind(null, attrName, prefKey))
   112     .then(checkSetToNegtiveValue.bind(null, attrName, prefKey))
   113     .then(checkSetToOverflowedValue.bind(null, attrName, prefKey, numRil))
   114     .then(checkValueChange.bind(null, attrName, prefKey, numRil))
   115     .then(function() {
   116       // Reset.
   117       Services.prefs.clearUserPref(prefKey);
   119       deferred.resolve(numRil);
   120     });
   122   return deferred.promise;
   123 }
   125 getNumRadioInterfaces()
   126   .then(verify.bind(null, MMS_SERVICE_CONTRACTID, "nsIMmsService",
   127                     "mmsDefaultServiceId", PREF_MMS_DEFAULT_SERVICE_ID))
   128   .then(verify.bind(null, SMS_SERVICE_CONTRACTID, "nsISmsService",
   129                     "smsDefaultServiceId", PREF_SMS_DEFAULT_SERVICE_ID))
   130   .then(finish);

mercurial