<!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(function(pos) {
    assert_unreached('A success callback was invoked unexpectedly with position ' + positionToString(pos));
  });

  onError =  t.step_func(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,
        'PossitionError code: ' + err.code, + ', message: ' + err.message);
    done();
  });

  geo.getCurrentPosition(onSuccess, onError);
  hasMethodReturned = true;
});
</script>

