mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
Merge mozilla-central to mozilla-inbound
This commit is contained in:
commit
b21c696b0c
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="ca283b9db2b151d465cfd2e19346cf58fe89e413"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ce95d372e6d285725b96490afdaaf489ad8f9ca9"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="8a4baf82a131a7853cf7e7f9cf74253927b2f355"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="65fba428f8d76336b33ddd9e15900357953600ba">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ce95d372e6d285725b96490afdaaf489ad8f9ca9"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="ca283b9db2b151d465cfd2e19346cf58fe89e413"/>
|
||||
|
@ -18,7 +18,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ce95d372e6d285725b96490afdaaf489ad8f9ca9"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="8a4baf82a131a7853cf7e7f9cf74253927b2f355"/>
|
||||
|
@ -4,6 +4,6 @@
|
||||
"remote": "",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "3440b8cab407aef69dd7be247efd40447b5da577",
|
||||
"revision": "6b51afcf6d39fc4b30dc0d9b5d9f5739b2a6fd60",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ce95d372e6d285725b96490afdaaf489ad8f9ca9"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="8a4baf82a131a7853cf7e7f9cf74253927b2f355"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="8a2352d5b7be27ec4b1ea18c680ebcd0b6d34348"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="9ad117d9d7f4d9e76ca235b168a3ac79f870f4c1"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="3b2aeeb5af3083c2f6f4b44beae0b4802566d482"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -2,350 +2,110 @@
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
MARIONETTE_TIMEOUT = 60000;
|
||||
MARIONETTE_HEAD_JS = "head.js";
|
||||
|
||||
const DATA_KEY = "ril.data.enabled";
|
||||
const DATA_ROAMING_KEY = "ril.data.roaming_enabled";
|
||||
const APN_KEY = "ril.data.apnSettings";
|
||||
|
||||
SpecialPowers.setBoolPref("dom.mozSettings.enabled", true);
|
||||
SpecialPowers.addPermission("mobileconnection", true, document);
|
||||
SpecialPowers.addPermission("settings-read", true, document);
|
||||
SpecialPowers.addPermission("settings-write", true, document);
|
||||
|
||||
let settings = window.navigator.mozSettings;
|
||||
let connection = window.navigator.mozMobileConnections[0];
|
||||
ok(connection instanceof MozMobileConnection,
|
||||
"connection is instanceof " + connection.constructor);
|
||||
|
||||
|
||||
let pendingEmulatorCmdCount = 0;
|
||||
function sendCmdToEmulator(cmd, callback) {
|
||||
++pendingEmulatorCmdCount;
|
||||
|
||||
runEmulatorCmd(cmd, function(result) {
|
||||
--pendingEmulatorCmdCount;
|
||||
|
||||
is(result[0], "OK", "Emulator response");
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
let tasks = {
|
||||
// List of test fuctions. Each of them should call |tasks.next()| when
|
||||
// completed or |tasks.finish()| to jump to the last one.
|
||||
_tasks: [],
|
||||
_nextTaskIndex: 0,
|
||||
|
||||
push: function(func) {
|
||||
this._tasks.push(func);
|
||||
},
|
||||
|
||||
next: function() {
|
||||
let index = this._nextTaskIndex++;
|
||||
let task = this._tasks[index];
|
||||
try {
|
||||
task();
|
||||
} catch (ex) {
|
||||
ok(false, "test task[" + index + "] throws: " + ex);
|
||||
// Run last task as clean up if possible.
|
||||
if (index != this._tasks.length - 1) {
|
||||
this.finish();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
finish: function() {
|
||||
this._tasks[this._tasks.length - 1]();
|
||||
},
|
||||
|
||||
run: function() {
|
||||
this.next();
|
||||
}
|
||||
};
|
||||
|
||||
function setSetting(key, value, callback) {
|
||||
let setLock = settings.createLock();
|
||||
let obj = {};
|
||||
obj[key] = value;
|
||||
|
||||
let setReq = setLock.set(obj);
|
||||
setReq.addEventListener("success", function onSetSuccess() {
|
||||
ok(true, "set '" + key + "' to " + obj[key]);
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
setReq.addEventListener("error", function onSetError() {
|
||||
ok(false, "cannot set '" + key + "'");
|
||||
tasks.finish();
|
||||
});
|
||||
}
|
||||
|
||||
function getSetting(key, callback) {
|
||||
let getLock = settings.createLock();
|
||||
|
||||
let getReq = getLock.get(key);
|
||||
getReq.addEventListener("success", function onGetSuccess() {
|
||||
ok(true, "get " + key + " setting okay");
|
||||
let value = getReq.result[key];
|
||||
callback(value);
|
||||
});
|
||||
getReq.addEventListener("error", function onGetError() {
|
||||
ok(false, "cannot get '" + key + "'");
|
||||
tasks.finish();
|
||||
});
|
||||
}
|
||||
|
||||
function setEmulatorAPN(callback) {
|
||||
let apn =
|
||||
[
|
||||
[
|
||||
{"carrier":"T-Mobile US",
|
||||
"apn":"epc.tmobile.com",
|
||||
"mmsc":"http://mms.msg.eng.t-mobile.com/mms/wapenc",
|
||||
"types":["default","supl","mms"]}
|
||||
]
|
||||
];
|
||||
setSetting(APN_KEY, apn, callback);
|
||||
}
|
||||
|
||||
function setEmulatorRoaming(roaming, callback) {
|
||||
log("Setting emulator roaming state: " + roaming + ".");
|
||||
|
||||
// Set voice registration state first and then data registration state.
|
||||
let cmd = "gsm voice " + (roaming ? "roaming" : "home");
|
||||
sendCmdToEmulator(cmd, function() {
|
||||
|
||||
connection.addEventListener("voicechange", function onvoicechange() {
|
||||
connection.removeEventListener("voicechange", onvoicechange);
|
||||
log("mobileConnection.voice.roaming is now '"
|
||||
+ connection.voice.roaming + "'.");
|
||||
is(connection.voice.roaming, roaming, "voice.roaming");
|
||||
|
||||
let cmd = "gsm data " + (roaming ? "roaming" : "home");
|
||||
sendCmdToEmulator(cmd, function() {
|
||||
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.roaming is now '"
|
||||
+ connection.data.roaming + "'.");
|
||||
is(connection.data.roaming, roaming, "data.roaming");
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function setEmulatorHome(callback) {
|
||||
let voiceRegistration = false;
|
||||
let dataRegistration = false;
|
||||
|
||||
if (connection.voice.state != "registered") {
|
||||
sendCmdToEmulator("gsm voice home", function() {
|
||||
connection.addEventListener("voicechange", function onvoicechange() {
|
||||
connection.removeEventListener("voicechange", onvoicechange);
|
||||
log("mobileConnection.voice.state is now '"
|
||||
+ connection.voice.state + "'.");
|
||||
is(connection.voice.state, "registered", "voice.state");
|
||||
voiceRegistration = true;
|
||||
});
|
||||
});
|
||||
} else {
|
||||
voiceRegistration = true;
|
||||
}
|
||||
|
||||
if (connection.data.state != "registered") {
|
||||
sendCmdToEmulator("gsm data home", function() {
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.state is now '"
|
||||
+ connection.data.state + "'.");
|
||||
is(connection.data.state, "registered", "data.state");
|
||||
dataRegistration = true;
|
||||
});
|
||||
});
|
||||
} else {
|
||||
dataRegistration = true;
|
||||
}
|
||||
|
||||
waitFor(callback, function() {
|
||||
return (voiceRegistration && dataRegistration);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
tasks.push(function verifyInitialState() {
|
||||
log("Verifying initial state.");
|
||||
|
||||
// Want to start test with mobileConnection.data.state 'registered',
|
||||
// This is the default state; if it is not currently this value then set it.
|
||||
setEmulatorHome(function() {
|
||||
// Want to start test with data off,
|
||||
// This is the default state; if it is not currently this value then set it.
|
||||
getSetting(DATA_KEY, function(result) {
|
||||
let value = result;
|
||||
log("Starting data enabled: " + value);
|
||||
if (value) {
|
||||
setSetting(DATA_KEY, false);
|
||||
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, false, "data.connected");
|
||||
setEmulatorAPN(function() {
|
||||
tasks.next();
|
||||
});
|
||||
});
|
||||
} else {
|
||||
setEmulatorAPN(function() {
|
||||
tasks.next();
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
tasks.push(function testEnableData() {
|
||||
log("Turn data on.");
|
||||
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, true, "data.connected");
|
||||
tasks.next();
|
||||
});
|
||||
|
||||
setSetting(DATA_KEY, true);
|
||||
});
|
||||
|
||||
tasks.push(function testUnregisterDataWhileDataEnabled() {
|
||||
log("Set data registration unregistered while data enabled.");
|
||||
|
||||
// When data registration is unregistered, all data calls
|
||||
// will be automatically deactivated.
|
||||
sendCmdToEmulator("gsm data unregistered", function() {
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
log("mobileConnection.data.state is now '"
|
||||
+ connection.data.state + "'.");
|
||||
if (connection.data.state == "notSearching") {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, false, "data.connected");
|
||||
tasks.next();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
tasks.push(function testRegisterDataWhileDataEnabled() {
|
||||
log("Set data registration home while data enabled.");
|
||||
|
||||
// When data registration is registered, data call will be
|
||||
// (re)activated by gecko if ril.data.enabled is set to true.
|
||||
sendCmdToEmulator("gsm data home", function() {
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.state is now '"
|
||||
+ connection.data.state + "'.");
|
||||
is(connection.data.state, "registered", "data.state");
|
||||
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, true, "data.connected");
|
||||
tasks.next();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
tasks.push(function testDisableDataRoamingWhileRoaming() {
|
||||
log("Disable data roaming while roaming.");
|
||||
|
||||
setSetting(DATA_ROAMING_KEY, false);
|
||||
|
||||
// Wait for roaming state to change, then data connection should
|
||||
// be disconnected due to data roaming set to off.
|
||||
setEmulatorRoaming(true, function() {
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, false, "data.connected");
|
||||
tasks.next();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
tasks.push(function testEnableDataRoamingWhileRoaming() {
|
||||
log("Enable data roaming while roaming.");
|
||||
|
||||
// Data should be re-connected as we enabled data roaming.
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, true, "data.connected");
|
||||
tasks.next();
|
||||
});
|
||||
|
||||
setSetting(DATA_ROAMING_KEY, true);
|
||||
});
|
||||
|
||||
tasks.push(function testDisableDataRoamingWhileNotRoaming() {
|
||||
log("Disable data roaming while not roaming.");
|
||||
|
||||
// Wait for roaming state to change then set data roaming back
|
||||
// to off.
|
||||
setEmulatorRoaming(false, function() {
|
||||
setSetting(DATA_ROAMING_KEY, false);
|
||||
|
||||
// No change event will be received cause data connection state
|
||||
// remains the same.
|
||||
window.setTimeout(function() {
|
||||
is(connection.data.connected, true, "data.connected");
|
||||
tasks.next();
|
||||
}, 1000);
|
||||
});
|
||||
});
|
||||
|
||||
tasks.push(function testDisableData() {
|
||||
log("Turn data off.");
|
||||
|
||||
connection.addEventListener("datachange", function ondatachange() {
|
||||
connection.removeEventListener("datachange", ondatachange);
|
||||
log("mobileConnection.data.connected is now '"
|
||||
+ connection.data.connected + "'.");
|
||||
is(connection.data.connected, false, "data.connected");
|
||||
tasks.next();
|
||||
});
|
||||
|
||||
setSetting(DATA_KEY, false);
|
||||
});
|
||||
|
||||
// WARNING: All tasks should be pushed before this!!!
|
||||
tasks.push(function cleanUp() {
|
||||
if (pendingEmulatorCmdCount) {
|
||||
window.setTimeout(cleanUp, 100);
|
||||
function checkOrWaitForDataState(connected) {
|
||||
if (mobileConnection.data.connected == connected) {
|
||||
log("data.connected is now " + mobileConnection.data.connected);
|
||||
return;
|
||||
}
|
||||
|
||||
SpecialPowers.removePermission("mobileconnection", document);
|
||||
SpecialPowers.removePermission("settings-write", document);
|
||||
SpecialPowers.removePermission("settings-read", document);
|
||||
SpecialPowers.clearUserPref("dom.mozSettings.enabled");
|
||||
finish();
|
||||
});
|
||||
return waitForManagerEvent("datachange")
|
||||
.then(() => checkOrWaitForDataState(connected));
|
||||
}
|
||||
|
||||
tasks.run();
|
||||
function verifyInitialState() {
|
||||
log("Verifying initial state.");
|
||||
|
||||
// Data should be off and registration home before starting any test.
|
||||
return Promise.resolve()
|
||||
.then(function() {
|
||||
is(mobileConnection.voice.state, "registered", "voice.state");
|
||||
is(mobileConnection.data.state, "registered", "data.state");
|
||||
is(mobileConnection.voice.roaming, false, "voice.roaming");
|
||||
is(mobileConnection.data.roaming, false, "data.roaming");
|
||||
})
|
||||
.then(getDataEnabled)
|
||||
.then(function(aResult) {
|
||||
is(aResult, false, "Data must be off.")
|
||||
});
|
||||
}
|
||||
|
||||
function testEnableData() {
|
||||
log("Turn data on.");
|
||||
|
||||
return setDataEnabledAndWait(true);
|
||||
}
|
||||
|
||||
function testUnregisterDataWhileDataEnabled() {
|
||||
log("Set data registration unregistered while data enabled.");
|
||||
|
||||
// When data registration is unregistered, all data calls will be
|
||||
// automatically deactivated.
|
||||
return setEmulatorVoiceDataStateAndWait("data", "unregistered")
|
||||
.then(() => checkOrWaitForDataState(false));
|
||||
}
|
||||
|
||||
function testRegisterDataWhileDataEnabled() {
|
||||
log("Set data registration home while data enabled.");
|
||||
|
||||
// When data registration is registered, data call will be (re)activated by
|
||||
// gecko if ril.data.enabled is set to true.
|
||||
return setEmulatorVoiceDataStateAndWait("data", "home")
|
||||
.then(() => checkOrWaitForDataState(true));
|
||||
}
|
||||
|
||||
function testDisableDataRoamingWhileRoaming() {
|
||||
log("Disable data roaming while roaming.");
|
||||
|
||||
// After setting emulator state to roaming, data connection should be
|
||||
// disconnected due to data roaming setting set to off.
|
||||
return setEmulatorRoamingAndWait(true)
|
||||
.then(() => checkOrWaitForDataState(false));
|
||||
}
|
||||
|
||||
function testEnableDataRoamingWhileRoaming() {
|
||||
log("Enable data roaming while roaming.");
|
||||
|
||||
// Data should be re-connected as we enabled data roaming.
|
||||
return setDataRoamingEnabled(true)
|
||||
.then(() => checkOrWaitForDataState(true));
|
||||
}
|
||||
|
||||
function testDisableData() {
|
||||
log("Turn data off.");
|
||||
|
||||
return setDataEnabledAndWait(false);
|
||||
}
|
||||
|
||||
startTestCommon(function() {
|
||||
|
||||
let origApnSettings;
|
||||
return verifyInitialState()
|
||||
.then(() => getDataApnSettings())
|
||||
.then(value => {
|
||||
origApnSettings = value;
|
||||
})
|
||||
.then(() => {
|
||||
let apnSettings = [[{ "carrier": "T-Mobile US",
|
||||
"apn": "epc.tmobile.com",
|
||||
"mmsc": "http://mms.msg.eng.t-mobile.com/mms/wapenc",
|
||||
"types": ["default","supl","mms"] }]];
|
||||
return setDataApnSettings(apnSettings);
|
||||
})
|
||||
.then(() => testEnableData())
|
||||
.then(() => testUnregisterDataWhileDataEnabled())
|
||||
.then(() => testRegisterDataWhileDataEnabled())
|
||||
.then(() => testDisableDataRoamingWhileRoaming())
|
||||
.then(() => testEnableDataRoamingWhileRoaming())
|
||||
.then(() => testDisableData())
|
||||
// Restore test environment.
|
||||
.then(() => {
|
||||
if (origApnSettings) {
|
||||
return setDataApnSettings(origApnSettings);
|
||||
}
|
||||
})
|
||||
.then(() => setEmulatorRoamingAndWait(false))
|
||||
.then(() => setDataRoamingEnabled(false));
|
||||
|
||||
}, ["settings-read", "settings-write"]);
|
Loading…
Reference in New Issue
Block a user