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