| <!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> |