<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: getCurrentPosition location access denied</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='support.js'></script>

<p>Clear all Geolocation permissions before running this test. If prompted for permission, please deny.</p>
<div id='log'></div>

<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00001
var t = async_test('User denies access, check that error callback is called with correct code'),
    onSuccess, onError, hasMethodReturned = false;

t.step(function() {
  onSuccess = t.step_func_done(function(pos) {
    assert_unreached('A success callback was invoked unexpectedly with position ' + positionToString(pos));
  });

  onError =  t.step_func_done(function(err) {
    // http://dev.w3.org/geo/api/test-suite/t.html?00031
    assert_true(hasMethodReturned, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked');
    assert_equals(err.code, err.PERMISSION_DENIED, errorToString(err));
  });

  geo.getCurrentPosition(onSuccess, onError);
  hasMethodReturned = true;
});

</script>
