mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
245 lines
7.1 KiB
JavaScript
245 lines
7.1 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 30000;
|
|
|
|
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);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_LOCAL_INFO_LOCATION_INFO);
|
|
is(cmd.options.localInfoType, icc.STK_LOCAL_INFO_LOCATION_INFO);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testLocalInfoImei(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_PROVIDE_LOCAL_INFO);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_LOCAL_INFO_IMEI);
|
|
is(cmd.options.localInfoType, icc.STK_LOCAL_INFO_IMEI);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testLocalInfoDate(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_PROVIDE_LOCAL_INFO);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_LOCAL_INFO_DATE_TIME_ZONE);
|
|
is(cmd.options.localInfoType, icc.STK_LOCAL_INFO_DATE_TIME_ZONE);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testLocalInfoLanguage(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_PROVIDE_LOCAL_INFO);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_LOCAL_INFO_LANGUAGE);
|
|
is(cmd.options.localInfoType, icc.STK_LOCAL_INFO_LANGUAGE);
|
|
|
|
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);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, 0x01);
|
|
is(cmd.options, null);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testTimerManagementStart(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_TIMER_MANAGEMENT);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_TIMER_START);
|
|
is(cmd.options.timerAction, icc.STK_TIMER_START);
|
|
is(cmd.options.timerId, 0x01);
|
|
is(cmd.options.timerValue, (0x01 * 60 * 60) + (0x02 * 60) + 0x03);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testTimerManagementDeactivate(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_TIMER_MANAGEMENT);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_TIMER_DEACTIVATE);
|
|
is(cmd.options.timerAction, icc.STK_TIMER_DEACTIVATE);
|
|
is(cmd.options.timerId, 0x04);
|
|
|
|
runNextTest();
|
|
}
|
|
|
|
function testTimerManagementGetCurrentValue(cmd) {
|
|
log("STK CMD " + JSON.stringify(cmd));
|
|
is(cmd.typeOfCommand, icc.STK_CMD_TIMER_MANAGEMENT);
|
|
is(cmd.commandNumber, 0x01);
|
|
is(cmd.commandQualifier, icc.STK_TIMER_GET_CURRENT_VALUE);
|
|
is(cmd.options.timerAction, icc.STK_TIMER_GET_CURRENT_VALUE);
|
|
is(cmd.options.timerId, 0x08);
|
|
|
|
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",
|
|
func: testLocalInfoImei},
|
|
{command: "d009810301260382028182",
|
|
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) {
|
|
++pendingEmulatorCmdCount;
|
|
|
|
runEmulatorCmd(cmd, function (result) {
|
|
--pendingEmulatorCmdCount;
|
|
is(result[0], "OK");
|
|
});
|
|
|
|
icc.onstkcommand = function (evt) {
|
|
func(evt.command);
|
|
}
|
|
}
|
|
|
|
function runNextTest() {
|
|
let test = tests.pop();
|
|
if (!test) {
|
|
cleanUp();
|
|
return;
|
|
}
|
|
|
|
let cmd = "stk pdu " + test.command;
|
|
sendStkPduToEmulator(cmd, test.func)
|
|
}
|
|
|
|
function cleanUp() {
|
|
if (pendingEmulatorCmdCount) {
|
|
window.setTimeout(cleanUp, 100);
|
|
return;
|
|
}
|
|
|
|
SpecialPowers.removePermission("mobileconnection", document);
|
|
finish();
|
|
}
|
|
|
|
runNextTest();
|