diff options
Diffstat (limited to '')
-rw-r--r-- | dom/tests/mochitest/geolocation/test_enableHighAccuracy.html | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/dom/tests/mochitest/geolocation/test_enableHighAccuracy.html b/dom/tests/mochitest/geolocation/test_enableHighAccuracy.html new file mode 100644 index 0000000000..f139c15d01 --- /dev/null +++ b/dom/tests/mochitest/geolocation/test_enableHighAccuracy.html @@ -0,0 +1,73 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=1765835 +--> +<head> + <title>Tests for watchPosition and getCurrentPosition with setHighAccuracy</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1765835">Mozilla Bug 1765835</a> +<script class="testbody" type="text/javascript"> +function mockChromeScript() { + function enableHighAccuracy(subject, topic, data) { + sendAsyncMessage("setHighAccuracy", data == "true"); + }; + Services.obs.addObserver(enableHighAccuracy, "testing-geolocation-high-accuracy"); + + addMessageListener("cleanup", () => { + Services.obs.removeObserver(enableHighAccuracy, "testing-geolocation-high-accuracy"); + sendAsyncMessage("done"); + }); + + sendAsyncMessage("ready"); +} + +add_task(async function test_watchPosition() { + await SpecialPowers.pushPrefEnv({ + set: [["geo.prompt.testing", true], ["geo.prompt.testing.allow", true]], + }); + + let chromeScript = SpecialPowers.loadChromeScript(mockChromeScript); + await chromeScript.promiseOneMessage("ready"); + + let id = navigator.geolocation.watchPosition(() => {}, () => {}, { enableHighAccuracy: true }); + let highAccuracy = await chromeScript.promiseOneMessage("setHighAccuracy"); + ok(highAccuracy, "enableHighAccuracy option should be enabled"); + navigator.geolocation.clearWatch(id); + + id = navigator.geolocation.watchPosition(() => {}, () => {}, { enableHighAccuracy: false }); + highAccuracy = await chromeScript.promiseOneMessage("setHighAccuracy"); + ok(!highAccuracy, "enableHighAccuracy option should be disabled"); + navigator.geolocation.clearWatch(id); + + chromeScript.sendAsyncMessage("cleanup"); + await chromeScript.promiseOneMessage("done"); + chromeScript.destroy(); +}); + +add_task(async function test_getCurrentPosition() { + await SpecialPowers.pushPrefEnv({ + set: [["geo.prompt.testing", true], ["geo.prompt.testing.allow", true]], + }); + + let chromeScript = SpecialPowers.loadChromeScript(mockChromeScript); + await chromeScript.promiseOneMessage("ready"); + + navigator.geolocation.getCurrentPosition(() => {}, () => {}, { enableHighAccuracy: true }); + let highAccuracy = await chromeScript.promiseOneMessage("setHighAccuracy"); + ok(highAccuracy, "enableHighAccuracy option should be enabled"); + + navigator.geolocation.getCurrentPosition(() => {}, () => {}, { enableHighAccuracy: false }); + highAccuracy = await chromeScript.promiseOneMessage("setHighAccuracy"); + ok(!highAccuracy, "enableHighAccuracy option should be disabled"); + + chromeScript.sendAsyncMessage("cleanup"); + await chromeScript.promiseOneMessage("done"); + chromeScript.destroy(); +}); +</script> +</body> +</html> |