| <!DOCTYPE html> |
| <meta charset="utf-8"/> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js?feature=bidi"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| |
| <script> |
| promise_setup(async () => { |
| // Ensure permission is granted before proceeding. |
| await test_driver.bidi.permissions.set_permission({ |
| descriptor: {name: "geolocation"}, |
| state: "granted", |
| }); |
| }); |
| |
| promise_test(async (t) => { |
| t.add_cleanup(async () => { |
| await test_driver.bidi.emulation.set_geolocation_override( |
| {coordinates: null}); |
| }); |
| |
| await test_driver.bidi.emulation.set_geolocation_override({ |
| error: {type: "positionUnavailable"} |
| }); |
| |
| const error = await new Promise( |
| (resolve, reject) => |
| window.navigator.geolocation.getCurrentPosition( |
| () => reject("Unexpected success callback"), |
| error => resolve({ |
| code: error.code, |
| message: error.message, |
| PERMISSION_DENIED: error.PERMISSION_DENIED, |
| POSITION_UNAVAILABLE: error.POSITION_UNAVAILABLE, |
| TIMEOUT: error.TIMEOUT |
| }), |
| {timeout: 1000} |
| )); |
| |
| assert_equals(error.code, 2); |
| // The message value is not specified. |
| assert_not_equals(error.message, undefined); |
| assert_equals(error.PERMISSION_DENIED, 1); |
| assert_equals(error.POSITION_UNAVAILABLE, 2); |
| assert_equals(error.TIMEOUT, 3); |
| }, "Tests Geolocation error callback"); |
| </script> |