diff options
Diffstat (limited to 'dom/tests/mochitest/geolocation/test_timerRestartWatch.html')
-rw-r--r-- | dom/tests/mochitest/geolocation/test_timerRestartWatch.html | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/dom/tests/mochitest/geolocation/test_timerRestartWatch.html b/dom/tests/mochitest/geolocation/test_timerRestartWatch.html new file mode 100644 index 0000000000..fe190951b7 --- /dev/null +++ b/dom/tests/mochitest/geolocation/test_timerRestartWatch.html @@ -0,0 +1,75 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=526326 +--> +<head> + <title>Test for watchPosition </title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript" src="geolocation_common.js"></script> + +<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=526326">Mozilla Bug 526326</a> +<p id="display"></p> +<div id="content" style="display: none"> + +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> +"use strict"; + +SimpleTest.waitForExplicitFinish(); + +// ensure we are using the right testing provider +resume_geolocationProvider(function() { + force_prompt(true, test1); +}); + +var watchID; +var times = 0; + +function errorCallback(err) { + ok(err.code === err.TIMEOUT || + err.code === err.POSITION_UNAVAILABLE, `check error code: ${err.code}`); + + times++; + isnot(times, 0, "times should be nonzero"); + isnot(times, 4, "should not receive more than three error callbacks"); + + // make sure we got at least 3 times errorCallback + if (times >= 3) { + navigator.geolocation.clearWatch(watchID); + resume_geolocationProvider(function() { + set_network_request_cache_enabled(true, + function() { SimpleTest.finish(); } ); + }); + } +} + +function successCallback(position) { + ok(1, "on success"); + check_geolocation(position); + + // Now that we got a success callback, let's try to ensure + // that we get a timeout error. + // The network cache is already off, now stop the sjs from reponding to requests + stop_geolocationProvider(function(){}); +} + +var options = { + maximumAge: 0, + timeout: 1000 +}; + +function test1() { + set_network_request_cache_enabled(false, + function() { + watchID = navigator.geolocation.watchPosition(successCallback, errorCallback, options); + }); +} +</script> +</pre> +</body> +</html> |