diff options
Diffstat (limited to 'dom/system/gonk/tests/test_ril_worker_stk.js')
-rw-r--r-- | dom/system/gonk/tests/test_ril_worker_stk.js | 1698 |
1 files changed, 0 insertions, 1698 deletions
diff --git a/dom/system/gonk/tests/test_ril_worker_stk.js b/dom/system/gonk/tests/test_ril_worker_stk.js deleted file mode 100644 index 49b914e89..000000000 --- a/dom/system/gonk/tests/test_ril_worker_stk.js +++ /dev/null @@ -1,1698 +0,0 @@ -/* 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(); -} - -/** - * Helper function. - */ -function newUint8SupportOutgoingIndexWorker() { - let worker = newWorker(); - let index = 4; // index for read - let buf = [0, 0, 0, 0]; // Preserved parcel size - let context = worker.ContextPool._contexts[0]; - - context.Buf.writeUint8 = function(value) { - if (context.Buf.outgoingIndex >= buf.length) { - buf.push(value); - } else { - buf[context.Buf.outgoingIndex] = value; - } - - context.Buf.outgoingIndex++; - }; - - context.Buf.readUint8 = function() { - return buf[index++]; - }; - - context.Buf.seekIncoming = function(offset) { - index += offset; - }; - - worker.debug = do_print; - - return worker; -} - -// Test RIL requests related to STK. -/** - * Verify if RIL.sendStkTerminalProfile be called. - */ -add_test(function test_if_send_stk_terminal_profile() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let profileSend = false; - context.RIL.sendStkTerminalProfile = function(data) { - profileSend = true; - }; - - let iccStatus = { - gsmUmtsSubscriptionAppIndex: 0, - apps: [{ - app_state: CARD_APPSTATE_READY, - app_type: CARD_APPTYPE_USIM - }], - }; - worker.RILQUIRKS_SEND_STK_PROFILE_DOWNLOAD = false; - - context.RIL._processICCStatus(iccStatus); - - equal(profileSend, false); - - run_next_test(); -}); - -/** - * Verify RIL.sendStkTerminalProfile - */ -add_test(function test_send_stk_terminal_profile() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let ril = context.RIL; - let buf = context.Buf; - - ril.sendStkTerminalProfile(STK_SUPPORTED_TERMINAL_PROFILE); - - buf.seekIncoming(8); - let profile = buf.readString(); - for (let i = 0; i < STK_SUPPORTED_TERMINAL_PROFILE.length; i++) { - equal(parseInt(profile.substring(2 * i, 2 * i + 2), 16), - STK_SUPPORTED_TERMINAL_PROFILE[i]); - } - - run_next_test(); -}); - -/** - * Verify STK terminal response - */ -add_test(function test_stk_terminal_response() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Size, 44 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(3) + - // TEXT LENGTH(10)) - equal(this.readInt32(), 44); - - // Command Details, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_PROVIDE_LOCAL_INFO); - equal(pduHelper.readHexOctet(), STK_LOCAL_INFO_NNA); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_RESULT_OK); - - // Text - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_TEXT_STRING | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 8); - equal(pduHelper.readHexOctet(), STK_TEXT_CODING_GSM_7BIT_PACKED); - equal(pduHelper.readSeptetsToString(7, 0, PDU_NL_IDENTIFIER_DEFAULT, - PDU_NL_IDENTIFIER_DEFAULT), "Mozilla"); - - run_next_test(); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_PROVIDE_LOCAL_INFO, - commandQualifier: STK_LOCAL_INFO_NNA, - options: { - isPacked: true - } - }, - input: "Mozilla", - resultCode: STK_RESULT_OK - }; - context.RIL.sendStkTerminalResponse(response); -}); - -/** - * Verify STK terminal response : GET INPUT with empty string. - * - * @See |TERMINAL RESPONSE: GET INPUT 1.9.1A| of 27.22.4.3.1 GET INPUT (normal) - * in TS 102 384. - */ -add_test(function test_stk_terminal_response_get_input_empty_string() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Size, 30 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(3) + - // TEXT LENGTH(3)) - equal(this.readInt32(), 30); - - // Command Details, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_GET_INPUT); - equal(pduHelper.readHexOctet(), 0x00); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_RESULT_OK); - - // Text - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_TEXT_STRING | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_TEXT_CODING_GSM_8BIT); - - run_next_test(); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_GET_INPUT, - commandQualifier: 0x00, - options: { - minLength: 0, - maxLength: 1, - defaultText: "<SEND>" - } - }, - input: "", - resultCode: STK_RESULT_OK - }; - context.RIL.sendStkTerminalResponse(response); -}); - -/** - * Verify STK terminal response : GET INPUT with 160 unpacked characters. - * - * @See |TERMINAL RESPONSE: GET INPUT 1.8.1| of 27.22.4.3.1 GET INPUT (normal) - * in TS 102 384. - */ -add_test(function test_stk_terminal_response_get_input_160_unpacked_characters() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - let iccPduHelper = context.ICCPDUHelper; - let TEST_TEXT_STRING = "***1111111111###" + - "***2222222222###" + - "***3333333333###" + - "***4444444444###" + - "***5555555555###" + - "***6666666666###" + - "***7777777777###" + - "***8888888888###" + - "***9999999999###" + - "***0000000000###"; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Size, 352 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(3) + - // TEXT LENGTH(164)) - equal(this.readInt32(), 352); - - // Command Details, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_GET_INPUT); - equal(pduHelper.readHexOctet(), 0x00); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_RESULT_OK); - - // Text - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_TEXT_STRING | - COMPREHENSIONTLV_FLAG_CR); - // C-TLV Length Encoding: 161 = 0x81 0xA1 - equal(pduHelper.readHexOctet(), 0x81); - equal(pduHelper.readHexOctet(), 0xA1); - equal(pduHelper.readHexOctet(), STK_TEXT_CODING_GSM_8BIT); - equal(iccPduHelper.read8BitUnpackedToString(160), TEST_TEXT_STRING); - - run_next_test(); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_GET_INPUT, - commandQualifier: 0x00, - options: { - minLength: 160, - maxLength: 160, - text: TEST_TEXT_STRING - } - }, - input: TEST_TEXT_STRING, - resultCode: STK_RESULT_OK - }; - context.RIL.sendStkTerminalResponse(response); -}); - -/** - * Verify STK terminal response : GET_INKEY - NO_RESPONSE_FROM_USER with - * duration provided. - * - * @See |27.22.4.2.8 GET INKEY (Variable Time out)| in TS 102 384. - */ -add_test(function test_stk_terminal_response_get_inkey_no_response_from_user() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Size, 32 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(3) + - // DURATION(4)) - equal(this.readInt32(), 32); - - // Command Details, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_GET_INKEY); - equal(pduHelper.readHexOctet(), 0x00); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_RESULT_NO_RESPONSE_FROM_USER); - - // Duration, Type-Length-Value(Time unit, Time interval) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DURATION); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_TIME_UNIT_SECOND); - equal(pduHelper.readHexOctet(), 10); - - run_next_test(); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_GET_INKEY, - commandQualifier: 0x00, - options: { - duration: { - timeUnit: STK_TIME_UNIT_SECOND, - timeInterval: 10 - }, - text: 'Enter "+"' - } - }, - resultCode: STK_RESULT_NO_RESPONSE_FROM_USER - }; - context.RIL.sendStkTerminalResponse(response); -}); - -/** - * Verify STK terminal response : GET_INKEY - YES/NO request - */ -add_test(function test_stk_terminal_response_get_inkey() { - function do_test(isYesNo) { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Size, 32 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(3) + - // TEXT LENGTH(4)) - equal(this.readInt32(), 32); - - // Command Details, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_GET_INKEY); - equal(pduHelper.readHexOctet(), 0x04); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_RESULT_OK); - - // Yes/No response - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_TEXT_STRING | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_TEXT_CODING_GSM_8BIT); - equal(pduHelper.readHexOctet(), isYesNo ? 0x01 : 0x00); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_GET_INKEY, - commandQualifier: 0x04, - options: { - isYesNoRequested: true - } - }, - isYesNo: isYesNo, - resultCode: STK_RESULT_OK - }; - - context.RIL.sendStkTerminalResponse(response); - }; - - // Test "Yes" response - do_test(true); - // Test "No" response - do_test(false); - - run_next_test(); -}); - -/** - * Verify STK terminal response with additional information. - */ -add_test(function test_stk_terminal_response_with_additional_info() { - function do_test(aInfo) { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_TERMINAL_RESPONSE); - - // Token : we don't care - this.readInt32(); - - // Data Length 26 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) + - // TLV_DEVICE_ID_SIZE(4) + - // TLV_RESULT_SIZE(4)) - equal(this.readInt32(), 26); - - // Command Details, Type-Length-Value(commandNumber, typeOfCommand, commandQualifier) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 3); - equal(pduHelper.readHexOctet(), 0x01); - equal(pduHelper.readHexOctet(), STK_CMD_DISPLAY_TEXT); - equal(pduHelper.readHexOctet(), 0x01); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Result, Type-Length-Value(General result, Additional information on result) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_RESULT_TERMINAL_CRNTLY_UNABLE_TO_PROCESS); - equal(pduHelper.readHexOctet(), aInfo); - }; - - let response = { - command: { - commandNumber: 0x01, - typeOfCommand: STK_CMD_DISPLAY_TEXT, - commandQualifier: 0x01, - options: { - isHighPriority: true - } - }, - resultCode: STK_RESULT_TERMINAL_CRNTLY_UNABLE_TO_PROCESS, - additionalInformation: aInfo - }; - - context.RIL.sendStkTerminalResponse(response); - }; - - do_test(0x01); // 'Screen is busy' - - run_next_test(); -}); - -// Test ComprehensionTlvHelper - -/** - * Verify ComprehensionTlvHelper.writeLocationInfoTlv - */ -add_test(function test_write_location_info_tlv() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let tlvHelper = context.ComprehensionTlvHelper; - - // Test with 2-digit mnc, and gsmCellId obtained from UMTS network. - let loc = { - mcc: "466", - mnc: "92", - gsmLocationAreaCode : 10291, - gsmCellId: 19072823 - }; - tlvHelper.writeLocationInfoTlv(loc); - - let tag = pduHelper.readHexOctet(); - equal(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO | - COMPREHENSIONTLV_FLAG_CR); - - let length = pduHelper.readHexOctet(); - equal(length, 9); - - let mcc_mnc = pduHelper.readSwappedNibbleBcdString(3); - equal(mcc_mnc, "46692"); - - let lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet(); - equal(lac, 10291); - - let cellId = (pduHelper.readHexOctet() << 24) | - (pduHelper.readHexOctet() << 16) | - (pduHelper.readHexOctet() << 8) | - (pduHelper.readHexOctet()); - equal(cellId, 19072823); - - // Test with 1-digit mnc, and gsmCellId obtained from GSM network. - loc = { - mcc: "466", - mnc: "02", - gsmLocationAreaCode : 10291, - gsmCellId: 65534 - }; - tlvHelper.writeLocationInfoTlv(loc); - - tag = pduHelper.readHexOctet(); - equal(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO | - COMPREHENSIONTLV_FLAG_CR); - - length = pduHelper.readHexOctet(); - equal(length, 7); - - mcc_mnc = pduHelper.readSwappedNibbleBcdString(3); - equal(mcc_mnc, "46602"); - - lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet(); - equal(lac, 10291); - - cellId = (pduHelper.readHexOctet() << 8) | (pduHelper.readHexOctet()); - equal(cellId, 65534); - - // Test with 3-digit mnc, and gsmCellId obtained from GSM network. - loc = { - mcc: "466", - mnc: "222", - gsmLocationAreaCode : 10291, - gsmCellId: 65534 - }; - tlvHelper.writeLocationInfoTlv(loc); - - tag = pduHelper.readHexOctet(); - equal(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO | - COMPREHENSIONTLV_FLAG_CR); - - length = pduHelper.readHexOctet(); - equal(length, 7); - - mcc_mnc = pduHelper.readSwappedNibbleBcdString(3); - equal(mcc_mnc, "466222"); - - lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet(); - equal(lac, 10291); - - cellId = (pduHelper.readHexOctet() << 8) | (pduHelper.readHexOctet()); - equal(cellId, 65534); - - run_next_test(); -}); - -/** - * Verify ComprehensionTlvHelper.writeErrorNumber - */ -add_test(function test_write_disconnecting_cause() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let tlvHelper = context.ComprehensionTlvHelper; - - tlvHelper.writeCauseTlv(RIL_CALL_FAILCAUSE_TO_GECKO_CALL_ERROR[CALL_FAIL_BUSY]); - let tag = pduHelper.readHexOctet(); - equal(tag, COMPREHENSIONTLV_TAG_CAUSE | COMPREHENSIONTLV_FLAG_CR); - let len = pduHelper.readHexOctet(); - equal(len, 2); // We have one cause. - let standard = pduHelper.readHexOctet(); - equal(standard, 0x60); - let cause = pduHelper.readHexOctet(); - equal(cause, 0x80 | CALL_FAIL_BUSY); - - run_next_test(); -}); - -/** - * Verify ComprehensionTlvHelper.getSizeOfLengthOctets - */ -add_test(function test_get_size_of_length_octets() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let tlvHelper = context.ComprehensionTlvHelper; - - let length = 0x70; - equal(tlvHelper.getSizeOfLengthOctets(length), 1); - - length = 0x80; - equal(tlvHelper.getSizeOfLengthOctets(length), 2); - - length = 0x180; - equal(tlvHelper.getSizeOfLengthOctets(length), 3); - - length = 0x18000; - equal(tlvHelper.getSizeOfLengthOctets(length), 4); - - run_next_test(); -}); - -/** - * Verify ComprehensionTlvHelper.writeLength - */ -add_test(function test_write_length() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let tlvHelper = context.ComprehensionTlvHelper; - - let length = 0x70; - tlvHelper.writeLength(length); - equal(pduHelper.readHexOctet(), length); - - length = 0x80; - tlvHelper.writeLength(length); - equal(pduHelper.readHexOctet(), 0x81); - equal(pduHelper.readHexOctet(), length); - - length = 0x180; - tlvHelper.writeLength(length); - equal(pduHelper.readHexOctet(), 0x82); - equal(pduHelper.readHexOctet(), (length >> 8) & 0xff); - equal(pduHelper.readHexOctet(), length & 0xff); - - length = 0x18000; - tlvHelper.writeLength(length); - equal(pduHelper.readHexOctet(), 0x83); - equal(pduHelper.readHexOctet(), (length >> 16) & 0xff); - equal(pduHelper.readHexOctet(), (length >> 8) & 0xff); - equal(pduHelper.readHexOctet(), length & 0xff); - - run_next_test(); -}); - -// Test Proactive commands. - -function test_stk_proactive_command(aOptions) { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let berHelper = context.BerTlvHelper; - let stkHelper = context.StkProactiveCmdHelper; - let stkFactory = context.StkCommandParamsFactory; - - let testPdu = aOptions.pdu; - let testTypeOfCommand = aOptions.typeOfCommand; - let testIcons = aOptions.icons; - let testFunc = aOptions.testFunc; - - if (testIcons) { - let ril = context.RIL; - ril.iccInfoPrivate.sst = [0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30]; //IMG: 39 - ril.appType = CARD_APPTYPE_SIM; - - // skip asynchornous process in IconLoader.loadIcons(). - let iconLoader = context.IconLoader; - iconLoader.loadIcons = (recordNumbers, onsuccess, onerror) => { - onsuccess(testIcons); - }; - } - - for(let i = 0 ; i < testPdu.length; i++) { - pduHelper.writeHexOctet(testPdu[i]); - } - - let berTlv = berHelper.decode(testPdu.length); - let ctlvs = berTlv.value; - let ctlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs); - let cmdDetails = ctlv.value; - equal(cmdDetails.typeOfCommand, testTypeOfCommand); - - stkFactory.createParam(cmdDetails, ctlvs, (aResult) => { - cmdDetails.options = aResult; - testFunc(context, cmdDetails, ctlvs); - }); -} - -/** - * Verify Proactive command helper : searchForSelectedTags - */ -add_test(function test_stk_proactive_command_search_for_selected_tags() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let berHelper = context.BerTlvHelper; - let stkHelper = context.StkProactiveCmdHelper; - - let tag_test = [ - 0xD0, - 0x3E, - 0x85, 0x0A, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x20, 0x31, - 0x85, 0x0A, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x20, 0x32, - 0x85, 0x0A, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x20, 0x33, - 0x85, 0x0A, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x20, 0x34, - 0x85, 0x0A, 0x61, 0x6C, 0x70, 0x68, 0x61, 0x20, 0x69, 0x64, 0x20, 0x35, - 0x85, 0x00]; - - for (let i = 0; i < tag_test.length; i++) { - pduHelper.writeHexOctet(tag_test[i]); - } - - let berTlv = berHelper.decode(tag_test.length); - let selectedCtlvs = - stkHelper.searchForSelectedTags(berTlv.value, [COMPREHENSIONTLV_TAG_ALPHA_ID]); - let tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - equal(tlv.value.identifier, "alpha id 1"); - - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - equal(tlv.value.identifier, "alpha id 2"); - - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - equal(tlv.value.identifier, "alpha id 3"); - - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - equal(tlv.value.identifier, "alpha id 4"); - - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - equal(tlv.value.identifier, "alpha id 5"); - - // emulate that the alpha identifier is provided and is a null data object, - // which is converted to an empty string in ICCPDUHelper. - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - strictEqual(tlv.value.identifier, ""); - - // emulate that the alpha identifier is not provided - tlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ALPHA_ID); - strictEqual(tlv, undefined); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Refresh - */ -add_test(function test_stk_proactive_command_refresh() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x10, - 0x81, 0x03, 0x01, 0x01, 0x01, - 0x82, 0x02, 0x81, 0x82, - 0x92, 0x05, 0x01, 0x3F, 0x00, 0x2F, 0xE2 - ], - typeOfCommand: STK_CMD_REFRESH, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let stkHelper = context.StkProactiveCmdHelper; - let ctlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_FILE_LIST, ctlvs); - equal(ctlv.value.fileList, "3F002FE2"); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Play Tone - */ -add_test(function test_stk_proactive_command_play_tone() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x1F, - 0x81, 0x03, 0x01, 0x20, 0x00, - 0x82, 0x02, 0x81, 0x03, - 0x85, 0x09, 0x44, 0x69, 0x61, 0x6C, 0x20, 0x54, 0x6F, 0x6E, 0x65, - 0x8E, 0x01, 0x01, - 0x84, 0x02, 0x01, 0x05, - 0x9E, 0x02, 0x00, 0x01 - ], - typeOfCommand: STK_CMD_PLAY_TONE, - icons: [1], - testFunc: (context, cmdDetails, ctlvs) => { - let playTone = cmdDetails.options; - - equal(playTone.text, "Dial Tone"); - equal(playTone.tone, STK_TONE_TYPE_DIAL_TONE); - equal(playTone.duration.timeUnit, STK_TIME_UNIT_SECOND); - equal(playTone.duration.timeInterval, 5); - equal(playTone.iconSelfExplanatory, true); - equal(playTone.icons, 1); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Poll Interval - */ -add_test(function test_stk_proactive_command_poll_interval() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x0D, - 0x81, 0x03, 0x01, 0x03, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x84, 0x02, 0x01, 0x14 - ], - typeOfCommand: STK_CMD_POLL_INTERVAL, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let interval = cmdDetails.options; - - equal(interval.timeUnit, STK_TIME_UNIT_SECOND); - equal(interval.timeInterval, 0x14); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command: Display Text - */ -add_test(function test_stk_proactive_command_display_text() { - test_stk_proactive_command({ - pdu: [ - 0xd0, - 0x2c, - 0x81, 0x03, 0x01, 0x21, 0x80, - 0x82, 0x02, 0x81, 0x02, - 0x0d, 0x1d, 0x00, 0xd3, 0x30, 0x9b, 0xfc, 0x06, 0xc9, 0x5c, 0x30, 0x1a, - 0xa8, 0xe8, 0x02, 0x59, 0xc3, 0xec, 0x34, 0xb9, 0xac, 0x07, 0xc9, 0x60, - 0x2f, 0x58, 0xed, 0x15, 0x9b, 0xb9, 0x40, - 0x9e, 0x02, 0x00, 0x01 - ], - typeOfCommand: STK_CMD_DISPLAY_TEXT, - icons: [1], - testFunc: (context, cmdDetails, ctlvs) => { - let textMsg = cmdDetails.options; - - equal(textMsg.text, "Saldo 2.04 E. Validez 20/05/13. "); - equal(textMsg.iconSelfExplanatory, true); - equal(textMsg.icons, 1); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command: Set Up Event List. - */ -add_test(function test_stk_proactive_command_event_list() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x0F, - 0x81, 0x03, 0x01, 0x05, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x99, 0x04, 0x00, 0x01, 0x02, 0x03 - ], - typeOfCommand: STK_CMD_SET_UP_EVENT_LIST, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let event = cmdDetails.options; - - equal(Array.isArray(event.eventList), true); - - for (let i = 0; i < event.eventList.length; i++) { - equal(event.eventList[i], i); - } - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Get Input - */ -add_test(function test_stk_proactive_command_get_input() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x22, - 0x81, 0x03, 0x01, 0x23, 0x8F, - 0x82, 0x02, 0x81, 0x82, - 0x8D, 0x05, 0x04, 0x54, 0x65, 0x78, 0x74, - 0x91, 0x02, 0x01, 0x10, - 0x17, 0x08, 0x04, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, - 0x9E, 0x02, 0x00, 0x01 - ], - typeOfCommand: STK_CMD_GET_INPUT, - icons: [1], - testFunc: (context, cmdDetails, ctlvs) => { - let input = cmdDetails.options; - - equal(input.text, "Text"); - equal(input.isAlphabet, true); - equal(input.isUCS2, true); - equal(input.hideInput, true); - equal(input.isPacked, true); - equal(input.isHelpAvailable, true); - equal(input.minLength, 0x01); - equal(input.maxLength, 0x10); - equal(input.defaultText, "Default"); - equal(input.iconSelfExplanatory, true); - equal(input.icons, 1); - } - }); - - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x11, - 0x81, 0x03, 0x01, 0x23, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x8D, 0x00, - 0x91, 0x02, 0x01, 0x10, - 0x17, 0x00 - ], - typeOfCommand: STK_CMD_GET_INPUT, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let input = cmdDetails.options; - - equal(input.text, null); - equal(input.minLength, 0x01); - equal(input.maxLength, 0x10); - equal(input.defaultText, null); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : More Time - */ -add_test(function test_stk_proactive_command_more_time() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let berHelper = context.BerTlvHelper; - let stkHelper = context.StkProactiveCmdHelper; - - let more_time_1 = [ - 0xD0, - 0x09, - 0x81, 0x03, 0x01, 0x02, 0x00, - 0x82, 0x02, 0x81, 0x82]; - - for(let i = 0 ; i < more_time_1.length; i++) { - pduHelper.writeHexOctet(more_time_1[i]); - } - - let berTlv = berHelper.decode(more_time_1.length); - let ctlvs = berTlv.value; - let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs); - equal(tlv.value.commandNumber, 0x01); - equal(tlv.value.typeOfCommand, STK_CMD_MORE_TIME); - equal(tlv.value.commandQualifier, 0x00); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Select Item - */ -add_test(function test_stk_proactive_command_select_item() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x3D, - 0x81, 0x03, 0x01, 0x24, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x05, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x8F, 0x07, 0x01, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x31, - 0x8F, 0x07, 0x02, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x32, - 0x8F, 0x07, 0x03, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x33, - 0x18, 0x03, 0x10, 0x15, 0x20, - 0x90, 0x01, 0x01, - 0x9E, 0x02, 0x00, 0x01, - 0x9F, 0x04, 0x00, 0x01, 0x02, 0x03 - ], - typeOfCommand: STK_CMD_SELECT_ITEM, - icons: [1, 1, 2, 3], - testFunc: (context, cmdDetails, ctlvs) => { - let menu = cmdDetails.options; - - equal(menu.title, "Title"); - equal(menu.iconSelfExplanatory, true); - equal(menu.icons, 1); - equal(menu.items[0].identifier, 1); - equal(menu.items[0].text, "item 1"); - equal(menu.items[0].iconSelfExplanatory, true); - equal(menu.items[0].icons, 1); - equal(menu.items[1].identifier, 2); - equal(menu.items[1].text, "item 2"); - equal(menu.items[1].iconSelfExplanatory, true); - equal(menu.items[1].icons, 2); - equal(menu.items[2].identifier, 3); - equal(menu.items[2].text, "item 3"); - equal(menu.items[2].iconSelfExplanatory, true); - equal(menu.items[2].icons, 3); - equal(menu.nextActionList[0], STK_CMD_SET_UP_CALL); - equal(menu.nextActionList[1], STK_CMD_LAUNCH_BROWSER); - equal(menu.nextActionList[2], STK_CMD_PLAY_TONE); - equal(menu.defaultItem, 0x00); - } - }); - - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x33, - 0x81, 0x03, 0x01, 0x24, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x05, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x8F, 0x07, 0x01, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x31, - 0x8F, 0x07, 0x02, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x32, - 0x8F, 0x07, 0x03, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x33, - 0x18, 0x03, 0x00, 0x15, 0x81, - 0x90, 0x01, 0x03 - ], - typeOfCommand: STK_CMD_SELECT_ITEM, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let menu = cmdDetails.options; - - equal(menu.title, "Title"); - equal(menu.items[0].identifier, 1); - equal(menu.items[0].text, "item 1"); - equal(menu.items[1].identifier, 2); - equal(menu.items[1].text, "item 2"); - equal(menu.items[2].identifier, 3); - equal(menu.items[2].text, "item 3"); - equal(menu.nextActionList[0], STK_NEXT_ACTION_NULL); - equal(menu.nextActionList[1], STK_CMD_LAUNCH_BROWSER); - equal(menu.nextActionList[2], STK_NEXT_ACTION_END_PROACTIVE_SESSION); - equal(menu.defaultItem, 0x02); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Set Up Menu - */ -add_test(function test_stk_proactive_command_set_up_menu() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x3A, - 0x81, 0x03, 0x01, 0x25, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x05, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x8F, 0x07, 0x01, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x31, - 0x8F, 0x07, 0x02, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x32, - 0x8F, 0x07, 0x03, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x33, - 0x18, 0x03, 0x10, 0x15, 0x20, - 0x9E, 0x02, 0x00, 0x01, - 0x9F, 0x04, 0x00, 0x01, 0x02, 0x03 - ], - typeOfCommand: STK_CMD_SET_UP_MENU, - icons: [1, 1, 2, 3], - testFunc: (context, cmdDetails, ctlvs) => { - let menu = cmdDetails.options; - - equal(menu.title, "Title"); - equal(menu.iconSelfExplanatory, true); - equal(menu.icons, 1); - equal(menu.items[0].identifier, 1); - equal(menu.items[0].text, "item 1"); - equal(menu.items[0].iconSelfExplanatory, true); - equal(menu.items[0].icons, 1); - equal(menu.items[1].identifier, 2); - equal(menu.items[1].text, "item 2"); - equal(menu.items[1].iconSelfExplanatory, true); - equal(menu.items[1].icons, 2); - equal(menu.items[2].identifier, 3); - equal(menu.items[2].text, "item 3"); - equal(menu.items[2].iconSelfExplanatory, true); - equal(menu.items[2].icons, 3); - equal(menu.nextActionList[0], STK_CMD_SET_UP_CALL); - equal(menu.nextActionList[1], STK_CMD_LAUNCH_BROWSER); - equal(menu.nextActionList[2], STK_CMD_PLAY_TONE); - } - }); - - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x30, - 0x81, 0x03, 0x01, 0x25, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x05, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x8F, 0x07, 0x01, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x31, - 0x8F, 0x07, 0x02, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x32, - 0x8F, 0x07, 0x03, 0x69, 0x74, 0x65, 0x6D, 0x20, 0x33, - 0x18, 0x03, 0x81, 0x00, 0x00 - ], - typeOfCommand: STK_CMD_SET_UP_MENU, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let menu = cmdDetails.options; - - equal(menu.title, "Title"); - equal(menu.items[0].identifier, 1); - equal(menu.items[0].text, "item 1"); - equal(menu.items[1].identifier, 2); - equal(menu.items[1].text, "item 2"); - equal(menu.items[2].identifier, 3); - equal(menu.items[2].text, "item 3"); - equal(menu.nextActionList[0], STK_NEXT_ACTION_END_PROACTIVE_SESSION); - equal(menu.nextActionList[1], STK_NEXT_ACTION_NULL); - equal(menu.nextActionList[2], STK_NEXT_ACTION_NULL); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Set Up Call - */ -add_test(function test_stk_proactive_command_set_up_call() { - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x31, - 0x81, 0x03, 0x01, 0x10, 0x04, - 0x82, 0x02, 0x81, 0x82, - 0x05, 0x0A, 0x44, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, - 0x86, 0x09, 0x81, 0x10, 0x32, 0x04, 0x21, 0x43, 0x65, 0x1C, 0x2C, - 0x05, 0x07, 0x4D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x9E, 0x02, 0x00, 0x01, - 0x9E, 0x02, 0x01, 0x02 - ], - typeOfCommand: STK_CMD_SET_UP_CALL, - icons: [1, 2], - testFunc: (context, cmdDetails, ctlvs) => { - let setupCall = cmdDetails.options; - - equal(setupCall.address, "012340123456,1,2"); - equal(setupCall.confirmMessage.text, "Disconnect"); - equal(setupCall.confirmMessage.iconSelfExplanatory, true); - equal(setupCall.confirmMessage.icons, 1); - equal(setupCall.callMessage.text, "Message"); - equal(setupCall.callMessage.iconSelfExplanatory, false); - equal(setupCall.callMessage.icons, 2); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Timer Management - */ -add_test(function test_stk_proactive_command_timer_management() { - // Timer Management - Start - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x11, - 0x81, 0x03, 0x01, 0x27, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0xA4, 0x01, 0x01, - 0xA5, 0x03, 0x10, 0x20, 0x30 - ], - typeOfCommand: STK_CMD_TIMER_MANAGEMENT, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - equal(cmdDetails.commandQualifier, STK_TIMER_START); - - let timer = cmdDetails.options; - - equal(timer.timerId, 0x01); - equal(timer.timerValue, (0x01 * 60 * 60) + (0x02 * 60) + 0x03); - } - }); - - // Timer Management - Deactivate - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x0C, - 0x81, 0x03, 0x01, 0x27, 0x01, - 0x82, 0x02, 0x81, 0x82, - 0xA4, 0x01, 0x01 - ], - typeOfCommand: STK_CMD_TIMER_MANAGEMENT, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - equal(cmdDetails.commandQualifier, STK_TIMER_DEACTIVATE); - - let timer = cmdDetails.options; - - equal(timer.timerId, 0x01); - ok(timer.timerValue === undefined); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive Command : Provide Local Information - */ -add_test(function test_stk_proactive_command_provide_local_information() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let berHelper = context.BerTlvHelper; - let stkHelper = context.StkProactiveCmdHelper; - let stkCmdHelper = context.StkCommandParamsFactory; - - // Verify IMEI - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x09, - 0x81, 0x03, 0x01, 0x26, 0x01, - 0x82, 0x02, 0x81, 0x82 - ], - typeOfCommand: STK_CMD_PROVIDE_LOCAL_INFO, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - equal(cmdDetails.commandQualifier, STK_LOCAL_INFO_IMEI); - - let provideLocalInfo = cmdDetails.options; - equal(provideLocalInfo.localInfoType, STK_LOCAL_INFO_IMEI); - } - }); - - // Verify Date and Time Zone - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x09, - 0x81, 0x03, 0x01, 0x26, 0x03, - 0x82, 0x02, 0x81, 0x82 - ], - typeOfCommand: STK_CMD_PROVIDE_LOCAL_INFO, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - equal(cmdDetails.commandQualifier, STK_LOCAL_INFO_DATE_TIME_ZONE); - - let provideLocalInfo = cmdDetails.options; - equal(provideLocalInfo.localInfoType, STK_LOCAL_INFO_DATE_TIME_ZONE); - } - }); - - run_next_test(); -}); - -/** - * Verify Proactive command : BIP Messages - */ -add_test(function test_stk_proactive_command_open_channel() { - let worker = newUint8Worker(); - let context = worker.ContextPool._contexts[0]; - let pduHelper = context.GsmPDUHelper; - let berHelper = context.BerTlvHelper; - let stkHelper = context.StkProactiveCmdHelper; - let stkCmdHelper = context.StkCommandParamsFactory; - - // Open Channel - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x0F, - 0x81, 0x03, 0x01, 0x40, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x04, 0x4F, 0x70, 0x65, 0x6E //alpha id: "Open" - ], - typeOfCommand: STK_CMD_OPEN_CHANNEL, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let bipMsg = cmdDetails.options; - - equal(bipMsg.text, "Open"); - } - }); - - // Close Channel - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x10, - 0x81, 0x03, 0x01, 0x41, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x05, 0x43, 0x6C, 0x6F, 0x73, 0x65 //alpha id: "Close" - ], - typeOfCommand: STK_CMD_CLOSE_CHANNEL, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let bipMsg = cmdDetails.options; - - equal(bipMsg.text, "Close"); - } - }); - - // Receive Data - test_stk_proactive_command({ - pdu: [ - 0XD0, - 0X12, - 0x81, 0x03, 0x01, 0x42, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x07, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65 //alpha id: "Receive" - ], - typeOfCommand: STK_CMD_RECEIVE_DATA, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let bipMsg = cmdDetails.options; - - equal(bipMsg.text, "Receive"); - } - }); - - // Send Data - test_stk_proactive_command({ - pdu: [ - 0xD0, - 0x0F, - 0x81, 0x03, 0x01, 0x43, 0x00, - 0x82, 0x02, 0x81, 0x82, - 0x85, 0x04, 0x53, 0x65, 0x6E, 0x64 //alpha id: "Send" - ], - typeOfCommand: STK_CMD_SEND_DATA, - icons: null, - testFunc: (context, cmdDetails, ctlvs) => { - let bipMsg = cmdDetails.options; - - equal(bipMsg.text, "Send"); - } - }); - - run_next_test(); -}); - -/** - * Verify Event Download Command : Location Status - */ -add_test(function test_stk_event_download_location_status() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_ENVELOPE_COMMAND); - - // Token : we don't care - this.readInt32(); - - // Data Size, 42 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) + - // TLV_EVENT_LIST_SIZE(3) + - // TLV_LOCATION_STATUS_SIZE(3) + - // TLV_LOCATION_INFO_GSM_SIZE(9)) - equal(this.readInt32(), 42); - - // BER tag - equal(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG); - - // BER length, 19 = TLV_DEVICE_ID_SIZE(4) + - // TLV_EVENT_LIST_SIZE(3) + - // TLV_LOCATION_STATUS_SIZE(3) + - // TLV_LOCATION_INFO_GSM_SIZE(9) - equal(pduHelper.readHexOctet(), 19); - - // Event List, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_EVENT_TYPE_LOCATION_STATUS); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Location Status, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LOCATION_STATUS | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_SERVICE_STATE_NORMAL); - - // Location Info, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LOCATION_INFO | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 7); - - equal(pduHelper.readHexOctet(), 0x21); // MCC + MNC - equal(pduHelper.readHexOctet(), 0x63); - equal(pduHelper.readHexOctet(), 0x54); - equal(pduHelper.readHexOctet(), 0); // LAC - equal(pduHelper.readHexOctet(), 0); - equal(pduHelper.readHexOctet(), 0); // Cell ID - equal(pduHelper.readHexOctet(), 0); - - run_next_test(); - }; - - let event = { - eventType: STK_EVENT_TYPE_LOCATION_STATUS, - locationStatus: STK_SERVICE_STATE_NORMAL, - locationInfo: { - mcc: "123", - mnc: "456", - gsmLocationAreaCode: 0, - gsmCellId: 0 - } - }; - context.RIL.sendStkEventDownload({ - event: event - }); -}); - -// Test Event Download commands. - -/** - * Verify Event Download Command : Language Selection - */ -add_test(function test_stk_event_download_language_selection() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - let iccHelper = context.ICCPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_ENVELOPE_COMMAND); - - // Token : we don't care - this.readInt32(); - - // Data Size, 26 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) + - // TLV_EVENT_LIST_SIZE(3) + - // TLV_LANGUAGE(4)) - equal(this.readInt32(), 26); - - // BER tag - equal(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG); - - // BER length, 19 = TLV_DEVICE_ID_SIZE(4) + - // TLV_EVENT_LIST_SIZE(3) + - // TLV_LANGUAGE(4) - equal(pduHelper.readHexOctet(), 11); - - // Event List, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_EVENT_TYPE_LANGUAGE_SELECTION); - - // Device Identifies, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Language, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LANGUAGE); - equal(pduHelper.readHexOctet(), 2); - equal(iccHelper.read8BitUnpackedToString(2), "zh"); - - run_next_test(); - }; - - let event = { - eventType: STK_EVENT_TYPE_LANGUAGE_SELECTION, - language: "zh" - }; - context.RIL.sendStkEventDownload({ - event: event - }); -}); - -/** - * Verify Event Download Command : User Activity - */ -add_test(function test_stk_event_download_user_activity() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_ENVELOPE_COMMAND); - - // Token : we don't care - this.readInt32(); - - // Data Size, 18 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3)) - equal(this.readInt32(), 18); - - // BER tag - equal(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG); - - // BER length, 7 = TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3) - equal(pduHelper.readHexOctet(), 7); - - // Event List, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_EVENT_TYPE_USER_ACTIVITY); - - // Device Identities, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - run_next_test(); - }; - - let event = { - eventType: STK_EVENT_TYPE_USER_ACTIVITY - }; - context.RIL.sendStkEventDownload({ - event: event - }); -}); - -/** - * Verify Event Download Command : Idle Screen Available - */ -add_test(function test_stk_event_download_idle_screen_available() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_ENVELOPE_COMMAND); - - // Token : we don't care - this.readInt32(); - - // Data Size, 18 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3)) - equal(this.readInt32(), 18); - - // BER tag - equal(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG); - - // BER length, 7 = TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3) - equal(pduHelper.readHexOctet(), 7); - - // Event List, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE); - - // Device Identities, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_DISPLAY); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - run_next_test(); - }; - - let event = { - eventType: STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE - }; - context.RIL.sendStkEventDownload({ - event: event - }); -}); - -/** - * Verify Event Downloaded Command :Browser Termination - */ -add_test(function test_stk_event_download_browser_termination() { - let worker = newUint8SupportOutgoingIndexWorker(); - let context = worker.ContextPool._contexts[0]; - let buf = context.Buf; - let pduHelper = context.GsmPDUHelper; - - buf.sendParcel = function() { - // Type - equal(this.readInt32(), REQUEST_STK_SEND_ENVELOPE_COMMAND); - - // Token : we don't care - this.readInt32(); - - // Data Size, 24 = 2 * ( 2+TLV_DEVICE_ID(4)+TLV_EVENT_LIST_SIZE(3) - // +TLV_BROWSER_TERMINATION_CAUSE(3) ) - equal(this.readInt32(), 24); - - // BER tag - equal(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG); - - // BER length, 10 = TLV_DEVICE_ID(4)+TLV_EVENT_LIST_SIZE(3) - // ++TLV_BROWSER_TERMINATION_CAUSE(3) - equal(pduHelper.readHexOctet(), 10); - - // Event List, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_EVENT_TYPE_BROWSER_TERMINATION); - - // Device Identities, Type-Length-Value(Source ID-Destination ID) - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 2); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_ME); - equal(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM); - - // Browser Termination Case, Type-Length-Value - equal(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_BROWSER_TERMINATION_CAUSE | - COMPREHENSIONTLV_FLAG_CR); - equal(pduHelper.readHexOctet(), 1); - equal(pduHelper.readHexOctet(), STK_BROWSER_TERMINATION_CAUSE_USER); - - run_next_test(); - }; - - let event = { - eventType: STK_EVENT_TYPE_BROWSER_TERMINATION, - terminationCause: STK_BROWSER_TERMINATION_CAUSE_USER - }; - context.RIL.sendStkEventDownload({ - event: event - }); -}); |