Bug 805539 - Prevent effect from default values and network geolocation provider. r=dougt

This commit is contained in:
Al Tsai 2012-11-01 19:23:14 -04:00
parent 71c8561c7e
commit 78d5b9d481
3 changed files with 52 additions and 39 deletions

View File

@ -3,6 +3,6 @@ b2g = true
browser = false
qemu = true
; Bug 805539
;[test_geolocation.js]
; gps = true
[test_geolocation.js]

View File

@ -6,7 +6,8 @@ MARIONETTE_TIMEOUT = 10000;
let geolocation = window.navigator.geolocation;
ok(geolocation);
var target = Object();
var sample = [];
var result = [];
var wpid;
/**
@ -14,17 +15,25 @@ var wpid;
*/
SpecialPowers.addPermission("geolocation", true, document);
/**
* Disable wifi geolocation provider
*/
wifiUri = SpecialPowers.getCharPref("geo.wifi.uri");
SpecialPowers.setCharPref("geo.wifi.uri", "http://mochi.test:8888/tests/dom/tests/mochitest/geolocation/network_geolocation.sjs?action=stop-responding");
/**
* 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);
function verifyLocation() {
log("Sample:" + sample.join(','));
log("Result:" + result.join(','));
for (i in sample) {
is(sample.pop(), result.pop());
}
window.setTimeout(cleanup, 0);
}
/**
@ -33,71 +42,75 @@ function verifyLocation(callback, expectedLocation) {
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!");
log("Position changes: (" + position.coords.latitude + "/" + position.coords.longitude + ")");
result.push(""+position.coords.latitude + "/" + position.coords.longitude);
});
target.latitude = 0;
target.longitude = 0;
lat = 0;
lon = 0;
cmd = "geo fix " + target.longitude + " " + target.latitude;
cmd = "geo fix " + lon + " " + lat;
sample.push(lat+"/"+lon);
runEmulatorCmd(cmd, function(result) {
log("Geolocation setting status: " + result);
verifyLocation(movePosition_1, target);
window.setTimeout(movePosition_1, 0);
});
}
function movePosition_1() {
log("Geolocation changes. Move to Position 1.");
target.latitude = 25;
target.longitude = 121.56499833333334;
lat = 25;
lon = 121.56499833333334;
cmd = "geo fix " + target.longitude + " " + target.latitude;
cmd = "geo fix " + lon + " " + lat;
sample.push(lat+"/"+lon);
runEmulatorCmd(cmd, function(result) {
log("Geolocation setting status: " + result);
verifyLocation(movePosition_2, target);
window.setTimeout(movePosition_2, 0);
});
}
function movePosition_2() {
log("Geolocation changes to a negative longitude. Move to Position 2.");
target.latitude = 37.393;
target.longitude = -122.08199833333335;
lat = 37.393;
lon = -122.08199833333335;
cmd = "geo fix " + target.longitude + " " + target.latitude;
cmd = "geo fix " + lon + " " + lat;
sample.push(lat+"/"+lon);
runEmulatorCmd(cmd, function(result) {
log("Geolocation setting status: " + result);
verifyLocation(movePosition_3, target);
window.setTimeout(movePosition_3, 0);
});
}
function movePosition_3() {
log("Geolocation changes with WatchPosition. Move to Position 3.");
target.latitude = -22;
target.longitude = -43;
lat = -22;
lon = -43;
cmd = "geo fix " + target.longitude + " " + target.latitude;
cmd = "geo fix " + lon + " " + lat;
sample.push(lat+"/"+lon);
geolocation.getCurrentPosition(function(position) {
log("getCurrentPosition: Expected location: ("+lat+"/"+lon+"); Current location: (" + position.coords.latitude + "/" + position.coords.longitude + ")");
is(lat, position.coords.latitude);
is(lon, position.coords.longitude);
});
runEmulatorCmd(cmd, function(result) {
log("Geolocation setting status: " + result);
verifyLocation(cleanup, target);
window.setTimeout(verifyLocation, 0);
});
}
function cleanup() {
geolocation.clearWatch(wpid);
SpecialPowers.removePermission("geolocation", document);
SpecialPowers.setCharPref("geo.wifi.uri", wifiUri);
finish();
}

View File

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