Bug 777983 - Add marionette test for b2g gps provider. r=dougt, a=akeybl

This commit is contained in:
Al Tsai 2012-10-11 21:31:39 -04:00
Родитель 14c76c4cba
Коммит b752e14e8d
3 изменённых файлов: 112 добавлений и 0 удалений

Просмотреть файл

@ -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/sms/tests/marionette/manifest.ini]
[include:../../../../../dom/network/tests/marionette/manifest.ini]
[include:../../../../../dom/system/gonk/tests/marionette/manifest.ini]
; marionette unit tests
[include:unit/unit-tests.ini]