Merge b2g-inbound to m-c on a CLOSED TREE.

This commit is contained in:
Ryan VanderMeulen 2013-08-19 17:02:28 -04:00
Родитель 2375037301 dddb876b83
Коммит 0c057b4a60
28 изменённых файлов: 1331 добавлений и 1332 удалений

Просмотреть файл

@ -1,4 +1,4 @@
{
"revision": "a7d496de30d0a7612b31de99b01b5a4e2b749728",
"revision": "78decf03b39ded18b914d57f4f3152d6f1b4c56a",
"repo_path": "/integration/gaia-central"
}

Просмотреть файл

@ -13,11 +13,13 @@ function testDisplayText(command, expect) {
is(command.typeOfCommand, icc.STK_CMD_DISPLAY_TEXT, expect.name);
is(command.options.text, expect.text, expect.name);
is(command.commandQualifier, expect.commandQualifier, expect.name);
if (expect.userClear) {
is(command.options.userClear, expect.userClear, expect.name);
}
if (expect.isHighPriority) {
is(command.options.isHighPriority, expect.isHighPriority, expect.name);
is(command.options.userClear, expect.userClear, expect.name);
is(command.options.isHighPriority, expect.isHighPriority, expect.name);
let duration = command.options.duration;
if (duration) {
is(duration.timeUnit, expect.duration.timeUnit, expect.name);
is(duration.timeInterval, expect.duration.timeInterval, expect.name);
}
runNextTest();
@ -61,25 +63,40 @@ let tests = [
text: "<GO-BACKWARDS>",
userClear: true}},
{command: "d0248103012180820281028d1908041704140420041004120421042204120423041904220415",
func: testDisplayText,
expect: {name: "display_text_cmd_7",
commandQualifier: 0x80,
text: "ЗДРАВСТВУЙТЕ",
userClear: true}},
func: testDisplayText,
expect: {name: "display_text_cmd_7",
commandQualifier: 0x80,
text: "ЗДРАВСТВУЙТЕ",
userClear: true}},
{command: "d0108103012180820281028d05084f60597d",
func: testDisplayText,
expect: {name: "display_text_cmd_8",
commandQualifier: 0x80,
text: "你好",
userClear: true}},
func: testDisplayText,
expect: {name: "display_text_cmd_8",
commandQualifier: 0x80,
text: "你好",
userClear: true}},
{command: "d0128103012180820281028d07080038003030eb",
func: testDisplayText,
expect: {name: "display_text_cmd_9",
commandQualifier: 0x80,
text: "80ル",
userClear: true}},
{command: "d0288103012180820281020d1d00d3309bfc06c95c301aa8e80259c3ec34b9ac07c9602f58ed159bb940",
func: testDisplayText,
expect: {name: "display_text_cmd_10",
commandQualifier: 0x80,
text: "Saldo 2.04 E. Validez 20/05/13. ",
userClear: true}},
{command: "d0198103012180820281028D0A043130205365636F6E648402010A",
func: testDisplayText,
expect: {name: "display_text_cmd_9",
expect: {name: "display_text_cmd_11",
commandQualifier: 0x80,
text: "80ル",
userClear: true}},
text: "10 Second",
userClear: true,
duration: {timeUnit: icc.STK_TIME_UNIT_SECOND,
timeInterval: 0x0A}}},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -13,14 +13,14 @@ function testGetInKey(command, expect) {
is(command.typeOfCommand, icc.STK_CMD_GET_INKEY, expect.name);
is(command.commandQualifier, expect.commandQualifier, expect.name);
is(command.options.text, expect.text, expect.name);
if (command.options.isAlphabet) {
is(command.options.isAlphabet, expect.isAlphabet, expect.name);
}
if (command.options.isUCS2) {
is(command.options.isUCS2, expect.isUCS2, expect.name);
}
if (command.options.isYesNoRequested) {
is(command.options.isYesNoRequested, expect.isYesNoRequested, expect.name);
is(command.options.isAlphabet, expect.isAlphabet, expect.name);
is(command.options.isUCS2, expect.isUCS2, expect.name);
is(command.options.isYesNoRequested, expect.isYesNoRequested, expect.name);
let duration = command.options.duration;
if (duration) {
is(duration.timeUnit, expect.duration.timeUnit, expect.name);
is(duration.timeInterval, expect.duration.timeInterval, expect.name);
}
runNextTest();
@ -98,8 +98,16 @@ let tests = [
expect: {name: "get_inkey_cmd_13",
commandQualifier: 0x00,
text: "<NO-ICON>"}},
{command: "D0198103012200820281828D0A04456E74657220222B228402010A",
func: testGetInKey,
expect: {name: "get_inkey_cmd_14",
commandQualifier: 0x00,
text: "Enter \"+\"",
duration: {timeUnit: icc.STK_TIME_UNIT_SECOND,
timeInterval: 0x0A}}},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -174,6 +174,7 @@ let tests = [
maxLength: 10}},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -251,6 +251,7 @@ let tests = [
text: "ル"}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -23,6 +23,7 @@ let tests = [
commandQualifier: 0x00}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -8,15 +8,6 @@ SpecialPowers.addPermission("mobileconnection", true, document);
let icc = navigator.mozIccManager;
ok(icc instanceof MozIccManager, "icc is instanceof " + icc.constructor);
function testDisplayTextGsm7BitEncoding(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_DISPLAY_TEXT);
is(cmd.options.userClear, true);
is(cmd.options.text, "Saldo 2.04 E. Validez 20/05/13. ");
runNextTest();
}
function testLocalInfoLocation(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_PROVIDE_LOCAL_INFO);
@ -57,35 +48,6 @@ function testLocalInfoLanguage(cmd) {
runNextTest();
}
function isFirstMenuItemNull(cmd) {
return (cmd.options.items.length == 1 && !(cmd.options.items[0]));
}
function testInitialSetupMenu(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_SET_UP_MENU);
is(isFirstMenuItemNull(cmd), false);
runNextTest();
}
function testRemoveSetupMenu(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_SET_UP_MENU);
is(isFirstMenuItemNull(cmd), true);
runNextTest();
}
function testPollingOff(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_POLL_OFF);
is(cmd.commandNumber, 0x01);
is(cmd.commandQualifier, 0x00);
is(cmd.options, null);
runNextTest();
}
function testRefresh(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_REFRESH);
@ -130,50 +92,7 @@ function testTimerManagementGetCurrentValue(cmd) {
runNextTest();
}
function testGetInKeyVariableTimeout(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_GET_INKEY);
is(cmd.options.duration.timeUnit, 0x01);
is(cmd.options.duration.timeInterval, 0x0A);
runNextTest();
}
function testSetupCall(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_SET_UP_CALL);
is(cmd.commandNumber, 0x01);
is(cmd.commandQualifier, 0x04);
is(cmd.options.address, "012340123456,1,2");
is(cmd.options.confirmMessage, "Disconnect");
is(cmd.options.callMessage, "Message");
runNextTest();
}
function testDisplayTextVariableTimeOut(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_DISPLAY_TEXT);
is(cmd.commandNumber, 0x01);
is(cmd.options.duration.timeUnit, icc.STK_TIME_UNIT_SECOND);
is(cmd.options.duration.timeInterval, 0x0A);
runNextTest();
}
function testSetUpCallVariableTimeOut(cmd) {
log("STK CMD " + JSON.stringify(cmd));
is(cmd.typeOfCommand, icc.STK_CMD_SET_UP_CALL);
is(cmd.commandNumber, 0x01);
is(cmd.options.duration.timeUnit, icc.STK_TIME_UNIT_SECOND);
is(cmd.options.duration.timeInterval, 0x0A);
runNextTest();
}
let tests = [
{command: "d0288103012180820281020d1d00d3309bfc06c95c301aa8e80259c3ec34b9ac07c9602f58ed159bb940",
func: testDisplayTextGsm7BitEncoding},
{command: "d009810301260082028182",
func: testLocalInfoLocation},
{command: "d009810301260182028182",
@ -182,29 +101,13 @@ let tests = [
func: testLocalInfoDate},
{command: "d009810301260482028182",
func: testLocalInfoLanguage},
{command: "D00D81030125008202818285008F00",
func: testRemoveSetupMenu},
{command:"D03B810301250082028182850C546F6F6C6B6974204D656E758F07014974656D20318F07024974656D20328F07034974656D20338F07044974656D2034",
func: testInitialSetupMenu},
{command: "d009810301040082028182",
func: testPollingOff},
{command: "d0108103010101820281829205013f002fe2",
func: testRefresh},
{command: "d011810301270082028182a40101a503102030",
func: testTimerManagementStart},
{command: "d00c810301270182028182a40104",
func: testTimerManagementDeactivate},
{command: "d00c810301270282028182a40108",
func: testTimerManagementGetCurrentValue},
{command: "d029810301100482028182050a446973636f6e6e6563748609811032042143651c2c05074d657373616765",
func: testSetupCall},
{command: "D0198103012200820281828D0A04456E74657220222B228402010A",
func: testGetInKeyVariableTimeout},
{command: "d0198103012180820281028D0A043130205365636F6E648402010A",
func: testDisplayTextVariableTimeOut},
{command: "d02281030110008202818385084E6F7420627573798609911032042143651C2C8402010A",
func: testSetUpCallVariableTimeOut},
];
];
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(cmd, func) {

Просмотреть файл

@ -27,6 +27,7 @@ let tests = [
commandQualifier: 0x04}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -312,6 +312,7 @@ let tests = [
items: [{identifier: 1, text: "82ル1"}, {identifier: 2, text: "82ル2"}, {identifier: 3, text: "82ル3"}]}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -192,6 +192,7 @@ let tests = [
text: "ル"}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -242,6 +242,7 @@ let tests = [
title: "82ル2"}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -202,6 +202,7 @@ let tests = [
title: "ル"}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -207,6 +207,7 @@ let tests = [
title: "ル"}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -12,8 +12,14 @@ function testSetupCall(command, expect) {
log("STK CMD " + JSON.stringify(command));
is(command.typeOfCommand, icc.STK_CMD_SET_UP_CALL, expect.name);
is(command.commandQualifier, expect.commandQualifier, expect.name);
if (command.options.confirmMessage) {
is(command.options.confirmMessage, expect.text, expect.name);
is(command.options.confirmMessage, expect.confirmMessage, expect.name);
is(command.options.address, expect.address, expect.name);
is(command.options.callMessage, expect.callMessage, expect.name);
let duration = command.options.duration;
if (duration) {
is(duration.timeUnit, expect.duration.timeUnit, expect.name);
is(duration.timeInterval, expect.duration.timeInterval, expect.name);
}
runNextTest();
@ -24,228 +30,323 @@ let tests = [
func: testSetupCall,
expect: {name: "setup_call_cmd_1",
commandQualifier: 0x00,
text: "Not busy"}},
confirmMessage: "Not busy",
address: "+012340123456,1,2"}},
{command: "d01d81030110028202818385074f6e20686f6c648609911032042143651c2c",
func: testSetupCall,
expect: {name: "setup_call_cmd_2",
commandQualifier: 0x02,
text: "On hold"}},
confirmMessage: "On hold",
address: "+012340123456,1,2"}},
{command: "d020810301100482028183850a446973636f6e6e6563748609911032042143651c2c",
func: testSetupCall,
expect: {name: "setup_call_cmd_3",
commandQualifier: 0x04,
text: "Disconnect"}},
confirmMessage: "Disconnect",
address: "+012340123456,1,2"}},
{command: "d02b81030110008202818385114361706162696c69747920636f6e6669678609911032042143651c2c870201a0",
func: testSetupCall,
expect: {name: "setup_call_cmd_4",
commandQualifier: 0x00,
text: "Capability config"}},
confirmMessage: "Capability config",
address: "+012340123456,1,2"}},
{command: "d01c81030110018202818386119110325476981032547698103254769810",
func: testSetupCall,
expect: {name: "setup_call_cmd_5",
commandQualifier: 0x01}},
commandQualifier: 0x01,
address: "+01234567890123456789012345678901"}},
{command: "d081fd8103011001820281838581ed54687265652074797065732061726520646566696e65643a202d2073657420757020612063616c6c2c20627574206f6e6c79206966206e6f742063757272656e746c792062757379206f6e20616e6f746865722063616c6c3b202d2073657420757020612063616c6c2c2070757474696e6720616c6c206f746865722063616c6c732028696620616e7929206f6e20686f6c643b202d2073657420757020612063616c6c2c20646973636f6e6e656374696e6720616c6c206f746865722063616c6c732028696620616e79292066697273742e20466f722065616368206f662074686573652074797065732c2086029110",
func: testSetupCall,
expect: {name: "setup_call_cmd_6",
commandQualifier: 0x01,
text: "Three types are defined: - set up a call, but only if not currently busy on another call; - set up a call, putting all other calls (if any) on hold; - set up a call, disconnecting all other calls (if any) first. For each of these types, "}},
confirmMessage: "Three types are defined: - set up a call, but only if not currently busy on another call; - set up a call, putting all other calls (if any) on hold; - set up a call, disconnecting all other calls (if any) first. For each of these types, ",
address: "+01"}},
{command: "d02b810301100082028183850c43616c6c65642070617274798609911032042143651c2c880780509595959595",
func: testSetupCall,
expect: {name: "setup_call_cmd_7",
commandQualifier: 0x00,
text: "Called party"}},
confirmMessage: "Called party",
address: "+012340123456,1,2"}},
{command: "d02281030110018202818385084475726174696f6e8609911032042143651c2c8402010a",
func: testSetupCall,
expect: {name: "setup_call_cmd_8",
commandQualifier: 0x01,
text: "Duration"}},
confirmMessage: "Duration",
address: "+012340123456,1,2",
duration: {timeUnit: icc.STK_TIME_UNIT_SECOND,
timeInterval: 0x0A}}},
{command: "d028810301100082028183850c434f4e4649524d4154494f4e8609911032042143651c2c850443414c4c",
func: testSetupCall,
expect: {name: "setup_call_cmd_9",
commandQualifier: 0x00,
text: "CONFIRMATION"}},
confirmMessage: "CONFIRMATION",
callMessage: "CALL",
address: "+012340123456,1,2"}},
{command: "d03081030110008202818385165365742075702063616c6c2049636f6e20332e312e318609911032042143651c2c9e020101",
func: testSetupCall,
expect: {name: "setup_call_cmd_10",
commandQualifier: 0x00,
text: "Set up call Icon 3.1.1"}},
confirmMessage: "Set up call Icon 3.1.1",
address: "+012340123456,1,2"}},
{command: "d03081030110008202818385165365742075702063616c6c2049636f6e20332e322e318609911032042143651c2c9e020001",
func: testSetupCall,
expect: {name: "setup_call_cmd_11",
commandQualifier: 0x00,
text: "Set up call Icon 3.2.1"}},
confirmMessage: "Set up call Icon 3.2.1",
address: "+012340123456,1,2"}},
{command: "d03081030110008202818385165365742075702063616c6c2049636f6e20332e332e318609911032042143651c2c9e020102",
func: testSetupCall,
expect: {name: "setup_call_cmd_12",
commandQualifier: 0x00,
text: "Set up call Icon 3.3.1"}},
confirmMessage: "Set up call Icon 3.3.1",
address: "+012340123456,1,2"}},
{command: "d04c81030110008202818385165365742075702063616c6c2049636f6e20332e342e318609911032042143651c2c9e02000185165365742075702063616c6c2049636f6e20332e342e329e020001",
func: testSetupCall,
expect: {name: "setup_call_cmd_13",
commandQualifier: 0x00,
text: "Set up call Icon 3.4.1"}},
confirmMessage: "Set up call Icon 3.4.1",
callMessage: "Set up call Icon 3.4.2",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_14",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032",
func: testSetupCall,
expect: {name: "setup_call_cmd_15",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e01b4d004000601b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_16",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032",
func: testSetupCall,
expect: {name: "setup_call_cmd_17",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e02b4d004000602b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_18",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032",
func: testSetupCall,
expect: {name: "setup_call_cmd_19",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e04b4d004000604b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_20",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_21",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_22",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e08b4d004000608b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_23",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_24",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_25",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e10b4d004000610b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_26",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_27",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_28",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e20b4d004000620b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_29",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_30",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_31",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e40b4d004000640b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_32",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_33",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_34",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e80b4d004000680b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_35",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032d004000e00b4d004000600b4",
func: testSetupCall,
expect: {name: "setup_call_cmd_36",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20338609911032042143651c2c850643414c4c2033",
func: testSetupCall,
expect: {name: "setup_call_cmd_37",
commandQualifier: 0x00,
text: "CONFIRMATION 3"}},
confirmMessage: "CONFIRMATION 3",
callMessage: "CALL 3",
address: "+012340123456,1,2"}},
{command: "d038810301100082028183850e434f4e4649524d4154494f4e20318609911032042143651c2c850643414c4c2031d004000e00b4d0040006004b",
func: testSetupCall,
expect: {name: "setup_call_cmd_38",
commandQualifier: 0x00,
text: "CONFIRMATION 1"}},
confirmMessage: "CONFIRMATION 1",
callMessage: "CALL 1",
address: "+012340123456,1,2"}},
{command: "d02c810301100082028183850e434f4e4649524d4154494f4e20328609911032042143651c2c850643414c4c2032",
func: testSetupCall,
expect: {name: "setup_call_cmd_39",
commandQualifier: 0x00,
text: "CONFIRMATION 2"}},
confirmMessage: "CONFIRMATION 2",
callMessage: "CALL 2",
address: "+012340123456,1,2"}},
{command: "d02d810301100082028183851980041704140420041004120421042204120423041904220415860791103204214365",
func: testSetupCall,
expect: {name: "setup_call_cmd_40",
commandQualifier: 0x00,
text: "ЗДРАВСТВУЙТЕ"}},
confirmMessage: "ЗДРАВСТВУЙТЕ",
address: "+012340123456"}},
{command: "d04c810301100082028183851b800417041404200410041204210422041204230419042204150031860791103204214365851b800417041404200410041204210422041204230419042204150032",
func: testSetupCall,
expect: {name: "setup_call_cmd_41",
commandQualifier: 0x00,
text: "ЗДРАВСТВУЙТЕ1"}},
confirmMessage: "ЗДРАВСТВУЙТЕ1",
callMessage: "ЗДРАВСТВУЙТЕ2",
address: "+012340123456"}},
{command: "d0198103011000820281838505804e0d5fd9860791103204214365",
func: testSetupCall,
expect: {name: "setup_call_cmd_42",
commandQualifier: 0x00,
text: "不忙"}},
confirmMessage: "不忙",
address: "+012340123456"}},
{command: "d022810301100082028183850580786e5b9a860791103204214365850780625375358bdd",
func: testSetupCall,
expect: {name: "setup_call_cmd_43",
commandQualifier: 0x00,
text: "确定"}},
confirmMessage: "确定",
callMessage: "打电话",
address: "+012340123456"}},
{command: "d01781030110008202818385038030eb860791103204214365",
func: testSetupCall,
expect: {name: "setup_call_cmd_44",
commandQualifier: 0x00,
text: "ル"}},
confirmMessage: "ル",
address: "+012340123456"}},
{command: "d02081030110008202818385058030eb003186079110320421436585058030eb0032",
func: testSetupCall,
expect: {name: "setup_call_cmd_45",
commandQualifier: 0x00,
text: "ル1"}},
confirmMessage: "ル1",
callMessage:"ル2",
address: "+012340123456"}},
{command: "d029810301100482028182050a446973636f6e6e6563748609811032042143651c2c05074d657373616765",
func: testSetupCall,
expect: {name: "setup_call_cmd_46",
commandQualifier: 0x04,
confirmMessage: "Disconnect",
address: "012340123456,1,2",
callMessage: "Message"}},
{command: "d02281030110008202818385084E6F7420627573798609911032042143651C2C8402010A",
func: testSetupCall,
expect: {name: "setup_call_cmd_47",
commandQualifier: 0x00,
confirmMessage: "Not busy",
address: "+012340123456,1,2",
duration: {timeUnit: icc.STK_TIME_UNIT_SECOND,
timeInterval: 0x0A}}},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -52,6 +52,7 @@ let tests = [
eventList: [7]}}
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -195,6 +195,7 @@ let tests = [
text: "80ル0"}},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -21,6 +21,25 @@ function testSetupMenu(command, expect) {
runNextTest();
}
function isFirstMenuItemNull(command) {
return (command.options.items.length == 1 && !(command.options.items[0]));
}
function testInitialSetupMenu(command) {
log("STK CMD " + JSON.stringify(command));
is(command.typeOfCommand, icc.STK_CMD_SET_UP_MENU);
is(isFirstMenuItemNull(command), false);
runNextTest();
}
function testRemoveSetupMenu(command) {
log("STK CMD " + JSON.stringify(command));
is(command.typeOfCommand, icc.STK_CMD_SET_UP_MENU);
is(isFirstMenuItemNull(command), true);
runNextTest();
}
let tests = [
{command: "d03b810301250082028182850c546f6f6c6b6974204d656e758f07014974656d20318f07024974656d20328f07034974656d20338f07044974656d2034",
func: testSetupMenu,
@ -207,9 +226,15 @@ let tests = [
expect: {name: "setup_menu_cmd_31",
commandQualifier: 0x00,
title: "80ル0",
items: [{identifier: 17, text: "80ル5"}, {identifier: 18, text: "80ル6"}]}}
items: [{identifier: 17, text: "80ル5"}, {identifier: 18, text: "80ル6"}]}},
{command: "D00D81030125008202818285008F00",
func: testRemoveSetupMenu},
{command:"D03B810301250082028182850C546F6F6C6B6974204D656E758F07014974656D20318F07024974656D20328F07034974656D20338F07044974656D2034",
func: testInitialSetupMenu},
];
// TODO - Bug 843455: Import scripts for marionette tests.
let pendingEmulatorCmdCount = 0;
function sendStkPduToEmulator(command, func, expect) {
++pendingEmulatorCmdCount;

Просмотреть файл

@ -1881,13 +1881,15 @@ let RIL = {
if (this._isEmergencyNumber(options.number)) {
this.dialEmergencyNumber(options, onerror);
} else {
// TODO: Both dial() and sendMMI() functions should be unified at some
// point in the future. In the mean time we handle temporary CLIR MMI
// commands through the dial() function. Please see bug 889737.
let mmi = this._parseMMI(options.number);
if (mmi && this._isTemporaryModeCLIR(mmi)) {
options.number = mmi.dialNumber;
options.clirMode = this._getCLIRMode(mmi);
if (!this._isCdma) {
// TODO: Both dial() and sendMMI() functions should be unified at some
// point in the future. In the mean time we handle temporary CLIR MMI
// commands through the dial() function. Please see bug 889737.
let mmi = this._parseMMI(options.number);
if (mmi && this._isTemporaryModeCLIR(mmi)) {
options.number = mmi.dialNumber;
options.clirMode = this._getCLIRMode(mmi);
}
}
this.dialNonEmergencyNumber(options, onerror);
}
@ -9551,62 +9553,14 @@ let CdmaPDUHelper = {
let StkCommandParamsFactory = {
createParam: function createParam(cmdDetails, ctlvs) {
let param;
switch (cmdDetails.typeOfCommand) {
case STK_CMD_REFRESH:
param = this.processRefresh(cmdDetails, ctlvs);
break;
case STK_CMD_POLL_INTERVAL:
param = this.processPollInterval(cmdDetails, ctlvs);
break;
case STK_CMD_POLL_OFF:
param = this.processPollOff(cmdDetails, ctlvs);
break;
case STK_CMD_PROVIDE_LOCAL_INFO:
param = this.processProvideLocalInfo(cmdDetails, ctlvs);
break;
case STK_CMD_SET_UP_EVENT_LIST:
param = this.processSetUpEventList(cmdDetails, ctlvs);
break;
case STK_CMD_SET_UP_MENU:
case STK_CMD_SELECT_ITEM:
param = this.processSelectItem(cmdDetails, ctlvs);
break;
case STK_CMD_DISPLAY_TEXT:
param = this.processDisplayText(cmdDetails, ctlvs);
break;
case STK_CMD_SET_UP_IDLE_MODE_TEXT:
param = this.processSetUpIdleModeText(cmdDetails, ctlvs);
break;
case STK_CMD_GET_INKEY:
param = this.processGetInkey(cmdDetails, ctlvs);
break;
case STK_CMD_GET_INPUT:
param = this.processGetInput(cmdDetails, ctlvs);
break;
case STK_CMD_SEND_SS:
case STK_CMD_SEND_USSD:
case STK_CMD_SEND_SMS:
case STK_CMD_SEND_DTMF:
param = this.processEventNotify(cmdDetails, ctlvs);
break;
case STK_CMD_SET_UP_CALL:
param = this.processSetupCall(cmdDetails, ctlvs);
break;
case STK_CMD_LAUNCH_BROWSER:
param = this.processLaunchBrowser(cmdDetails, ctlvs);
break;
case STK_CMD_PLAY_TONE:
param = this.processPlayTone(cmdDetails, ctlvs);
break;
case STK_CMD_TIMER_MANAGEMENT:
param = this.processTimerManagement(cmdDetails, ctlvs);
break;
default:
if (DEBUG) debug("unknown proactive command");
break;
let method = StkCommandParamsFactory[cmdDetails.typeOfCommand];
if (typeof method != "function") {
if (DEBUG) {
debug("Unknown proactive command " + cmdDetails.typeOfCommand.toString(16));
}
return null;
}
return param;
return method.call(this, cmdDetails, ctlvs);
},
/**
@ -10015,49 +9969,75 @@ let StkCommandParamsFactory = {
return timer;
}
};
StkCommandParamsFactory[STK_CMD_REFRESH] = function STK_CMD_REFRESH(cmdDetails, ctlvs) {
return this.processRefresh(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_POLL_INTERVAL] = function STK_CMD_POLL_INTERVAL(cmdDetails, ctlvs) {
return this.processPollInterval(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_POLL_OFF] = function STK_CMD_POLL_OFF(cmdDetails, ctlvs) {
return this.processPollOff(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_PROVIDE_LOCAL_INFO] = function STK_CMD_PROVIDE_LOCAL_INFO(cmdDetails, ctlvs) {
return this.processProvideLocalInfo(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SET_UP_EVENT_LIST] = function STK_CMD_SET_UP_EVENT_LIST(cmdDetails, ctlvs) {
return this.processSetUpEventList(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SET_UP_MENU] = function STK_CMD_SET_UP_MENU(cmdDetails, ctlvs) {
return this.processSelectItem(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SELECT_ITEM] = function STK_CMD_SELECT_ITEM(cmdDetails, ctlvs) {
return this.processSelectItem(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_DISPLAY_TEXT] = function STK_CMD_DISPLAY_TEXT(cmdDetails, ctlvs) {
return this.processDisplayText(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SET_UP_IDLE_MODE_TEXT] = function STK_CMD_SET_UP_IDLE_MODE_TEXT(cmdDetails, ctlvs) {
return this.processSetUpIdleModeText(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_GET_INKEY] = function STK_CMD_GET_INKEY(cmdDetails, ctlvs) {
return this.processGetInkey(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_GET_INPUT] = function STK_CMD_GET_INPUT(cmdDetails, ctlvs) {
return this.processGetInput(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SEND_SS] = function STK_CMD_SEND_SS(cmdDetails, ctlvs) {
return this.processEventNotify(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SEND_USSD] = function STK_CMD_SEND_USSD(cmdDetails, ctlvs) {
return this.processEventNotify(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SEND_SMS] = function STK_CMD_SEND_SMS(cmdDetails, ctlvs) {
return this.processEventNotify(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SEND_DTMF] = function STK_CMD_SEND_DTMF(cmdDetails, ctlvs) {
return this.processEventNotify(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_SET_UP_CALL] = function STK_CMD_SET_UP_CALL(cmdDetails, ctlvs) {
return this.processSetupCall(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_LAUNCH_BROWSER] = function STK_CMD_LAUNCH_BROWSER(cmdDetails, ctlvs) {
return this.processLaunchBrowser(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_PLAY_TONE] = function STK_CMD_PLAY_TONE(cmdDetails, ctlvs) {
return this.processPlayTone(cmdDetails, ctlvs);
};
StkCommandParamsFactory[STK_CMD_TIMER_MANAGEMENT] = function STK_CMD_TIMER_MANAGEMENT(cmdDetails, ctlvs) {
return this.processTimerManagement(cmdDetails, ctlvs);
};
let StkProactiveCmdHelper = {
retrieve: function retrieve(tag, length) {
switch (tag) {
case COMPREHENSIONTLV_TAG_COMMAND_DETAILS:
return this.retrieveCommandDetails(length);
case COMPREHENSIONTLV_TAG_DEVICE_ID:
return this.retrieveDeviceId(length);
case COMPREHENSIONTLV_TAG_ALPHA_ID:
return this.retrieveAlphaId(length);
case COMPREHENSIONTLV_TAG_DURATION:
return this.retrieveDuration(length);
case COMPREHENSIONTLV_TAG_ADDRESS:
return this.retrieveAddress(length);
case COMPREHENSIONTLV_TAG_TEXT_STRING:
return this.retrieveTextString(length);
case COMPREHENSIONTLV_TAG_TONE:
return this.retrieveTone(length);
case COMPREHENSIONTLV_TAG_ITEM:
return this.retrieveItem(length);
case COMPREHENSIONTLV_TAG_ITEM_ID:
return this.retrieveItemId(length);
case COMPREHENSIONTLV_TAG_RESPONSE_LENGTH:
return this.retrieveResponseLength(length);
case COMPREHENSIONTLV_TAG_FILE_LIST:
return this.retrieveFileList(length);
case COMPREHENSIONTLV_TAG_DEFAULT_TEXT:
return this.retrieveDefaultText(length);
case COMPREHENSIONTLV_TAG_EVENT_LIST:
return this.retrieveEventList(length);
case COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER:
return this.retrieveTimerId(length);
case COMPREHENSIONTLV_TAG_TIMER_VALUE:
return this.retrieveTimerValue(length);
case COMPREHENSIONTLV_TAG_IMMEDIATE_RESPONSE:
return this.retrieveImmediaResponse(length);
case COMPREHENSIONTLV_TAG_URL:
return this.retrieveUrl(length);
default:
if (DEBUG) debug("StkProactiveCmdHelper: unknown tag " + tag.toString(16));
Buf.seekIncoming(length * PDU_HEX_OCTET_SIZE);
return null;
let method = StkProactiveCmdHelper[tag];
if (typeof method != "function") {
if (DEBUG) {
debug("Unknown comprehension tag " + tag.toString(16));
}
Buf.seekIncoming(length * PDU_HEX_OCTET_SIZE);
return null;
}
return method.call(this, length);
},
/**
@ -10377,6 +10357,57 @@ let StkProactiveCmdHelper = {
return null;
},
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_COMMAND_DETAILS] = function COMPREHENSIONTLV_TAG_COMMAND_DETAILS(length) {
return this.retrieveCommandDetails(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_DEVICE_ID] = function COMPREHENSIONTLV_TAG_DEVICE_ID(length) {
return this.retrieveDeviceId(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_ALPHA_ID] = function COMPREHENSIONTLV_TAG_ALPHA_ID(length) {
return this.retrieveAlphaId(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_DURATION] = function COMPREHENSIONTLV_TAG_DURATION(length) {
return this.retrieveDuration(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_ADDRESS] = function COMPREHENSIONTLV_TAG_ADDRESS(length) {
return this.retrieveAddress(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_TEXT_STRING] = function COMPREHENSIONTLV_TAG_TEXT_STRING(length) {
return this.retrieveTextString(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_TONE] = function COMPREHENSIONTLV_TAG_TONE(length) {
return this.retrieveTone(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_ITEM] = function COMPREHENSIONTLV_TAG_ITEM(length) {
return this.retrieveItem(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_ITEM_ID] = function COMPREHENSIONTLV_TAG_ITEM_ID(length) {
return this.retrieveItemId(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_RESPONSE_LENGTH] = function COMPREHENSIONTLV_TAG_RESPONSE_LENGTH(length) {
return this.retrieveResponseLength(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_FILE_LIST] = function COMPREHENSIONTLV_TAG_FILE_LIST(length) {
return this.retrieveFileList(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_DEFAULT_TEXT] = function COMPREHENSIONTLV_TAG_DEFAULT_TEXT(length) {
return this.retrieveDefaultText(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_EVENT_LIST] = function COMPREHENSIONTLV_TAG_EVENT_LIST(length) {
return this.retrieveEventList(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER] = function COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER(length) {
return this.retrieveTimerId(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_TIMER_VALUE] = function COMPREHENSIONTLV_TAG_TIMER_VALUE(length) {
return this.retrieveTimerValue(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_IMMEDIATE_RESPONSE] = function COMPREHENSIONTLV_TAG_IMMEDIATE_RESPONSE(length) {
return this.retrieveImmediaResponse(length);
};
StkProactiveCmdHelper[COMPREHENSIONTLV_TAG_URL] = function COMPREHENSIONTLV_TAG_URL(length) {
return this.retrieveUrl(length);
};
let ComprehensionTlvHelper = {
/**

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,927 @@
/* 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 newUint8Worker() {
let worker = newWorker();
let index = 0; // index for read
let buf = [];
worker.Buf.writeUint8 = function (value) {
buf.push(value);
};
worker.Buf.readUint8 = function () {
return buf[index++];
};
worker.Buf.seekIncoming = function (offset) {
index += offset;
};
worker.debug = do_print;
return worker;
}
function newUint8SupportOutgoingIndexWorker() {
let worker = newWorker();
let index = 4; // index for read
let buf = [0, 0, 0, 0]; // Preserved parcel size
worker.Buf.writeUint8 = function (value) {
if (worker.Buf.outgoingIndex >= buf.length) {
buf.push(value);
} else {
buf[worker.Buf.outgoingIndex] = value;
}
worker.Buf.outgoingIndex++;
};
worker.Buf.readUint8 = function () {
return buf[index++];
};
worker.Buf.seekIncoming = function (offset) {
index += offset;
};
worker.debug = do_print;
return worker;
}
// Test RIL requests related to STK.
/**
* Verify RIL.sendStkTerminalProfile
*/
add_test(function test_send_stk_terminal_profile() {
let worker = newUint8Worker();
let ril = worker.RIL;
let buf = worker.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++) {
do_check_eq(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 buf = worker.Buf;
let pduHelper = worker.GsmPDUHelper;
buf.sendParcel = function () {
// Type
do_check_eq(this.readUint32(), REQUEST_STK_SEND_TERMINAL_RESPONSE);
// Token : we don't care
this.readUint32();
// Data Size, 44 = 2 * (TLV_COMMAND_DETAILS_SIZE(5) +
// TLV_DEVICE_ID_SIZE(4) +
// TLV_RESULT_SIZE(3) +
// TEXT LENGTH(10))
do_check_eq(this.readUint32(), 44);
// Command Details, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_COMMAND_DETAILS |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 3);
do_check_eq(pduHelper.readHexOctet(), 0x01);
do_check_eq(pduHelper.readHexOctet(), STK_CMD_PROVIDE_LOCAL_INFO);
do_check_eq(pduHelper.readHexOctet(), STK_LOCAL_INFO_NNA);
// Device Identifies, Type-Length-Value(Source ID-Destination ID)
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID);
do_check_eq(pduHelper.readHexOctet(), 2);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_ME);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM);
// Result
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_RESULT |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 1);
do_check_eq(pduHelper.readHexOctet(), STK_RESULT_OK);
// Text
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_TEXT_STRING |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 8);
do_check_eq(pduHelper.readHexOctet(), STK_TEXT_CODING_GSM_7BIT_PACKED);
do_check_eq(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
};
worker.RIL.sendStkTerminalResponse(response);
});
// Test ComprehensionTlvHelper
/**
* Verify ComprehensionTlvHelper.writeLocationInfoTlv
*/
add_test(function test_write_location_info_tlv() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let tlvHelper = worker.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();
do_check_eq(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO |
COMPREHENSIONTLV_FLAG_CR);
let length = pduHelper.readHexOctet();
do_check_eq(length, 9);
let mcc_mnc = pduHelper.readSwappedNibbleBcdString(3);
do_check_eq(mcc_mnc, "46692");
let lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet();
do_check_eq(lac, 10291);
let cellId = (pduHelper.readHexOctet() << 24) |
(pduHelper.readHexOctet() << 16) |
(pduHelper.readHexOctet() << 8) |
(pduHelper.readHexOctet());
do_check_eq(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();
do_check_eq(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO |
COMPREHENSIONTLV_FLAG_CR);
length = pduHelper.readHexOctet();
do_check_eq(length, 7);
mcc_mnc = pduHelper.readSwappedNibbleBcdString(3);
do_check_eq(mcc_mnc, "46602");
lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet();
do_check_eq(lac, 10291);
cellId = (pduHelper.readHexOctet() << 8) | (pduHelper.readHexOctet());
do_check_eq(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();
do_check_eq(tag, COMPREHENSIONTLV_TAG_LOCATION_INFO |
COMPREHENSIONTLV_FLAG_CR);
length = pduHelper.readHexOctet();
do_check_eq(length, 7);
mcc_mnc = pduHelper.readSwappedNibbleBcdString(3);
do_check_eq(mcc_mnc, "466222");
lac = (pduHelper.readHexOctet() << 8) | pduHelper.readHexOctet();
do_check_eq(lac, 10291);
cellId = (pduHelper.readHexOctet() << 8) | (pduHelper.readHexOctet());
do_check_eq(cellId, 65534);
run_next_test();
});
/**
* Verify ComprehensionTlvHelper.writeErrorNumber
*/
add_test(function test_write_disconnecting_cause() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let tlvHelper = worker.ComprehensionTlvHelper;
tlvHelper.writeCauseTlv(RIL_ERROR_TO_GECKO_ERROR[ERROR_GENERIC_FAILURE]);
let tag = pduHelper.readHexOctet();
do_check_eq(tag, COMPREHENSIONTLV_TAG_CAUSE | COMPREHENSIONTLV_FLAG_CR);
let len = pduHelper.readHexOctet();
do_check_eq(len, 2); // We have one cause.
let standard = pduHelper.readHexOctet();
do_check_eq(standard, 0x60);
let cause = pduHelper.readHexOctet();
do_check_eq(cause, 0x80 | ERROR_GENERIC_FAILURE);
run_next_test();
});
/**
* Verify ComprehensionTlvHelper.getSizeOfLengthOctets
*/
add_test(function test_get_size_of_length_octets() {
let worker = newUint8Worker();
let tlvHelper = worker.ComprehensionTlvHelper;
let length = 0x70;
do_check_eq(tlvHelper.getSizeOfLengthOctets(length), 1);
length = 0x80;
do_check_eq(tlvHelper.getSizeOfLengthOctets(length), 2);
length = 0x180;
do_check_eq(tlvHelper.getSizeOfLengthOctets(length), 3);
length = 0x18000;
do_check_eq(tlvHelper.getSizeOfLengthOctets(length), 4);
run_next_test();
});
/**
* Verify ComprehensionTlvHelper.writeLength
*/
add_test(function test_write_length() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let tlvHelper = worker.ComprehensionTlvHelper;
let length = 0x70;
tlvHelper.writeLength(length);
do_check_eq(pduHelper.readHexOctet(), length);
length = 0x80;
tlvHelper.writeLength(length);
do_check_eq(pduHelper.readHexOctet(), 0x81);
do_check_eq(pduHelper.readHexOctet(), length);
length = 0x180;
tlvHelper.writeLength(length);
do_check_eq(pduHelper.readHexOctet(), 0x82);
do_check_eq(pduHelper.readHexOctet(), (length >> 8) & 0xff);
do_check_eq(pduHelper.readHexOctet(), length & 0xff);
length = 0x18000;
tlvHelper.writeLength(length);
do_check_eq(pduHelper.readHexOctet(), 0x83);
do_check_eq(pduHelper.readHexOctet(), (length >> 16) & 0xff);
do_check_eq(pduHelper.readHexOctet(), (length >> 8) & 0xff);
do_check_eq(pduHelper.readHexOctet(), length & 0xff);
run_next_test();
});
// Test Proactive commands.
/**
* Verify Proactive Command : Refresh
*/
add_test(function test_stk_proactive_command_refresh() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let refresh_1 = [
0xD0,
0x10,
0x81, 0x03, 0x01, 0x01, 0x01,
0x82, 0x02, 0x81, 0x82,
0x92, 0x05, 0x01, 0x3F, 0x00, 0x2F, 0xE2];
for (let i = 0; i < refresh_1.length; i++) {
pduHelper.writeHexOctet(refresh_1[i]);
}
let berTlv = berHelper.decode(refresh_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, 0x01);
do_check_eq(tlv.value.commandQualifier, 0x01);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_FILE_LIST, ctlvs);
do_check_eq(tlv.value.fileList, "3F002FE2");
run_next_test();
});
/**
* Verify Proactive Command : Play Tone
*/
add_test(function test_stk_proactive_command_play_tone() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let tone_1 = [
0xD0,
0x1B,
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];
for (let i = 0; i < tone_1.length; i++) {
pduHelper.writeHexOctet(tone_1[i]);
}
let berTlv = berHelper.decode(tone_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, 0x20);
do_check_eq(tlv.value.commandQualifier, 0x00);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_ALPHA_ID, ctlvs);
do_check_eq(tlv.value.identifier, "Dial Tone");
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_TONE, ctlvs);
do_check_eq(tlv.value.tone, STK_TONE_TYPE_DIAL_TONE);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_DURATION, ctlvs);
do_check_eq(tlv.value.timeUnit, STK_TIME_UNIT_SECOND);
do_check_eq(tlv.value.timeInterval, 5);
run_next_test();
});
/**
* Verify Proactive Command : Poll Interval
*/
add_test(function test_stk_proactive_command_poll_interval() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let poll_1 = [
0xD0,
0x0D,
0x81, 0x03, 0x01, 0x03, 0x00,
0x82, 0x02, 0x81, 0x82,
0x84, 0x02, 0x01, 0x14];
for (let i = 0; i < poll_1.length; i++) {
pduHelper.writeHexOctet(poll_1[i]);
}
let berTlv = berHelper.decode(poll_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, 0x03);
do_check_eq(tlv.value.commandQualifier, 0x00);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_DURATION, ctlvs);
do_check_eq(tlv.value.timeUnit, STK_TIME_UNIT_SECOND);
do_check_eq(tlv.value.timeInterval, 0x14);
run_next_test();
});
/**
* Verify Proactive Command: Display Text
*/
add_test(function test_read_septets_to_string() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let display_text_1 = [
0xd0,
0x28,
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,
];
for (let i = 0; i < display_text_1.length; i++) {
pduHelper.writeHexOctet(display_text_1[i]);
}
let berTlv = berHelper.decode(display_text_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_TEXT_STRING, ctlvs);
do_check_eq(tlv.value.textString, "Saldo 2.04 E. Validez 20/05/13. ");
run_next_test();
});
/**
* Verify Proactive Command: Set Up Event List.
*/
add_test(function test_stk_proactive_command_event_list() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let event_1 = [
0xD0,
0x0F,
0x81, 0x03, 0x01, 0x05, 0x00,
0x82, 0x02, 0x81, 0x82,
0x99, 0x04, 0x00, 0x01, 0x02, 0x03];
for (let i = 0; i < event_1.length; i++) {
pduHelper.writeHexOctet(event_1[i]);
}
let berTlv = berHelper.decode(event_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, 0x05);
do_check_eq(tlv.value.commandQualifier, 0x00);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_EVENT_LIST, ctlvs);
do_check_eq(Array.isArray(tlv.value.eventList), true);
for (let i = 0; i < tlv.value.eventList.length; i++) {
do_check_eq(tlv.value.eventList[i], i);
}
run_next_test();
});
/**
* Verify Proactive Command : Get Input
*/
add_test(function test_stk_proactive_command_get_input() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let stkCmdHelper = worker.StkCommandParamsFactory;
let get_input_1 = [
0xD0,
0x1E,
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];
for (let i = 0; i < get_input_1.length; i++) {
pduHelper.writeHexOctet(get_input_1[i]);
}
let berTlv = berHelper.decode(get_input_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_GET_INPUT);
let input = stkCmdHelper.createParam(tlv.value, ctlvs);
do_check_eq(input.text, "Text");
do_check_eq(input.isAlphabet, true);
do_check_eq(input.isUCS2, true);
do_check_eq(input.hideInput, true);
do_check_eq(input.isPacked, true);
do_check_eq(input.isHelpAvailable, true);
do_check_eq(input.minLength, 0x01);
do_check_eq(input.maxLength, 0x10);
do_check_eq(input.defaultText, "Default");
let get_input_2 = [
0xD0,
0x11,
0x81, 0x03, 0x01, 0x23, 0x00,
0x82, 0x02, 0x81, 0x82,
0x8D, 0x00,
0x91, 0x02, 0x01, 0x10,
0x17, 0x00];
for (let i = 0; i < get_input_2.length; i++) {
pduHelper.writeHexOctet(get_input_2[i]);
}
berTlv = berHelper.decode(get_input_2.length);
ctlvs = berTlv.value;
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_GET_INPUT);
input = stkCmdHelper.createParam(tlv.value, ctlvs);
do_check_eq(input.text, null);
do_check_eq(input.minLength, 0x01);
do_check_eq(input.maxLength, 0x10);
do_check_eq(input.defaultText, null);
run_next_test();
});
/**
* Verify Proactive Command : More Time
*/
add_test(function test_stk_proactive_command_more_time() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.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);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_MORE_TIME);
do_check_eq(tlv.value.commandQualifier, 0x00);
run_next_test();
});
/**
* Verify Proactive Command : Set Up Call
*/
add_test(function test_stk_proactive_command_set_up_call() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
let cmdFactory = worker.StkCommandParamsFactory;
let set_up_call_1 = [
0xD0,
0x29,
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];
for (let i = 0 ; i < set_up_call_1.length; i++) {
pduHelper.writeHexOctet(set_up_call_1[i]);
}
let berTlv = berHelper.decode(set_up_call_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_SET_UP_CALL);
let setupCall = cmdFactory.createParam(tlv.value, ctlvs);
do_check_eq(setupCall.address, "012340123456,1,2");
do_check_eq(setupCall.confirmMessage, "Disconnect");
do_check_eq(setupCall.callMessage, "Message");
run_next_test();
});
/**
* Verify Proactive Command : Timer Management
*/
add_test(function test_stk_proactive_command_timer_management() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
// Timer Management - Start
let timer_management_1 = [
0xD0,
0x11,
0x81, 0x03, 0x01, 0x27, 0x00,
0x82, 0x02, 0x81, 0x82,
0xA4, 0x01, 0x01,
0xA5, 0x03, 0x10, 0x20, 0x30
];
for(let i = 0 ; i < timer_management_1.length; i++) {
pduHelper.writeHexOctet(timer_management_1[i]);
}
let berTlv = berHelper.decode(timer_management_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_TIMER_MANAGEMENT);
do_check_eq(tlv.value.commandQualifier, STK_TIMER_START);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER, ctlvs);
do_check_eq(tlv.value.timerId, 0x01);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_TIMER_VALUE, ctlvs);
do_check_eq(tlv.value.timerValue, (0x01 * 60 * 60) + (0x02 * 60) + 0x03);
// Timer Management - Deactivate
let timer_management_2 = [
0xD0,
0x0C,
0x81, 0x03, 0x01, 0x27, 0x01,
0x82, 0x02, 0x81, 0x82,
0xA4, 0x01, 0x01
];
for(let i = 0 ; i < timer_management_2.length; i++) {
pduHelper.writeHexOctet(timer_management_2[i]);
}
berTlv = berHelper.decode(timer_management_2.length);
ctlvs = berTlv.value;
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_TIMER_MANAGEMENT);
do_check_eq(tlv.value.commandQualifier, STK_TIMER_DEACTIVATE);
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_TIMER_IDENTIFIER, ctlvs);
do_check_eq(tlv.value.timerId, 0x01);
run_next_test();
});
/**
* Verify Proactive Command : Provide Local Information
*/
add_test(function test_stk_proactive_command_provide_local_information() {
let worker = newUint8Worker();
let pduHelper = worker.GsmPDUHelper;
let berHelper = worker.BerTlvHelper;
let stkHelper = worker.StkProactiveCmdHelper;
// Verify IMEI
let local_info_1 = [
0xD0,
0x09,
0x81, 0x03, 0x01, 0x26, 0x01,
0x82, 0x02, 0x81, 0x82];
for (let i = 0; i < local_info_1.length; i++) {
pduHelper.writeHexOctet(local_info_1[i]);
}
let berTlv = berHelper.decode(local_info_1.length);
let ctlvs = berTlv.value;
let tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_PROVIDE_LOCAL_INFO);
do_check_eq(tlv.value.commandQualifier, STK_LOCAL_INFO_IMEI);
// Verify Date and Time Zone
let local_info_2 = [
0xD0,
0x09,
0x81, 0x03, 0x01, 0x26, 0x03,
0x82, 0x02, 0x81, 0x82];
for (let i = 0; i < local_info_2.length; i++) {
pduHelper.writeHexOctet(local_info_2[i]);
}
berTlv = berHelper.decode(local_info_2.length);
ctlvs = berTlv.value;
tlv = stkHelper.searchForTag(COMPREHENSIONTLV_TAG_COMMAND_DETAILS, ctlvs);
do_check_eq(tlv.value.commandNumber, 0x01);
do_check_eq(tlv.value.typeOfCommand, STK_CMD_PROVIDE_LOCAL_INFO);
do_check_eq(tlv.value.commandQualifier, STK_LOCAL_INFO_DATE_TIME_ZONE);
run_next_test();
});
/**
* Verify Event Download Command : Location Status
*/
add_test(function test_stk_event_download_location_status() {
let worker = newUint8SupportOutgoingIndexWorker();
let buf = worker.Buf;
let pduHelper = worker.GsmPDUHelper;
buf.sendParcel = function () {
// Type
do_check_eq(this.readUint32(), REQUEST_STK_SEND_ENVELOPE_COMMAND);
// Token : we don't care
this.readUint32();
// 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))
do_check_eq(this.readUint32(), 42);
// BER tag
do_check_eq(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)
do_check_eq(pduHelper.readHexOctet(), 19);
// Device Identifies, Type-Length-Value(Source ID-Destination ID)
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 2);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_ME);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM);
// Event List, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 1);
do_check_eq(pduHelper.readHexOctet(), STK_EVENT_TYPE_LOCATION_STATUS);
// Location Status, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LOCATION_STATUS |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 1);
do_check_eq(pduHelper.readHexOctet(), STK_SERVICE_STATE_NORMAL);
// Location Info, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LOCATION_INFO |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 7);
do_check_eq(pduHelper.readHexOctet(), 0x21); // MCC + MNC
do_check_eq(pduHelper.readHexOctet(), 0x63);
do_check_eq(pduHelper.readHexOctet(), 0x54);
do_check_eq(pduHelper.readHexOctet(), 0); // LAC
do_check_eq(pduHelper.readHexOctet(), 0);
do_check_eq(pduHelper.readHexOctet(), 0); // Cell ID
do_check_eq(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
}
};
worker.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 buf = worker.Buf;
let pduHelper = worker.GsmPDUHelper;
buf.sendParcel = function () {
// Type
do_check_eq(this.readUint32(), REQUEST_STK_SEND_ENVELOPE_COMMAND);
// Token : we don't care
this.readUint32();
// Data Size, 26 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) +
// TLV_EVENT_LIST_SIZE(3) +
// TLV_LANGUAGE(4))
do_check_eq(this.readUint32(), 26);
// BER tag
do_check_eq(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG);
// BER length, 19 = TLV_DEVICE_ID_SIZE(4) +
// TLV_EVENT_LIST_SIZE(3) +
// TLV_LANGUAGE(4)
do_check_eq(pduHelper.readHexOctet(), 11);
// Device Identifies, Type-Length-Value(Source ID-Destination ID)
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 2);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_ME);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM);
// Event List, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 1);
do_check_eq(pduHelper.readHexOctet(), STK_EVENT_TYPE_LANGUAGE_SELECTION);
// Language, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_LANGUAGE);
do_check_eq(pduHelper.readHexOctet(), 2);
do_check_eq(pduHelper.read8BitUnpackedToString(2), "zh");
run_next_test();
};
let event = {
eventType: STK_EVENT_TYPE_LANGUAGE_SELECTION,
language: "zh"
};
worker.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 buf = worker.Buf;
let pduHelper = worker.GsmPDUHelper;
buf.sendParcel = function () {
// Type
do_check_eq(this.readUint32(), REQUEST_STK_SEND_ENVELOPE_COMMAND);
// Token : we don't care
this.readUint32();
// Data Size, 18 = 2 * (2 + TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3))
do_check_eq(this.readUint32(), 18);
// BER tag
do_check_eq(pduHelper.readHexOctet(), BER_EVENT_DOWNLOAD_TAG);
// BER length, 7 = TLV_DEVICE_ID_SIZE(4) + TLV_EVENT_LIST_SIZE(3)
do_check_eq(pduHelper.readHexOctet(), 7);
// Device Identities, Type-Length-Value(Source ID-Destination ID)
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_DEVICE_ID |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 2);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_DISPLAY);
do_check_eq(pduHelper.readHexOctet(), STK_DEVICE_ID_SIM);
// Event List, Type-Length-Value
do_check_eq(pduHelper.readHexOctet(), COMPREHENSIONTLV_TAG_EVENT_LIST |
COMPREHENSIONTLV_FLAG_CR);
do_check_eq(pduHelper.readHexOctet(), 1);
do_check_eq(pduHelper.readHexOctet(), STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE);
run_next_test();
};
let event = {
eventType: STK_EVENT_TYPE_IDLE_SCREEN_AVAILABLE
};
worker.RIL.sendStkEventDownload({
event: event
});
});

Просмотреть файл

@ -16,3 +16,4 @@ tail =
[test_ril_worker_ssn.js]
[test_ril_worker_voiceprivacy.js]
[test_ril_worker_ecm.js]
[test_ril_worker_stk.js]

Просмотреть файл

@ -110,17 +110,24 @@ nsEventStatus GestureEventListener::HandleInputEvent(const InputData& aEvent)
HandleTapCancel(event);
}
bool foundAlreadyExistingTouch = false;
size_t eventTouchesMatched = 0;
for (size_t i = 0; i < mTouches.Length(); i++) {
bool isTouchRemoved = true;
for (size_t j = 0; j < event.mTouches.Length(); j++) {
if (mTouches[i].mIdentifier == event.mTouches[j].mIdentifier) {
foundAlreadyExistingTouch = true;
eventTouchesMatched++;
isTouchRemoved = false;
mTouches[i] = event.mTouches[j];
}
}
if (isTouchRemoved) {
// this touch point was lifted, so remove it from our list
mTouches.RemoveElementAt(i);
i--;
}
}
NS_WARN_IF_FALSE(foundAlreadyExistingTouch, "Touch moved, but not in list");
NS_WARN_IF_FALSE(eventTouchesMatched == event.mTouches.Length(), "Touch moved, but not in list");
break;
}

