dom/mobilemessage/tests/marionette/test_dsds_default_service_id.js

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:acb15b7e7116
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 MARIONETTE_TIMEOUT = 60000;
5 MARIONETTE_CONTEXT = "chrome";
6
7 Cu.import("resource://gre/modules/Promise.jsm");
8
9 const MMS_SERVICE_CONTRACTID = "@mozilla.org/mms/mmsservice;1";
10 const SMS_SERVICE_CONTRACTID = "@mozilla.org/sms/smsservice;1";
11
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";
15
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);
21
22 window.setTimeout(function() {
23 let defaultVal = service[attrName];
24 is(defaultVal, expectedVal, attrName);
25
26 deferred.resolve(service);
27 }, 0);
28 }
29
30 function getNumRadioInterfaces() {
31 let deferred = Promise.defer();
32
33 window.setTimeout(function() {
34 let numRil = Services.prefs.getIntPref(PREF_RIL_NUM_RADIO_INTERFACES);
35 log("numRil = " + numRil);
36
37 deferred.resolve(numRil);
38 }, 0);
39
40 return deferred.promise;
41 }
42
43 function getService(contractId, ifaceName) {
44 let deferred = Promise.defer();
45
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);
50
51 deferred.resolve(service);
52 }, 0);
53
54 return deferred.promise;
55 }
56
57 function checkInitialEquality(attrName, prefKey, service) {
58 let deferred = Promise.defer();
59
60 log(" Checking initial value for '" + prefKey + "'");
61 let origPrefVal = Services.prefs.getIntPref(prefKey);
62 ok(isFinite(origPrefVal), "default '" + prefKey + "' value");
63
64 window.setTimeout(function() {
65 let defaultVal = service[attrName];
66 is(defaultVal, origPrefVal, attrName);
67
68 deferred.resolve(service);
69 }, 0);
70
71 return deferred.promise;
72 }
73
74 function checkSetToNegtiveValue(attrName, prefKey, service) {
75 let deferred = Promise.defer();
76
77 // Set to -1 and verify defaultVal == 0.
78 setPrefAndVerify(prefKey, -1, service, attrName, 0, deferred);
79
80 return deferred.promise;
81 }
82
83 function checkSetToOverflowedValue(attrName, prefKey, numRil, service) {
84 let deferred = Promise.defer();
85
86 // Set to larger-equal than numRil and verify defaultVal == 0.
87 setPrefAndVerify(prefKey, numRil, service, attrName, 0, deferred);
88
89 return deferred.promise;
90 }
91
92 function checkValueChange(attrName, prefKey, numRil, service) {
93 let deferred = Promise.defer();
94
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 }
103
104 return deferred.promise;
105 }
106
107 function verify(contractId, ifaceName, attrName, prefKey, numRil) {
108 let deferred = Promise.defer();
109
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);
118
119 deferred.resolve(numRil);
120 });
121
122 return deferred.promise;
123 }
124
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