Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / LayoutTests / fast / dom / Geolocation / script-tests / cached-position-called-once.js
blob41b7d0a6d164d9a2fe2e5bd6b46c72b8ced64a91
1 description('Tests that when a cached position is available the callback for getCurrentPosition is called only once. This is a regression test for http://crbug.com/311876 .');
3 if (!window.testRunner || !window.internals)
4     debug('This test can not run without testRunner or internals');
6 internals.setGeolocationClientMock(document);
7 internals.setGeolocationPosition(document, 31.478, -0.166, 100);
8 internals.setGeolocationPermission(document, true);
10 // Only one success callback should be reported per call to getCurrentPosition.
11 var reportCount = 0;
12 function reportCallback(success, id) {
13     isSuccess = success;
14     shouldBeTrue('isSuccess');
15     getCurrentPositionCallId = id;
16     shouldBe('getCurrentPositionCallId', 'reportCount');
17     if (++reportCount >= 3)
18         finishJSTest();
21 var getCurrentPositionCall = 0;
22 function getPosition(milliseconds) {
23     var id = getCurrentPositionCall++;
24     var fn = function() {
25         navigator.geolocation.getCurrentPosition(
26                 function(position) {
27                     reportCallback(true, id);
28                 },
29                 function(error) {
30                     reportCallback(false, id);
31                 },
32                 { maximumAge:600000, timeout:0 });
33     };
34     setTimeout(fn, milliseconds);
37 // The test terminates at the 3rd reported callback. If the bug still exists
38 // this happens after the 2nd call to getCurrentPosition, one of them is a
39 // repeat of the first.
40 getPosition(0);
41 getPosition(100);
42 getPosition(200);
44 window.jsTestIsAsync = true;