Просмотреть файл

@ -92,8 +92,8 @@ AddonLogger.prototype = {
Ci.nsIScriptError.errorFlag, "component javascript");
Services.console.logMessage(consoleMessage);
if (gDebugLogEnabled)
dump("*** " + message + "\n");
// Always dump errors, in case the Console Service isn't listening yet
dump("*** " + message + "\n");
try {
var tstamp = new Date();

Просмотреть файл

@ -38,7 +38,7 @@ const DEFAULT_SAVE_DELAY_MS = 50;
* that marks the data as needing to be saved, and when the DeferredSave
* begins writing the data to disk. Default 50 milliseconds.
*/
function DeferredSave(aPath, aDataProvider, aDelay) {
this.DeferredSave = function (aPath, aDataProvider, aDelay) {
// Set up loggers for this instance of DeferredSave
let leafName = OS.Path.basename(aPath);
Cu.import("resource://gre/modules/AddonLogging.jsm");
@ -87,7 +87,7 @@ function DeferredSave(aPath, aDataProvider, aDelay) {
this._delay = DEFAULT_SAVE_DELAY_MS;
}
DeferredSave.prototype = {
this.DeferredSave.prototype = {
get dirty() {
return this._pending || this.writeInProgress;
},

Просмотреть файл

@ -192,9 +192,10 @@ var gLazyObjectsLoaded = false;
function loadLazyObjects() {
let scope = {};
scope.AddonInternal = AddonInternal;
scope.XPIProvider = XPIProvider;
Services.scriptloader.loadSubScript("resource://gre/modules/XPIProviderUtils.js",
scope);
scope.XPIProvider = XPIProvider;
for (let name of LAZY_OBJECTS) {
delete gGlobalScope[name];
@ -2803,8 +2804,10 @@ var XPIProvider = {
newAddon = loadManifestFromFile(file);
}
// The add-on in the manifest should match the add-on ID.
if (newAddon.id != aId)
throw new Error("Incorrect id in install manifest");
if (newAddon.id != aId) {
throw new Error("Invalid addon ID: expected addon ID " + aId +
", found " + newAddon.id + " in manifest");
}
}
catch (e) {
WARN("Add-on is invalid", e);
@ -4246,7 +4249,6 @@ var XPIProvider = {
}
};
function getHashStringForCrypto(aCrypto) {
// return the two-digit hexadecimal code for a byte
function toHexString(charCode)

Просмотреть файл

@ -12,6 +12,8 @@ const Cu = Components.utils;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "AddonManager",
"resource://gre/modules/AddonManager.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "AddonRepository",
"resource://gre/modules/AddonRepository.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",

Просмотреть файл

@ -163,6 +163,10 @@ GonkDisplayICS::GetHWCDevice()
bool
GonkDisplayICS::SwapBuffers(EGLDisplay dpy, EGLSurface sur)
{
// Should be called when composition rendering is complete for a frame.
// Only HWC v1.0 needs this call. ICS gonk always needs the call.
mFBSurface->compositionComplete();
if (!mHwc)
return eglSwapBuffers(dpy, sur);

Просмотреть файл

@ -166,6 +166,13 @@ GonkDisplayJB::SwapBuffers(EGLDisplay dpy, EGLSurface sur)
StopBootAnimation();
mBootAnimBuffer = nullptr;
// Should be called when composition rendering is complete for a frame.
// Only HWC v1.0 needs this call.
// HWC > v1.0 case, do not call compositionComplete().
// mFBDevice is present only when HWC is v1.0.
if (mFBDevice && mFBDevice->compositionComplete) {
mFBDevice->compositionComplete(mFBDevice);
}
mList->outbuf = nullptr;
mList->outbufAcquireFenceFd = -1;
eglSwapBuffers(dpy, sur);