summaryrefslogtreecommitdiffstats
path: root/LayoutTests/fast/dom/Geolocation/script-tests/watch.js
diff options
context:
space:
mode:
Diffstat (limited to 'LayoutTests/fast/dom/Geolocation/script-tests/watch.js')
-rw-r--r--LayoutTests/fast/dom/Geolocation/script-tests/watch.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/LayoutTests/fast/dom/Geolocation/script-tests/watch.js b/LayoutTests/fast/dom/Geolocation/script-tests/watch.js
new file mode 100644
index 0000000..8249f2e
--- /dev/null
+++ b/LayoutTests/fast/dom/Geolocation/script-tests/watch.js
@@ -0,0 +1,64 @@
+description("Tests that watchPosition correctly reports position updates and errors from the Geolocation service.");
+
+var mockLatitude = 51.478;
+var mockLongitude = -0.166;
+var mockAccuracy = 100.0;
+
+var mockCode = 1;
+var mockMessage = 'test';
+
+var position;
+var error;
+
+function checkPosition(p) {
+ position = p;
+ shouldBe('position.coords.latitude', 'mockLatitude');
+ shouldBe('position.coords.longitude', 'mockLongitude');
+ shouldBe('position.coords.accuracy', 'mockAccuracy');
+ debug('');
+}
+
+function checkError(e) {
+ error = e;
+ shouldBe('error.code', 'mockCode');
+ shouldBe('error.message', 'mockMessage');
+ debug('');
+}
+
+window.layoutTestController.setGeolocationPermission(true);
+window.layoutTestController.setMockGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy);
+
+var state = 0;
+navigator.geolocation.watchPosition(function(p) {
+ switch (state++) {
+ case 0:
+ checkPosition(p);
+ window.layoutTestController.setMockGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy);
+ break;
+ case 1:
+ checkPosition(p);
+ window.layoutTestController.setMockGeolocationError(mockCode, mockMessage);
+ break;
+ case 3:
+ checkPosition(p);
+ finishJSTest();
+ break;
+ default:
+ testFailed('Success callback invoked unexpectedly');
+ finishJSTest();
+ }
+}, function(e) {
+ switch (state++) {
+ case 2:
+ checkError(e);
+ window.layoutTestController.setMockGeolocationPosition(++mockLatitude, ++mockLongitude, ++mockAccuracy);
+ break;
+ default:
+ testFailed('Error callback invoked unexpectedly');
+ finishJSTest();
+ }
+});
+window.layoutTestController.waitUntilDone();
+
+window.jsTestIsAsync = true;
+window.successfullyParsed = true;