mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-02 01:48:05 +00:00
Bug 797972 - Part 2/2: test cases, r=marshall_law
This commit is contained in:
parent
c81de95bb3
commit
6c73e17aa4
@ -5,6 +5,9 @@ MARIONETTE_TIMEOUT = 60000;
|
||||
|
||||
SpecialPowers.addPermission("mobileconnection", true, document);
|
||||
|
||||
const OPERATOR_HOME = 0;
|
||||
const OPERATOR_ROAMING = 1;
|
||||
|
||||
let connection = navigator.mozMobileConnection;
|
||||
ok(connection instanceof MozMobileConnection,
|
||||
"connection is instanceof " + connection.constructor);
|
||||
@ -16,15 +19,37 @@ let network = voice.network;
|
||||
ok(network, "voice network info valid");
|
||||
|
||||
let emulatorCmdPendingCount = 0;
|
||||
function setEmulatorOperatorNames(longName, shortName) {
|
||||
function sendEmulatorCommand(cmd, callback) {
|
||||
emulatorCmdPendingCount++;
|
||||
|
||||
let cmd = "operator set 0 " + longName + "," + shortName;
|
||||
runEmulatorCmd(cmd, function (result) {
|
||||
emulatorCmdPendingCount--;
|
||||
|
||||
is(result[result.length - 1], "OK");
|
||||
|
||||
callback(result);
|
||||
});
|
||||
}
|
||||
|
||||
function setEmulatorOperatorNames(which, longName, shortName, callback) {
|
||||
let cmd = "operator set " + which + " " + longName + "," + shortName;
|
||||
sendEmulatorCommand(cmd, function (result) {
|
||||
let re = new RegExp("^" + longName + "," + shortName + ",");
|
||||
ok(result[0].match(re), "Long/short name should be changed.");
|
||||
ok(result[which].match(re), "Long/short name should be changed.");
|
||||
|
||||
if (callback) {
|
||||
window.setTimeout(callback, 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function setEmulatorRoaming(roaming, callback) {
|
||||
let cmd = "gsm voice " + (roaming ? "roaming" : "home");
|
||||
sendEmulatorCommand(cmd, function (result) {
|
||||
is(result[0], "OK");
|
||||
|
||||
if (callback) {
|
||||
window.setTimeout(callback, 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -33,23 +58,28 @@ function checkValidMccMnc() {
|
||||
is(network.mnc, 260, "network.mnc");
|
||||
}
|
||||
|
||||
function waitForVoiceChange(callback) {
|
||||
connection.addEventListener("voicechange", function onvoicechange() {
|
||||
connection.removeEventListener("voicechange", onvoicechange);
|
||||
callback();
|
||||
});
|
||||
}
|
||||
|
||||
function doTestMobileOperatorNames(longName, shortName, callback) {
|
||||
log("Testing '" + longName + "', '" + shortName + "':");
|
||||
|
||||
checkValidMccMnc();
|
||||
|
||||
connection.addEventListener("voicechange", function onvoicechange() {
|
||||
connection.removeEventListener("voicechange", onvoicechange);
|
||||
|
||||
waitForVoiceChange(function () {
|
||||
is(network.longName, longName, "network.longName");
|
||||
is(network.shortName, shortName, "network.shortName");
|
||||
|
||||
checkValidMccMnc();
|
||||
|
||||
setTimeout(callback, 0);
|
||||
window.setTimeout(callback, 0);
|
||||
});
|
||||
|
||||
setEmulatorOperatorNames(longName, shortName);
|
||||
setEmulatorOperatorNames(OPERATOR_HOME, longName, shortName);
|
||||
}
|
||||
|
||||
function testMobileOperatorNames() {
|
||||
@ -57,7 +87,69 @@ function testMobileOperatorNames() {
|
||||
doTestMobileOperatorNames("Mozilla", "", function () {
|
||||
doTestMobileOperatorNames("", "B2G", function () {
|
||||
doTestMobileOperatorNames("", "", function () {
|
||||
doTestMobileOperatorNames("Android", "Android", cleanUp);
|
||||
doTestMobileOperatorNames("Android", "Android", testRoamingCheck);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// See bug 797972 - B2G RIL: False roaming situation
|
||||
//
|
||||
// Steps to test:
|
||||
// 1. set roaming operator names
|
||||
// 2. set emulator roaming
|
||||
// 3. wait for onvoicechange event and test passing conditions
|
||||
// 4. set emulator roaming back to false
|
||||
// 5. wait for onvoicechange event again and callback
|
||||
function doTestRoamingCheck(longName, shortName, callback) {
|
||||
log("Testing roaming check '" + longName + "', '" + shortName + "':");
|
||||
|
||||
setEmulatorOperatorNames(OPERATOR_ROAMING, longName, shortName,
|
||||
window.setTimeout.bind(window, function () {
|
||||
let done = false;
|
||||
function resetRoaming() {
|
||||
if (!done) {
|
||||
window.setTimeout(resetRoaming, 100);
|
||||
return;
|
||||
}
|
||||
|
||||
waitForVoiceChange(callback);
|
||||
setEmulatorRoaming(false);
|
||||
}
|
||||
|
||||
waitForVoiceChange(function () {
|
||||
is(network.longName, longName, "network.longName");
|
||||
is(network.shortName, shortName, "network.shortName");
|
||||
is(voice.roaming, false, "voice.roaming");
|
||||
|
||||
resetRoaming();
|
||||
});
|
||||
|
||||
setEmulatorRoaming(true, function () {
|
||||
done = true;
|
||||
});
|
||||
}, 3000) // window.setTimeout.bind
|
||||
); // setEmulatorOperatorNames
|
||||
}
|
||||
|
||||
function testRoamingCheck() {
|
||||
// If Either long name or short name of current registered operator matches
|
||||
// SPN("Android"), then the `roaming` attribute should be set to false.
|
||||
doTestRoamingCheck("Android", "Android", function () {
|
||||
doTestRoamingCheck("Android", "android", function () {
|
||||
doTestRoamingCheck("Android", "Xxx", function () {
|
||||
doTestRoamingCheck("android", "Android", function () {
|
||||
doTestRoamingCheck("android", "android", function () {
|
||||
doTestRoamingCheck("android", "Xxx", function () {
|
||||
doTestRoamingCheck("Xxx", "Android", function () {
|
||||
doTestRoamingCheck("Xxx", "android", function () {
|
||||
setEmulatorOperatorNames(OPERATOR_ROAMING, "TelKila", "TelKila",
|
||||
window.setTimeout.bind(window, cleanUp, 3000));
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -74,4 +166,6 @@ function cleanUp() {
|
||||
finish();
|
||||
}
|
||||
|
||||
testMobileOperatorNames();
|
||||
waitFor(testMobileOperatorNames, function () {
|
||||
return voice.connected;
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user