1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobilemessage/tests/marionette/test_dsds_default_service_id.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,130 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +MARIONETTE_TIMEOUT = 60000; 1.8 +MARIONETTE_CONTEXT = "chrome"; 1.9 + 1.10 +Cu.import("resource://gre/modules/Promise.jsm"); 1.11 + 1.12 +const MMS_SERVICE_CONTRACTID = "@mozilla.org/mms/mmsservice;1"; 1.13 +const SMS_SERVICE_CONTRACTID = "@mozilla.org/sms/smsservice;1"; 1.14 + 1.15 +const PREF_RIL_NUM_RADIO_INTERFACES = "ril.numRadioInterfaces"; 1.16 +const PREF_MMS_DEFAULT_SERVICE_ID = "dom.mms.defaultServiceId"; 1.17 +const PREF_SMS_DEFAULT_SERVICE_ID = "dom.sms.defaultServiceId"; 1.18 + 1.19 +function setPrefAndVerify(prefKey, setVal, service, attrName, expectedVal, deferred) { 1.20 + log(" Set '" + prefKey + "' to " + setVal); 1.21 + Services.prefs.setIntPref(prefKey, setVal); 1.22 + let prefVal = Services.prefs.getIntPref(prefKey); 1.23 + is(prefVal, setVal, "'" + prefKey + "' set to " + setVal); 1.24 + 1.25 + window.setTimeout(function() { 1.26 + let defaultVal = service[attrName]; 1.27 + is(defaultVal, expectedVal, attrName); 1.28 + 1.29 + deferred.resolve(service); 1.30 + }, 0); 1.31 +} 1.32 + 1.33 +function getNumRadioInterfaces() { 1.34 + let deferred = Promise.defer(); 1.35 + 1.36 + window.setTimeout(function() { 1.37 + let numRil = Services.prefs.getIntPref(PREF_RIL_NUM_RADIO_INTERFACES); 1.38 + log("numRil = " + numRil); 1.39 + 1.40 + deferred.resolve(numRil); 1.41 + }, 0); 1.42 + 1.43 + return deferred.promise; 1.44 +} 1.45 + 1.46 +function getService(contractId, ifaceName) { 1.47 + let deferred = Promise.defer(); 1.48 + 1.49 + window.setTimeout(function() { 1.50 + log("Getting service for " + ifaceName); 1.51 + let service = Cc[contractId].getService(Ci[ifaceName]); 1.52 + ok(service, "service.constructor is " + service.constructor); 1.53 + 1.54 + deferred.resolve(service); 1.55 + }, 0); 1.56 + 1.57 + return deferred.promise; 1.58 +} 1.59 + 1.60 +function checkInitialEquality(attrName, prefKey, service) { 1.61 + let deferred = Promise.defer(); 1.62 + 1.63 + log(" Checking initial value for '" + prefKey + "'"); 1.64 + let origPrefVal = Services.prefs.getIntPref(prefKey); 1.65 + ok(isFinite(origPrefVal), "default '" + prefKey + "' value"); 1.66 + 1.67 + window.setTimeout(function() { 1.68 + let defaultVal = service[attrName]; 1.69 + is(defaultVal, origPrefVal, attrName); 1.70 + 1.71 + deferred.resolve(service); 1.72 + }, 0); 1.73 + 1.74 + return deferred.promise; 1.75 +} 1.76 + 1.77 +function checkSetToNegtiveValue(attrName, prefKey, service) { 1.78 + let deferred = Promise.defer(); 1.79 + 1.80 + // Set to -1 and verify defaultVal == 0. 1.81 + setPrefAndVerify(prefKey, -1, service, attrName, 0, deferred); 1.82 + 1.83 + return deferred.promise; 1.84 +} 1.85 + 1.86 +function checkSetToOverflowedValue(attrName, prefKey, numRil, service) { 1.87 + let deferred = Promise.defer(); 1.88 + 1.89 + // Set to larger-equal than numRil and verify defaultVal == 0. 1.90 + setPrefAndVerify(prefKey, numRil, service, attrName, 0, deferred); 1.91 + 1.92 + return deferred.promise; 1.93 +} 1.94 + 1.95 +function checkValueChange(attrName, prefKey, numRil, service) { 1.96 + let deferred = Promise.defer(); 1.97 + 1.98 + if (numRil > 1) { 1.99 + // Set to (numRil - 1) and verify defaultVal equals. 1.100 + setPrefAndVerify(prefKey, numRil - 1, service, attrName, numRil - 1, deferred); 1.101 + } else { 1.102 + window.setTimeout(function() { 1.103 + deferred.resolve(service); 1.104 + }, 0); 1.105 + } 1.106 + 1.107 + return deferred.promise; 1.108 +} 1.109 + 1.110 +function verify(contractId, ifaceName, attrName, prefKey, numRil) { 1.111 + let deferred = Promise.defer(); 1.112 + 1.113 + getService(contractId, ifaceName) 1.114 + .then(checkInitialEquality.bind(null, attrName, prefKey)) 1.115 + .then(checkSetToNegtiveValue.bind(null, attrName, prefKey)) 1.116 + .then(checkSetToOverflowedValue.bind(null, attrName, prefKey, numRil)) 1.117 + .then(checkValueChange.bind(null, attrName, prefKey, numRil)) 1.118 + .then(function() { 1.119 + // Reset. 1.120 + Services.prefs.clearUserPref(prefKey); 1.121 + 1.122 + deferred.resolve(numRil); 1.123 + }); 1.124 + 1.125 + return deferred.promise; 1.126 +} 1.127 + 1.128 +getNumRadioInterfaces() 1.129 + .then(verify.bind(null, MMS_SERVICE_CONTRACTID, "nsIMmsService", 1.130 + "mmsDefaultServiceId", PREF_MMS_DEFAULT_SERVICE_ID)) 1.131 + .then(verify.bind(null, SMS_SERVICE_CONTRACTID, "nsISmsService", 1.132 + "smsDefaultServiceId", PREF_SMS_DEFAULT_SERVICE_ID)) 1.133 + .then(finish);