1dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochdescription("Tests that when a position is available, no callbacks are invoked until permission is denied.");
2dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
3dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochif (window.layoutTestController)
4dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    window.layoutTestController.setMockGeolocationPosition(51.478, -0.166, 100);
5dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
6dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochfunction denyPermission() {
7dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    permissionSet = true;
8dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (window.layoutTestController)
9dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        layoutTestController.setGeolocationPermission(false);
10dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch}
11dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
12dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochvar error;
13dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochnavigator.geolocation.getCurrentPosition(function() {
14dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    testFailed('Success callback invoked unexpectedly');
15dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    finishJSTest();
16dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch}, function(e) {
17dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    if (permissionSet) {
18dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        error = e;
19dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        shouldBe('error.code', 'error.PERMISSION_DENIED');
20dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        shouldBe('error.message', '"User denied Geolocation"');
21dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        finishJSTest();
22dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch        return;
23dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    }
24dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    testFailed('Error callback invoked unexpectedly');
25dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    finishJSTest();
26dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch});
27dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochwindow.setTimeout(denyPermission, 100);
28dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch
29dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochwindow.jsTestIsAsync = true;
30dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochwindow.successfullyParsed = true;
31