diff options
Diffstat (limited to 'LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js')
-rw-r--r-- | LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js b/LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js new file mode 100644 index 0000000..7a86648 --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/script-tests/callback-exception.js @@ -0,0 +1,31 @@ +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."); + +var mockLatitude = 51.478; +var mockLongitude = -0.166; +var mockAccuracy = 100; + +window.layoutTestController.setGeolocationPermission(true); +window.layoutTestController.setMockGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); + +var position; +navigator.geolocation.getCurrentPosition(function(p) { + position = p + shouldBe('position.coords.latitude', 'mockLatitude'); + shouldBe('position.coords.longitude', 'mockLongitude'); + shouldBe('position.coords.accuracy', 'mockAccuracy'); + + // Yield to allow for the error callback to be invoked. The timer + // must be started before the exception is thrown. + window.setTimeout(finishJSTest, 0); + throw new Error('Exception in success callback'); +}, function(e) { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +window.layoutTestController.waitUntilDone(); + +window.jsTestIsAsync = true; +window.successfullyParsed = true; |