gecko/dom/tests/mochitest/geolocation/test_timerRestartWatch.html
Garvan Keeley 93447c88fb Bug 1018383 - Added request-level caching in NetworkGeolocationProvider.js. r=jdm
This is a cleanup of the patch used in the Tarako bug. I made it clearer that this is request-level caching, NOT position caching.
 This is specifically for preventing unnecessary requests to the server. It is unrelated to the W3C PositionOptions and their effect on position caching.
 Hopefully this detail is clearer in this patch.

Updated mochitests that were relying on old logic to succeed

The failing mochitests were relying on the provider to have a specific behaviour -behaviours that are incidental to the test case. I updated these to reflect the behaviour of the current system.
2014-07-07 07:16:00 +02:00

70 lines
1.7 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=526326
-->
<head>
<title>Test for watchPosition </title>
<script type="text/javascript" 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">
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, "ensure error is a timeout.");
times++;
// 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");
// Now that we got a success callback, lets 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>