diff options
Diffstat (limited to 'LayoutTests/fast/dom/Geolocation/script-tests/multiple-requests.js')
-rw-r--r-- | LayoutTests/fast/dom/Geolocation/script-tests/multiple-requests.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/multiple-requests.js b/LayoutTests/fast/dom/Geolocation/script-tests/multiple-requests.js new file mode 100644 index 0000000..4115a97 --- /dev/null +++ b/LayoutTests/fast/dom/Geolocation/script-tests/multiple-requests.js @@ -0,0 +1,47 @@ +description("Tests that Geolocation correctly handles multiple concurrent requests."); + +var mockLatitude = 51.478; +var mockLongitude = -0.166; +var mockAccuracy = 100; + +if (window.layoutTestController) { + layoutTestController.setGeolocationPermission(true); + layoutTestController.setMockGeolocationPosition(mockLatitude, + mockLongitude, + mockAccuracy); +} else + debug('This test can not be run without the LayoutTestController'); + +var watchCallbackInvoked = false; +var oneShotCallbackInvoked = false; + +navigator.geolocation.watchPosition(function(p) { + shouldBeFalse('watchCallbackInvoked'); + watchCallbackInvoked = true; + maybeFinishTest(p); +}, function() { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +navigator.geolocation.getCurrentPosition(function(p) { + shouldBeFalse('oneShotCallbackInvoked'); + oneShotCallbackInvoked = true; + maybeFinishTest(p); +}, function() { + testFailed('Error callback invoked unexpectedly'); + finishJSTest(); +}); + +var position; +function maybeFinishTest(p) { + position = p; + shouldBe('position.coords.latitude', 'mockLatitude'); + shouldBe('position.coords.longitude', 'mockLongitude'); + shouldBe('position.coords.accuracy', 'mockAccuracy'); + if (watchCallbackInvoked && oneShotCallbackInvoked) + finishJSTest(); +} + +window.jsTestIsAsync = true; +window.successfullyParsed = true; |