summaryrefslogtreecommitdiffstats
path: root/dom/system/gonk/tests/test_ril_worker_icc_CardState.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_icc_CardState.js')
-rw-r--r--dom/system/gonk/tests/test_ril_worker_icc_CardState.js210
1 files changed, 210 insertions, 0 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_icc_CardState.js b/dom/system/gonk/tests/test_ril_worker_icc_CardState.js
new file mode 100644
index 000000000..788df5073
--- /dev/null
+++ b/dom/system/gonk/tests/test_ril_worker_icc_CardState.js
@@ -0,0 +1,210 @@
+/* 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_personalization_state() {
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+ let ril = context.RIL;
+
+ context.ICCRecordHelper.readICCID = function fakeReadICCID() {};
+
+ function testPersonalization(isCdma, cardPersoState, geckoCardState) {
+ let iccStatus = {
+ cardState: CARD_STATE_PRESENT,
+ gsmUmtsSubscriptionAppIndex: (!isCdma) ? 0 : -1,
+ cdmaSubscriptionAppIndex: (isCdma) ? 0 : -1,
+ apps: [
+ {
+ app_state: CARD_APPSTATE_SUBSCRIPTION_PERSO,
+ perso_substate: cardPersoState
+ }],
+ };
+
+ ril._isCdma = isCdma;
+ ril._processICCStatus(iccStatus);
+ equal(ril.cardState, geckoCardState);
+ }
+
+ // Test GSM personalization state.
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK,
+ Ci.nsIIcc.CARD_STATE_NETWORK_LOCKED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET,
+ Ci.nsIIcc.CARD_STATE_NETWORK_SUBSET_LOCKED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE,
+ Ci.nsIIcc.CARD_STATE_CORPORATE_LOCKED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER,
+ Ci.nsIIcc.CARD_STATE_SERVICE_PROVIDER_LOCKED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SIM,
+ Ci.nsIIcc.CARD_STATE_SIM_LOCKED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_PUK,
+ Ci.nsIIcc.CARD_STATE_NETWORK_PUK_REQUIRED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK,
+ Ci.nsIIcc.CARD_STATE_NETWORK_SUBSET_PUK_REQUIRED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK,
+ Ci.nsIIcc.CARD_STATE_CORPORATE_PUK_REQUIRED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK,
+ Ci.nsIIcc.CARD_STATE_SERVICE_PROVIDER_PUK_REQUIRED);
+ testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SIM_PUK,
+ Ci.nsIIcc.CARD_STATE_SIM_PUK_REQUIRED);
+
+ testPersonalization(false, CARD_PERSOSUBSTATE_UNKNOWN,
+ Ci.nsIIcc.CARD_STATE_UNKNOWN);
+ testPersonalization(false, CARD_PERSOSUBSTATE_IN_PROGRESS,
+ Ci.nsIIcc.CARD_STATE_PERSONALIZATION_IN_PROGRESS);
+ testPersonalization(false, CARD_PERSOSUBSTATE_READY,
+ Ci.nsIIcc.CARD_STATE_PERSONALIZATION_READY);
+
+ // Test CDMA personalization state.
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1,
+ Ci.nsIIcc.CARD_STATE_NETWORK1_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2,
+ Ci.nsIIcc.CARD_STATE_NETWORK2_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD,
+ Ci.nsIIcc.CARD_STATE_HRPD_NETWORK_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE,
+ Ci.nsIIcc.CARD_STATE_RUIM_CORPORATE_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER,
+ Ci.nsIIcc.CARD_STATE_RUIM_SERVICE_PROVIDER_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM,
+ Ci.nsIIcc.CARD_STATE_RUIM_LOCKED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK,
+ Ci.nsIIcc.CARD_STATE_NETWORK1_PUK_REQUIRED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK,
+ Ci.nsIIcc.CARD_STATE_NETWORK2_PUK_REQUIRED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD_PUK,
+ Ci.nsIIcc.CARD_STATE_HRPD_NETWORK_PUK_REQUIRED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK,
+ Ci.nsIIcc.CARD_STATE_RUIM_CORPORATE_PUK_REQUIRED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK,
+ Ci.nsIIcc.CARD_STATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED);
+ testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM_PUK,
+ Ci.nsIIcc.CARD_STATE_RUIM_PUK_REQUIRED);
+
+ testPersonalization(true, CARD_PERSOSUBSTATE_UNKNOWN,
+ Ci.nsIIcc.CARD_STATE_UNKNOWN);
+ testPersonalization(true, CARD_PERSOSUBSTATE_IN_PROGRESS,
+ Ci.nsIIcc.CARD_STATE_PERSONALIZATION_IN_PROGRESS);
+ testPersonalization(true, CARD_PERSOSUBSTATE_READY,
+ Ci.nsIIcc.CARD_STATE_PERSONALIZATION_READY);
+
+ run_next_test();
+});
+
+/**
+ * Verify SIM app_state in _processICCStatus
+ */
+add_test(function test_card_app_state() {
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+ let ril = context.RIL;
+
+ context.ICCRecordHelper.readICCID = function fakeReadICCID() {};
+
+ function testCardAppState(cardAppState, geckoCardState) {
+ let iccStatus = {
+ cardState: CARD_STATE_PRESENT,
+ gsmUmtsSubscriptionAppIndex: 0,
+ apps: [
+ {
+ app_state: cardAppState
+ }],
+ };
+
+ ril._processICCStatus(iccStatus);
+ equal(ril.cardState, geckoCardState);
+ }
+
+ testCardAppState(CARD_APPSTATE_ILLEGAL,
+ Ci.nsIIcc.CARD_STATE_ILLEGAL);
+ testCardAppState(CARD_APPSTATE_PIN,
+ Ci.nsIIcc.CARD_STATE_PIN_REQUIRED);
+ testCardAppState(CARD_APPSTATE_PUK,
+ Ci.nsIIcc.CARD_STATE_PUK_REQUIRED);
+ testCardAppState(CARD_APPSTATE_READY,
+ Ci.nsIIcc.CARD_STATE_READY);
+ testCardAppState(CARD_APPSTATE_UNKNOWN,
+ Ci.nsIIcc.CARD_STATE_UNKNOWN);
+ testCardAppState(CARD_APPSTATE_DETECTED,
+ Ci.nsIIcc.CARD_STATE_UNKNOWN);
+
+ run_next_test();
+});
+
+/**
+ * Verify permanent blocked for ICC.
+ */
+add_test(function test_icc_permanent_blocked() {
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+ let ril = context.RIL;
+
+ context.ICCRecordHelper.readICCID = function fakeReadICCID() {};
+
+ function testPermanentBlocked(pin1_replaced, universalPINState, pin1) {
+ let iccStatus = {
+ cardState: CARD_STATE_PRESENT,
+ gsmUmtsSubscriptionAppIndex: 0,
+ universalPINState: universalPINState,
+ apps: [
+ {
+ pin1_replaced: pin1_replaced,
+ pin1: pin1
+ }]
+ };
+
+ ril._processICCStatus(iccStatus);
+ equal(ril.cardState, Ci.nsIIcc.CARD_STATE_PERMANENT_BLOCKED);
+ }
+
+ testPermanentBlocked(1,
+ CARD_PINSTATE_ENABLED_PERM_BLOCKED,
+ CARD_PINSTATE_UNKNOWN);
+ testPermanentBlocked(1,
+ CARD_PINSTATE_ENABLED_PERM_BLOCKED,
+ CARD_PINSTATE_ENABLED_PERM_BLOCKED);
+ testPermanentBlocked(0,
+ CARD_PINSTATE_UNKNOWN,
+ CARD_PINSTATE_ENABLED_PERM_BLOCKED);
+
+ run_next_test();
+});
+
+/**
+ * Verify ICC without app index.
+ */
+add_test(function test_icc_without_app_index() {
+ const ICCID = "123456789";
+
+ let worker = newUint8Worker();
+ let context = worker.ContextPool._contexts[0];
+ let ril = context.RIL;
+
+ let iccStatus = {
+ cardState: CARD_STATE_PRESENT,
+ gsmUmtsSubscriptionAppIndex: -1,
+ universalPINState: CARD_PINSTATE_DISABLED,
+ apps: [
+ {
+ app_state: CARD_APPSTATE_READY
+ }]
+ };
+
+ context.ICCRecordHelper.readICCID = function fakeReadICCID() {
+ ril.iccInfo.iccid = ICCID;
+ };
+
+ ril._processICCStatus(iccStatus);
+
+ // Should read icc id event if the app index is -1.
+ equal(ril.iccInfo.iccid, ICCID);
+ // cardState is "unknown" if the app index is -1.
+ equal(ril.cardState, GECKO_CARDSTATE_UNKNOWN);
+
+ run_next_test();
+});