| <!DOCTYPE html> | |
| <meta charset="utf-8" /> | |
| <title>Geolocation Test: getCurrentPosition() location access</title> | |
| <link | |
| rel="help" | |
| href="https://www.w3.org/TR/geolocation/#getcurrentposition-method" | |
| /> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script src="/resources/testdriver.js"></script> | |
| <script src="/resources/testdriver-vendor.js"></script> | |
| <script> | |
| promise_test(async (t) => { | |
| t.add_cleanup(() => { | |
| return test_driver.set_permission({ name: "geolocation" }, "prompt"); | |
| }); | |
| await test_driver.set_permission({ name: "geolocation" }, "granted"); | |
| const position = await new Promise((resolve, reject) => { | |
| let calledAsync = false; | |
| navigator.geolocation.getCurrentPosition( | |
| t.step_func((position) => { | |
| assert_true(calledAsync, "Expected callback to be called asynchronously") | |
| resolve(position); | |
| }), | |
| reject | |
| ); | |
| calledAsync = true; | |
| }); | |
| assert_true( | |
| position instanceof GeolocationPosition, | |
| "Expected GeolocationPosition" | |
| ); | |
| }, "User allows access, check that success callback is called."); | |
| promise_test(async (t) => { | |
| t.add_cleanup(() => { | |
| return test_driver.set_permission({ name: "geolocation" }, "prompt"); | |
| }); | |
| await test_driver.set_permission({ name: "geolocation" }, "granted"); | |
| const position = await new Promise((resolve, reject) => { | |
| try { | |
| navigator.geolocation.getCurrentPosition(resolve, null); | |
| } catch (err) { | |
| reject(err); | |
| } | |
| }); | |
| assert_true( | |
| position instanceof GeolocationPosition, | |
| "Expected GeolocationPosition" | |
| ); | |
| }, "Error callback is nullable for getCurrentPosition()."); | |
| </script> |