description("Tests that reentrant calls to Geolocation methods from the error callback are OK.");
var mockCode = 0;
var mockMessage = 'test';
window.layoutTestController.setMockGeolocationError(mockCode, mockMessage);
var error;
var errorCallbackInvoked = false;
navigator.geolocation.getCurrentPosition(function(p) {
testFailed('Success callback invoked unexpectedly');
window.layoutTestController.notifyDone();
}, function(e) {
if (errorCallbackInvoked) {
testFailed('Error callback invoked unexpectedly');
window.layoutTestController.notifyDone();
}
errorCallbackInvoked = true;
error = e;
shouldBe('error.code', 'mockCode');
shouldBe('error.message', 'mockMessage');
debug('');
continueTest();
});
function continueTest() {
mockCode += 1;
mockMessage += ' repeat';
window.layoutTestController.setMockGeolocationError(mockCode, mockMessage);
navigator.geolocation.getCurrentPosition(function(p) {
testFailed('Success callback invoked unexpectedly');
window.layoutTestController.notifyDone();
}, function(e) {
error = e;
shouldBe('error.code', 'mockCode');
shouldBe('error.message', 'mockMessage');
debug('<br /><span class="pass">TEST COMPLETE</span>');
window.layoutTestController.notifyDone();
});
}
window.layoutTestController.waitUntilDone();
var isAsynchronous = true;
var successfullyParsed = true;