blob: acfdfa136a4c61f0b30475e0625bb02d4594c11f [file] [log] [blame]
<!DOCTYPE html>
<script type="module">
import {GeolocationMock} from './geolocation-mock.js';
const parent = window.parent;
const mock = new GeolocationMock();
mock.setGeolocationPermission(true);
// Query the position but intercept the query so the service doesn't respond
// immediately. If it responds too early, we won't exercise the intended code
// path, i.e. geolocation API receiving a response from the service after page
// unload. Similarly, issuing the request too late will also fail to exercise
// that path because the mock service may not receive the request in time to
// process and reply to it.
//
// Instead, we ensure the service sees the request before moving forward, but
// we defer its response until we're within the unload handler below.
const promise = mock.interceptQueryNextPosition();
navigator.geolocation.getCurrentPosition(
parent.onGeolocationResponse, parent.onGeolocationResponse,
{timeout: 500, maximumAge:0});
const respond = await promise;
document.body.onunload = () => respond(mock.makeGeoposition(1, 2, 3));
parent.navigateToSecondPage();
</script>