summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/test_ril_worker_ssn.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_ssn.js')
-rw-r--r--dom/system/gonk/tests/test_ril_worker_ssn.js104
1 files changed, 104 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_ssn.js b/dom/system/gonk/tests/test_ril_worker_ssn.js
new file mode 100644
index 000000000..ea0a2a599
--- /dev/null
+++ b/dom/system/gonk/tests/test_ril_worker_ssn.js
@@ -0,0 +1,104 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
+
+function run_test() {
+ run_next_test();
+}
+
+add_test(function test_notification() {
+ let workerHelper = newInterceptWorker();
+ let worker = workerHelper.worker;
+ let context = worker.ContextPool._contexts[0];
+
+ function Call(callIndex, number) {
+ this.callIndex = callIndex;
+ this.number = number;
+ }
+
+ Call.prototype = {
+ // Should use CALL_STATE_ACTIVE.
+ // Any new outgoing call (state = dialing or alerting) will be drop if there
+ // is no pending outgoing call created before.
+ state: CALL_STATE_ACTIVE,
+ //callIndex: 0,
+ toa: 0,
+ isMpty: false,
+ isMT: false,
+ als: 0,
+ isVoice: true,
+ isVoicePrivacy: false,
+ //number: null,
+ numberPresentation: 0,
+ name: null,
+ namePresentation: 0,
+ uusInfo: null
+ };
+
+ let oneCall = {
+ 0: new Call(0, '00000')
+ };
+
+ let twoCalls = {
+ 0: new Call(0, '00000'),
+ 1: new Call(1, '11111')
+ };
+
+ function testNotification(calls, code, number, resultNotification) {
+
+ let testInfo = {calls: calls, code: code, number: number,
+ resultNotification: resultNotification};
+ do_print('Test case info: ' + JSON.stringify(testInfo));
+
+ // Set current calls.
+ context.RIL.sendChromeMessage({
+ rilMessageType: "currentCalls",
+ calls: calls
+ });
+
+ let notificationInfo = {
+ notificationType: 1, // MT
+ code: code,
+ index: 0,
+ type: 0,
+ number: number
+ };
+
+ context.RIL._processSuppSvcNotification(notificationInfo);
+
+ let postedMessage = workerHelper.postedMessage;
+ equal(postedMessage.rilMessageType, 'suppSvcNotification');
+ equal(postedMessage.number, number);
+ equal(postedMessage.notification, resultNotification);
+
+ // Clear all existed calls.
+ context.RIL.sendChromeMessage({
+ rilMessageType: "currentCalls",
+ calls: {}
+ });
+ }
+
+ testNotification(oneCall, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, null,
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD);
+
+ testNotification(oneCall, SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED, null,
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED);
+
+ testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, null,
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD);
+
+ testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_RETRIEVED, null,
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_RESUMED);
+
+ testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '00000',
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD);
+
+ testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '11111',
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD);
+
+ testNotification(twoCalls, SUPP_SVC_NOTIFICATION_CODE2_PUT_ON_HOLD, '22222',
+ GECKO_SUPP_SVC_NOTIFICATION_REMOTE_HELD);
+
+ run_next_test();
+});