1 description("Tests that when an exception is thrown in the success callback, the error callback is not invoked. Note that this test throws an exception which is not caught."); 2 3 var mockLatitude = 51.478; 4 var mockLongitude = -0.166; 5 var mockAccuracy = 100; 6 7 if (window.layoutTestController) { 8 layoutTestController.setGeolocationPermission(true); 9 layoutTestController.setMockGeolocationPosition(mockLatitude, 10 mockLongitude, 11 mockAccuracy); 12 } else 13 debug('This test can not be run without the LayoutTestController'); 14 15 var position; 16 navigator.geolocation.getCurrentPosition(function(p) { 17 position = p; 18 shouldBe('position.coords.latitude', 'mockLatitude'); 19 shouldBe('position.coords.longitude', 'mockLongitude'); 20 shouldBe('position.coords.accuracy', 'mockAccuracy'); 21 22 // Yield to allow for the error callback to be invoked. The timer 23 // must be started before the exception is thrown. 24 window.setTimeout(finishJSTest, 0); 25 throw new Error('Exception in success callback'); 26 }, function(e) { 27 testFailed('Error callback invoked unexpectedly'); 28 finishJSTest(); 29 }); 30 31 window.jsTestIsAsync = true; 32 window.successfullyParsed = true; 33