| <!DOCTYPE HTML> | 
 | <meta charset='utf-8'> | 
 | <title>Geolocation Test: getCurrentPosition location access allowed</title> | 
 | <link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'> | 
 | <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 allow.</p> | 
 | <div id='log'></div> | 
 |  | 
 | <script> | 
 | // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00002 | 
 | var t = async_test('User allows access, check that success callback is called or error callback is called with correct code.'), | 
 |     onSuccess, onError, hasMethodReturned = false; | 
 |  | 
 | onSuccess = t.step_func(function(pos) { | 
 |   // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031 | 
 |   test(function() { | 
 |     assert_true(hasMethodReturned); | 
 |   }, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked.'); | 
 |  | 
 |   done(); | 
 | }); | 
 |  | 
 | onError = t.step_func(function(err) { | 
 |   // Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00031 | 
 |   test(function() { | 
 |     assert_true(hasMethodReturned); | 
 |   }, 'Check that getCurrentPosition returns synchronously before any callbacks are invoked.'); | 
 |  | 
 |   assert_true(!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE); | 
 |   done(); | 
 | }); | 
 |  | 
 | try { | 
 |   geo.getCurrentPosition(onSuccess, onError); | 
 |   hasMethodReturned = true; | 
 | } catch(e) { | 
 |   t.step(function() { | 
 |     assert_unreached('An exception was thrown unexpectedly: ' + e.message); | 
 |   }); | 
 | } | 
 | </script> |