dom/voicemail/test/marionette/test_dsds_default_service_id.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:9dd49ebc3a08
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 VOICEMAIL_PROVIDER_CONTRACTID = "@mozilla.org/ril/content-helper;1";
10
11 const PREF_RIL_NUM_RADIO_INTERFACES = "ril.numRadioInterfaces";
12 const PREF_DEFAULT_SERVICE_ID = "dom.voicemail.defaultServiceId";
13
14 function setPrefAndVerify(prefKey, setVal, service, attrName, expectedVal, deferred) {
15 log(" Set '" + prefKey + "' to " + setVal);
16 Services.prefs.setIntPref(prefKey, setVal);
17 let prefVal = Services.prefs.getIntPref(prefKey);
18 is(prefVal, setVal, "'" + prefKey + "' set to " + setVal);
19
20 window.setTimeout(function() {
21 let defaultVal = service[attrName];
22 is(defaultVal, expectedVal, attrName);
23
24 deferred.resolve(service);
25 }, 0);
26 }
27
28 function getNumRadioInterfaces() {
29 let deferred = Promise.defer();
30
31 window.setTimeout(function() {
32 let numRil = Services.prefs.getIntPref(PREF_RIL_NUM_RADIO_INTERFACES);
33 log("numRil = " + numRil);
34
35 deferred.resolve(numRil);
36 }, 0);
37
38 return deferred.promise;
39 }
40
41 function getService(contractId, ifaceName) {
42 let deferred = Promise.defer();
43
44 window.setTimeout(function() {
45 log("Getting service for " + ifaceName);
46 let service = Cc[contractId].getService(Ci[ifaceName]);
47 ok(service, "service.constructor is " + service.constructor);
48
49 deferred.resolve(service);
50 }, 0);
51
52 return deferred.promise;
53 }
54
55 function checkInitialEquality(attrName, prefKey, service) {
56 let deferred = Promise.defer();
57
58 log(" Checking initial value for '" + prefKey + "'");
59 let origPrefVal = Services.prefs.getIntPref(prefKey);
60 ok(isFinite(origPrefVal), "default '" + prefKey + "' value");
61
62 window.setTimeout(function() {
63 let defaultVal = service[attrName];
64 is(defaultVal, origPrefVal, attrName);
65
66 deferred.resolve(service);
67 }, 0);
68
69 return deferred.promise;
70 }
71
72 function checkSetToNegtiveValue(attrName, prefKey, service) {
73 let deferred = Promise.defer();
74
75 // Set to -1 and verify defaultVal == 0.
76 setPrefAndVerify(prefKey, -1, service, attrName, 0, deferred);
77
78 return deferred.promise;
79 }
80
81 function checkSetToOverflowedValue(attrName, prefKey, numRil, service) {
82 let deferred = Promise.defer();
83
84 // Set to larger-equal than numRil and verify defaultVal == 0.
85 setPrefAndVerify(prefKey, numRil, service, attrName, 0, deferred);
86
87 return deferred.promise;
88 }
89
90 function checkValueChange(attrName, prefKey, numRil, service) {
91 let deferred = Promise.defer();
92
93 if (numRil > 1) {
94 // Set to (numRil - 1) and verify defaultVal equals.
95 setPrefAndVerify(prefKey, numRil - 1, service, attrName, numRil - 1, deferred);
96 } else {
97 window.setTimeout(function() {
98 deferred.resolve(service);
99 }, 0);
100 }
101
102 return deferred.promise;
103 }
104
105 function verify(contractId, ifaceName, attrName, prefKey, numRil) {
106 let deferred = Promise.defer();
107
108 getService(contractId, ifaceName)
109 .then(checkInitialEquality.bind(null, attrName, prefKey))
110 .then(checkSetToNegtiveValue.bind(null, attrName, prefKey))
111 .then(checkSetToOverflowedValue.bind(null, attrName, prefKey, numRil))
112 .then(checkValueChange.bind(null, attrName, prefKey, numRil))
113 .then(function() {
114 // Reset.
115 Services.prefs.clearUserPref(prefKey);
116
117 deferred.resolve(numRil);
118 });
119
120 return deferred.promise;
121 }
122
123 getNumRadioInterfaces()
124 .then(verify.bind(null, VOICEMAIL_PROVIDER_CONTRACTID, "nsIVoicemailProvider",
125 "voicemailDefaultServiceId", PREF_DEFAULT_SERVICE_ID))
126 .then(finish);

mercurial