summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/chrome/test_geolocation.xhtml
blob: 482b36ea20cdf6a736cfd2ad74bed59ff6bdb92e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<!--
  Test for Geolocation in chrome
  -->
<window
  id="sample-window"
  width="400"
  height="400"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
>
  <script
    src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"
  ></script>

  <script>
    SimpleTest.waitForExplicitFinish();
    async function test() {
      /** @type {Geolocation} */
      const geolocation = Cc["@mozilla.org/geolocation;1"].getService(
        Ci.nsISupports
      );
      try {
        // Watch position
        let watchId;
        let position = await new Promise((resolve, reject) => {
          watchId = geolocation.watchPosition(resolve, reject, { timeout: 0 });
        });
        ok(position, "watchPosition() callable from chrome");
        geolocation.clearWatch(watchId);

        // Get position
        position = await new Promise((resolve, reject) =>
          geolocation.getCurrentPosition(resolve, reject)
        );
        ok(position, "getCurrentPosition() callable from chrome");
      } catch (err) {
        ok(
          false,
          "error occurred trying to get geolocation from chrome: " + err.message
        );
      } finally {
        SimpleTest.finish();
      }
    }
  </script>

  <body
    xmlns="http://www.w3.org/1999/xhtml"
    style="height: 300px; overflow: auto;"
    onload="test()"
  />
</window>