зеркало из https://github.com/mozilla/gecko-dev.git
Bug 777983 - Add marionette test for b2g gps provider. r=dougt, a=akeybl
This commit is contained in:
Родитель
14c76c4cba
Коммит
b752e14e8d
|
@ -0,0 +1,7 @@
|
||||||
|
[DEFAULT]
|
||||||
|
b2g = true
|
||||||
|
browser = false
|
||||||
|
qemu = true
|
||||||
|
|
||||||
|
[test_geolocation.js]
|
||||||
|
gps = true
|
|
@ -0,0 +1,104 @@
|
||||||
|
/* Any copyright is dedicated to the Public Domain.
|
||||||
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||||
|
|
||||||
|
MARIONETTE_TIMEOUT = 10000;
|
||||||
|
|
||||||
|
let geolocation = window.navigator.geolocation;
|
||||||
|
ok(geolocation);
|
||||||
|
|
||||||
|
var target = Object();
|
||||||
|
var wpid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Grant special power to get the geolocation
|
||||||
|
*/
|
||||||
|
SpecialPowers.addPermission("geolocation", true, document);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper that compares the geolocation against the web API.
|
||||||
|
*/
|
||||||
|
function verifyLocation(callback, expectedLocation) {
|
||||||
|
geolocation.getCurrentPosition(function(position) {
|
||||||
|
log("Expected location: " + expectedLocation.latitude + " " + expectedLocation.longitude);
|
||||||
|
log("Current location: " + position.coords.latitude + " " + position.coords.longitude);
|
||||||
|
is(expectedLocation.latitude, position.coords.latitude);
|
||||||
|
is(expectedLocation.longitude, position.coords.longitude);
|
||||||
|
});
|
||||||
|
window.setTimeout(callback, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test story begins here.
|
||||||
|
*/
|
||||||
|
function setup() {
|
||||||
|
log("Providing initial setup: set geographic position watcher.");
|
||||||
|
|
||||||
|
wpid = geolocation.watchPosition(function(position) {
|
||||||
|
log("Position changes has found.");
|
||||||
|
log("Watch: Target location: " + target.latitude + " " + target.longitude);
|
||||||
|
log("Watch: Current location: " + position.coords.latitude + " " + position.coords.longitude);
|
||||||
|
is(target.latitude, position.coords.latitude, "Latitude isn't match!");
|
||||||
|
is(target.longitude, position.coords.longitude, "Longitude isn't match!");
|
||||||
|
});
|
||||||
|
|
||||||
|
target.latitude = 0;
|
||||||
|
target.longitude = 0;
|
||||||
|
|
||||||
|
cmd = "geo fix " + target.longitude + " " + target.latitude;
|
||||||
|
|
||||||
|
runEmulatorCmd(cmd, function(result) {
|
||||||
|
log("Geolocation setting status: " + result);
|
||||||
|
verifyLocation(movePosition_1, target);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function movePosition_1() {
|
||||||
|
log("Geolocation changes. Move to Position 1.");
|
||||||
|
|
||||||
|
target.latitude = 25;
|
||||||
|
target.longitude = 121.56499833333334;
|
||||||
|
|
||||||
|
cmd = "geo fix " + target.longitude + " " + target.latitude;
|
||||||
|
|
||||||
|
runEmulatorCmd(cmd, function(result) {
|
||||||
|
log("Geolocation setting status: " + result);
|
||||||
|
verifyLocation(movePosition_2, target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function movePosition_2() {
|
||||||
|
log("Geolocation changes to a negative longitude. Move to Position 2.");
|
||||||
|
|
||||||
|
target.latitude = 37.393;
|
||||||
|
target.longitude = -122.08199833333335;
|
||||||
|
|
||||||
|
cmd = "geo fix " + target.longitude + " " + target.latitude;
|
||||||
|
|
||||||
|
runEmulatorCmd(cmd, function(result) {
|
||||||
|
log("Geolocation setting status: " + result);
|
||||||
|
verifyLocation(movePosition_3, target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function movePosition_3() {
|
||||||
|
log("Geolocation changes with WatchPosition. Move to Position 3.");
|
||||||
|
|
||||||
|
target.latitude = -22;
|
||||||
|
target.longitude = -43;
|
||||||
|
|
||||||
|
cmd = "geo fix " + target.longitude + " " + target.latitude;
|
||||||
|
|
||||||
|
runEmulatorCmd(cmd, function(result) {
|
||||||
|
log("Geolocation setting status: " + result);
|
||||||
|
verifyLocation(cleanup, target);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
geolocation.clearWatch(wpid);
|
||||||
|
SpecialPowers.removePermission("geolocation", document);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
|
||||||
|
setup();
|
|
@ -16,6 +16,7 @@ skip = false
|
||||||
[include:../../../../../dom/battery/test/marionette/manifest.ini]
|
[include:../../../../../dom/battery/test/marionette/manifest.ini]
|
||||||
[include:../../../../../dom/sms/tests/marionette/manifest.ini]
|
[include:../../../../../dom/sms/tests/marionette/manifest.ini]
|
||||||
[include:../../../../../dom/network/tests/marionette/manifest.ini]
|
[include:../../../../../dom/network/tests/marionette/manifest.ini]
|
||||||
|
[include:../../../../../dom/system/gonk/tests/marionette/manifest.ini]
|
||||||
|
|
||||||
; marionette unit tests
|
; marionette unit tests
|
||||||
[include:unit/unit-tests.ini]
|
[include:unit/unit-tests.ini]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче