|
1 /* Any copyright is dedicated to the Public Domain. |
|
2 http://creativecommons.org/publicdomain/zero/1.0/ */ |
|
3 |
|
4 subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this); |
|
5 |
|
6 function run_test() { |
|
7 run_next_test(); |
|
8 } |
|
9 |
|
10 function _getWorker() { |
|
11 let _postedMessage; |
|
12 let _worker = newWorker({ |
|
13 postRILMessage: function(data) { |
|
14 }, |
|
15 postMessage: function(message) { |
|
16 _postedMessage = message; |
|
17 } |
|
18 }); |
|
19 return { |
|
20 get postedMessage() { |
|
21 return _postedMessage; |
|
22 }, |
|
23 get worker() { |
|
24 return _worker; |
|
25 } |
|
26 }; |
|
27 } |
|
28 |
|
29 add_test(function test_notification() { |
|
30 let workerHelper = _getWorker(); |
|
31 let worker = workerHelper.worker; |
|
32 let context = worker.ContextPool._contexts[0]; |
|
33 |
|
34 function Call(callIndex, number) { |
|
35 this.callIndex = callIndex; |
|
36 this.number = number; |
|
37 } |
|
38 |
|
39 Call.prototype = { |
|
40 // Should use CALL_STATE_ACTIVE. |
|
41 // Any new outgoing call (state = dialing or alerting) will be drop if there |
|
42 // is no pending outgoing call created before. |
|
43 state: CALL_STATE_ACTIVE, |
|
44 //callIndex: 0, |
|
45 toa: 0, |
|
46 isMpty: false, |
|
47 isMT: false, |
|
48 als: 0, |
|
49 isVoice: true, |
|
50 isVoicePrivacy: false, |
|
51 //number: null, |
|
52 numberPresentation: 0, |
|
53 name: null, |
|
54 namePresentation: 0, |
|
55 uusInfo: null |
|
56 }; |
|
57 |
|
58 let oneCall = { |
|
59 0: new Call(0, '00000') |
|
60 }; |
|
61 |
|
62 let twoCalls = { |
|
63 0: new Call(0, '00000'), |
|
64 1: new Call(1, '11111') |
|
65 }; |
|
66 |
|
67 function testNotification(calls, code, number, resultNotification, |
|
68 resultCallIndex) { |
|
69 |
|
70 let testInfo = {calls: calls, code: code, number: number, |
|
71 resultNotification: resultNotification, |
|
72 resultCallIndex: resultCallIndex}; |
|
73 do_print('Test case info: ' + JSON.stringify(testInfo)); |
|
74 |
|
75 // Set current calls. |
|
76 context.RIL._processCalls(calls); |
|
77 |
|
78 let notificationInfo = { |
|
79 notificationType: 1, // MT |
|
80 code: code, |
|
81 index: 0, |
|
82 type: 0, |
|
83 number: number |
|
84 }; |
|
85 |
|
86 context.RIL._processSuppSvcNotification(notificationInfo); |
|
87 |
|
88 let postedMessage = workerHelper.postedMessage; |
|
89 do_check_eq(postedMessage.rilMessageType, 'suppSvcNotification'); |
|
90 do_check_eq(postedMessage.notification, resultNotification); |
|
91 do_check_eq(postedMessage.callIndex, resultCallIndex); |
|
92 |
|
93 // Clear all existed calls. |
|
94 context.RIL._processCalls(null); |
|
95 } |
|
96 |
|
97 testNotification(oneCall, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, null, |
|
98 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD, 0); |
|
99 |
|
100 testNotification(oneCall, SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED, null, |
|
101 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED, 0); |
|
102 |
|
103 testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, null, |
|
104 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD, -1); |
|
105 |
|
106 testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED, null, |
|
107 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED, -1); |
|
108 |
|
109 testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '00000', |
|
110 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD, 0); |
|
111 |
|
112 testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '11111', |
|
113 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD, 1); |
|
114 |
|
115 testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '22222', |
|
116 GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD, -1); |
|
117 |
|
118 run_next_test(); |
|
119 }); |