diff options
Diffstat (limited to 'testing/web-platform/tests/geolocation-API/PositionOptions.https.html')
-rw-r--r-- | testing/web-platform/tests/geolocation-API/PositionOptions.https.html | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/testing/web-platform/tests/geolocation-API/PositionOptions.https.html b/testing/web-platform/tests/geolocation-API/PositionOptions.https.html new file mode 100644 index 0000000000..6b36d66d73 --- /dev/null +++ b/testing/web-platform/tests/geolocation-API/PositionOptions.https.html @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<meta charset="utf-8" /> +<title>Geolocation Test: PositionOptions tests</title> +<link + rel="help" + href="http://www.w3.org/TR/geolocation-API/#position_options_interface" +/> +<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> + const resetPermission = () => { + return test_driver.set_permission({ name: "geolocation" }, "prompt"); + }; + const invalidValues = ["boom", 321, -Infinity, { foo: 5 }]; + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + for (const enableHighAccuracy of invalidValues) { + navigator.geolocation.getCurrentPosition(() => {}, null, { + enableHighAccuracy, + }); + } + }, "Call getCurrentPosition with wrong type for enableHighAccuracy. No exception expected."); + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + for (const enableHighAccuracy of invalidValues) { + const id = navigator.geolocation.watchPosition(() => {}, null, { + enableHighAccuracy, + }); + navigator.geolocation.clearWatch(id); + } + }, "Call watchPosition with wrong type for enableHighAccuracy. No exception expected."); + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + const error = await new Promise((resolve, reject) => { + navigator.geolocation.getCurrentPosition(reject, resolve, { + timeout: 0, + maxAge: 0, + }); + }); + assert_equals(error.code, GeolocationPositionError.TIMEOUT); + }, "Set timeout and maximumAge to 0, check that timeout error raised (getCurrentPosition)"); + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + let watchId; + const error = await new Promise((resolve, reject) => { + watchId = navigator.geolocation.watchPosition(reject, resolve, { + timeout: 0, + maxAge: 0, + }); + }); + assert_equals(error.code, GeolocationPositionError.TIMEOUT); + navigator.geolocation.clearWatch(watchId); + }, "Set timeout and maximumAge to 0, check that timeout error raised (watchPosition)"); + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + let watchId; + const error = await new Promise((resolve, reject) => { + watchId = navigator.geolocation.getCurrentPosition(reject, resolve, { + timeout: -100, + maxAge: -100, + }); + }); + assert_equals(error.code, GeolocationPositionError.TIMEOUT); + navigator.geolocation.clearWatch(watchId); + }, "Check that a negative timeout and maxAge values are clamped to 0 (getCurrentPosition)"); + + promise_test(async (t) => { + t.add_cleanup(resetPermission); + await test_driver.set_permission({ name: "geolocation" }, "granted"); + let watchId; + const error = await new Promise((resolve, reject) => { + watchId = navigator.geolocation.watchPosition(reject, resolve, { + timeout: -100, + maxAge: -100, + }); + }); + assert_equals(error.code, GeolocationPositionError.TIMEOUT); + navigator.geolocation.clearWatch(watchId); + }, "Check that a negative timeout and maxAge values are clamped to 0 (watchPosition)"); +</script> |