70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
"use strict";
|
|
|
|
async function getGeolocation() {
|
|
info("Requesting geolocation");
|
|
|
|
let resolve;
|
|
let promise = new Promise((_resolve, _reject) => {
|
|
resolve = _resolve;
|
|
});
|
|
|
|
navigator.geolocation.getCurrentPosition(
|
|
() => {
|
|
ok(true, "geolocation succeeded");
|
|
resolve(undefined);
|
|
},
|
|
() => {
|
|
ok(false, "geolocation failed");
|
|
resolve(undefined);
|
|
}
|
|
);
|
|
|
|
return promise;
|
|
}
|
|
|
|
add_setup(async function () {
|
|
// Avoid the permission doorhanger and cache that would trigger instead
|
|
// of re-requesting location. Setting geo.timeout to 0 causes it to
|
|
// retry the system geolocation (incl. recreating the utility process)
|
|
// instead of reusing the MLS geolocation fallback it found the first time.
|
|
await SpecialPowers.pushPrefEnv({
|
|
set: [
|
|
["geo.prompt.testing", true],
|
|
["geo.prompt.testing.allow", true],
|
|
["geo.provider.network.debug.requestCache.enabled", false],
|
|
["geo.provider.testing", false],
|
|
["geo.timeout", 0],
|
|
],
|
|
});
|
|
});
|
|
|
|
add_task(async function testGeolocationProcessCrash() {
|
|
info("Start the Windows utility process");
|
|
await getGeolocation();
|
|
|
|
info("Crash the utility process");
|
|
await crashSomeUtilityActor("windowsUtils");
|
|
|
|
info("Restart the Windows utility process");
|
|
await getGeolocation();
|
|
|
|
info("Confirm the restarted process");
|
|
await checkUtilityExists("windowsUtils");
|
|
|
|
info("Kill the utility process");
|
|
await cleanUtilityProcessShutdown("windowsUtils", true);
|
|
|
|
info("Restart the Windows utility process again");
|
|
await getGeolocation();
|
|
|
|
info("Confirm the restarted process");
|
|
await checkUtilityExists("windowsUtils");
|
|
});
|
|
|
|
add_task(async function testCleanup() {
|
|
info("Clean up to avoid confusing future tests");
|
|
await cleanUtilityProcessShutdown("windowsUtils", true);
|
|
});
|