86 lines
2.4 KiB
HTML
86 lines
2.4 KiB
HTML
<!DOCTYPE HTML>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script src="/tests/SimpleTest/ExtensionTestUtils.js"></script>
|
|
<script type="text/javascript" src="head.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
<script>
|
|
"use strict";
|
|
|
|
add_task(async function test_geolocation_nopermission() {
|
|
let GEO_URL = "http://mochi.test:8888/tests/dom/geolocation/test/mochitest/network_geolocation.sjs";
|
|
await SpecialPowers.pushPrefEnv({"set": [["geo.provider.network.url", GEO_URL]]});
|
|
});
|
|
|
|
add_task(async function test_geolocation() {
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
manifest: {
|
|
permissions: [
|
|
"geolocation",
|
|
],
|
|
},
|
|
background() {
|
|
navigator.geolocation.getCurrentPosition(() => {
|
|
browser.test.notifyPass("success geolocation call");
|
|
}, (error) => {
|
|
browser.test.notifyFail(`geolocation call ${error}`);
|
|
});
|
|
},
|
|
});
|
|
|
|
await extension.startup();
|
|
await extension.awaitFinish();
|
|
await extension.unload();
|
|
});
|
|
|
|
add_task(async function test_geolocation_nopermission() {
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
background() {
|
|
navigator.geolocation.getCurrentPosition(() => {
|
|
browser.test.notifyFail("success geolocation call");
|
|
}, (error) => {
|
|
browser.test.notifyPass(`geolocation call ${error}`);
|
|
});
|
|
},
|
|
});
|
|
|
|
await extension.startup();
|
|
await extension.awaitFinish();
|
|
await extension.unload();
|
|
});
|
|
|
|
add_task(async function test_geolocation_prompt() {
|
|
let extension = ExtensionTestUtils.loadExtension({
|
|
background() {
|
|
browser.tabs.create({url: "tab.html"});
|
|
},
|
|
files: {
|
|
"tab.html": `<html><head>
|
|
<meta charset="utf-8">
|
|
<script src="tab.js"><\/script>
|
|
</head></html>`,
|
|
"tab.js": () => {
|
|
navigator.geolocation.getCurrentPosition(() => {
|
|
browser.test.notifyPass("success geolocation call");
|
|
}, (error) => {
|
|
browser.test.notifyFail(`geolocation call ${error}`);
|
|
});
|
|
},
|
|
},
|
|
});
|
|
|
|
// Bypass the actual prompt, but the prompt result is to allow access.
|
|
await SpecialPowers.pushPrefEnv({"set": [["geo.prompt.testing", true], ["geo.prompt.testing.allow", true]]});
|
|
await extension.startup();
|
|
await extension.awaitFinish();
|
|
await extension.unload();
|
|
});
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
</body>
|
|
</html>
|