1 description("Tests that when Geolocation permission has been denied prior to a call to watchPosition, and the watch is cleared in the error callback, there is no crash. This a regression test for https://bugs.webkit.org/show_bug.cgi?id=32111.");
3 if (!window.testRunner || !window.internals)
4 debug('This test can not run without testRunner or internals');
6 internals.setGeolocationClientMock(document);
8 // Prime the Geolocation instance by denying permission.
9 internals.setGeolocationPermission(document, false);
10 internals.setGeolocationPosition(document, 51.478, -0.166, 100);
13 navigator.geolocation.getCurrentPosition(function(p) {
14 testFailed('Success callback invoked unexpectedly');
18 shouldBe('error.code', 'error.PERMISSION_DENIED');
19 shouldBe('error.message', '"User denied Geolocation"');
24 function continueTest()
26 // Make another request, with permission already denied.
27 var watchId = navigator.geolocation.watchPosition(function(p) {
28 testFailed('Success callback invoked unexpectedly');
32 shouldBe('error.code', 'error.PERMISSION_DENIED');
33 shouldBe('error.message', '"User denied Geolocation"');
34 navigator.geolocation.clearWatch(watchId);
35 window.setTimeout(finishJSTest, 0);
39 window.jsTestIsAsync = true;