mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 22:25:30 +00:00
99 lines
3.2 KiB
JavaScript
99 lines
3.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 60000;
|
|
MARIONETTE_HEAD_JS = "head.js";
|
|
|
|
// Password is hardcoded as "0000" by default in emulator.
|
|
const PASSWORD = "0000";
|
|
// Emulator doesn't support BA_ALL(330), BA_MO(333), BA_MT(353).
|
|
const CB_TYPES = ["33", "331", "332", "35", "351"];
|
|
const CB_TYPES_UNSUPPORTED = ["330", "333", "353"];
|
|
// Basic Service - 10: Voice + Fax + SMS.
|
|
const BS = "10";
|
|
const MMI_SERVICE_CLASS = ["serviceClassVoice", "serviceClassFax",
|
|
"serviceClassSms"];
|
|
// Call barring doesn't support Registration (**) and Erasure (##) operation.
|
|
const OPERATION_UNSUPPORTED = ["**", "##"];
|
|
|
|
function sendCbMMI(aOperation, aType, aExpectedSuccess, aExpectedStatusMessage) {
|
|
let mmi = aOperation + aType + "*" + PASSWORD + "*" + BS + "#";
|
|
log("Test " + mmi + " ...");
|
|
|
|
return gSendMMI(mmi)
|
|
.then((aResult) => {
|
|
is(aResult.success, aExpectedSuccess, "Check success");
|
|
is(aResult.serviceCode, "scCallBarring", "Check serviceCode");
|
|
is(aResult.statusMessage, aExpectedStatusMessage, "Check statusMessage");
|
|
return aResult;
|
|
});
|
|
}
|
|
|
|
function testCallBarring(aEnabled) {
|
|
let promise = Promise.resolve();
|
|
|
|
CB_TYPES.forEach(function(aType) {
|
|
promise = promise
|
|
// Test setting call barring.
|
|
.then(() => sendCbMMI(aEnabled ? "*" : "#", aType, true,
|
|
aEnabled ? "smServiceEnabled" : "smServiceDisabled"))
|
|
// Test getting call barring.
|
|
.then(() => sendCbMMI("*#", aType, true,
|
|
aEnabled ? "smServiceEnabledFor": "smServiceDisabled"))
|
|
.then(aResult => {
|
|
if (aEnabled) {
|
|
is(aResult.additionalInformation.length, MMI_SERVICE_CLASS.length,
|
|
"Check additionalInformation.length");
|
|
for (let i = 0; i < MMI_SERVICE_CLASS.length; i++) {
|
|
is(aResult.additionalInformation[i], MMI_SERVICE_CLASS[i],
|
|
"Check additionalInformation[" + i + "]");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
return promise;
|
|
}
|
|
|
|
function testUnsupportType() {
|
|
let promise = Promise.resolve();
|
|
|
|
CB_TYPES_UNSUPPORTED.forEach(function(aType) {
|
|
promise = promise
|
|
// Test setting call barring.
|
|
.then(() => sendCbMMI("*", aType, false, "RequestNotSupported"))
|
|
// Test getting call barring.
|
|
.then(() => sendCbMMI("*#", aType, false, "RequestNotSupported"));
|
|
});
|
|
|
|
return promise;
|
|
}
|
|
|
|
function testUnsupportedOperation() {
|
|
let promise = Promise.resolve();
|
|
|
|
let types = CB_TYPES.concat(CB_TYPES_UNSUPPORTED);
|
|
types.forEach(function(aType) {
|
|
OPERATION_UNSUPPORTED.forEach(function(aOperation) {
|
|
promise = promise
|
|
.then(() => sendCbMMI(aOperation, aType, false,
|
|
"emMmiErrorNotSupported"));
|
|
});
|
|
});
|
|
|
|
return promise;
|
|
}
|
|
|
|
// Start test.
|
|
startTest(function() {
|
|
// Activate call barring service.
|
|
return testCallBarring(true)
|
|
// Deactivate call barring service.
|
|
.then(() => testCallBarring(false))
|
|
.then(() => testUnsupportType())
|
|
.then(() => testUnsupportedOperation())
|
|
|
|
.catch(error => ok(false, "Promise reject: " + error))
|
|
.then(finish);;
|
|
});
|