Update web-platform-tests to revision 0d318188757a9c996e20b82db201fd04de5aa255

This commit is contained in:
James Graham 2015-03-27 09:15:38 +00:00
parent b2a5225831
commit 1a81b18b9f
12321 changed files with 544385 additions and 6 deletions

View file

@ -0,0 +1,113 @@
<!DOCTYPE HTML>
<meta charset="utf-8">
<title>Geolocation Test: PositionOptions tests</title>
<link rel="help" href="http://www.w3.org/TR/geolocation-API/#position_options_interface">
<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?00123
test(function() {
try {
geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: "boom"});
geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: 321});
geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: -Infinity});
geo.getCurrentPosition(dummyFunction, null, {enableHighAccuracy: {foo: 5}});
} catch(e) {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
}
}, 'Call getCurrentPosition with wrong type for enableHighAccuracy. No exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00124
test(function() {
try {
geo.watchPosition(dummyFunction, null, {enableHighAccuracy: "boom"});
geo.watchPosition(dummyFunction, null, {enableHighAccuracy: 321});
geo.watchPosition(dummyFunction, null, {enableHighAccuracy: -Infinity});
geo.watchPosition(dummyFunction, null, {enableHighAccuracy: {foo: 5}});
} catch(e) {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
}
}, 'Call watchPosition with wrong type for enableHighAccuracy. No exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00086, 00088, 00091 and 00092
test(function() {
var t86 = async_test('Set timeout and maximumAge to 0, check that timeout error raised (getCurrentPosition)'),
t88 = async_test('Set timeout and maximumAge to 0, check that timeout error raised (watchPosition)'),
t91 = async_test('Check that a negative timeout value is equivalent to a 0 timeout value (getCurrentLocation)'),
t92 = async_test('Check that a negative timeout value is equivalent to a 0 timeout value (watchPosition)');
try {
geo.getCurrentPosition(
t86.step_func(function(pos) {
assert_unreached('A success callback was invoked unexpectedly');
}),
t86.step_func(function(err) {
assert_equals(err.code, err.TIMEOUT);
t86.done();
}),
{timeout: 0, maximumAge: 0}
);
} catch(e) {
t86.step(function() {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
});
}
try {
geo.watchPosition(
t88.step_func(function(pos) {
assert_unreached('A success callback was invoked unexpectedly');
}),
t88.step_func(function(err) {
assert_equals(err.code, err.TIMEOUT);
t88.done();
}),
{timeout: 0, maximumAge: 0}
);
} catch(e) {
t88.step(function() {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
});
}
try {
geo.getCurrentPosition(
t91.step_func(function(pos) {
assert_unreached('A success callback was invoked unexpectedly');
}),
t91.step_func(function(err) {
assert_equals(err.code, err.TIMEOUT);
t91.done();
}),
{timeout:-1, maximumAge: 0}
);
} catch(e) {
t91.step(function() {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
});
}
try {
geo.watchPosition(
t92.step_func(function(pos) {
assert_unreached('A success callback was invoked unexpectedly');
done();
}),
t92.step_func(function(err) {
assert_equals(err.code, err.TIMEOUT);
done();
}),
{timeout: -1, maximumAge: 0}
);
} catch(e) {
t92.step(function() {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
});
}
}, 'PositionOptions tests');
</script>

View file

@ -0,0 +1,23 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: clearWatch TypeError tests</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#clear-watch'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='support.js'></script>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00080
test(function() {
try {
geo.clearWatch(-1);
geo.clearWatch(0);
geo.clearWatch(1);
} catch(e) {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
}
done();
}, 'Test that calling clearWatch with invalid watch IDs does not cause an exception');
</script>

View file

@ -0,0 +1,152 @@
<!DOCTYPE HTML>
<meta charset="utf-8">
<title>Geolocation Test: getCurrentPosition tests</title>
<link rel="help" href="http://www.w3.org/TR/geolocation-API/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<p>Clear all Geolocation permissions before running this test. If prompted for permission, please allow.</p>
<div id="log"></div>
<script>
var geo, success, fail;
setup(function() {
geo = navigator.geolocation;
}, {explicit_done: true});
function successCallback(position)
{
var ii, oldval;
/*
[NoInterfaceObject]
interface Position {
readonly attribute Coordinates coords;
readonly attribute DOMTimeStamp timestamp;
};
*/
test(function() {
assert_equals(position.toString(), "[object Position]",
"Position.toString should result in '[object Position]' was: " + position.toString());
}, "Position toString");
test(function() {
assert_equals(position.coords.toString(), "[object Coordinates]",
"position.coords.toString should result in '[object Coordinates]' was: " + position.coords.toString());
}, "Position.coordinates toString");
test(function() {
assert_equals(typeof(position.timestamp), "number",
"Position.timestamp should be of type 'number' was: " + typeof(position.timestamp));
}, "Position.timestamp is type number");
/*
[NoInterfaceObject]
interface Coordinates {
readonly attribute double latitude;
readonly attribute double longitude;
readonly attribute double? altitude;
readonly attribute double accuracy;
readonly attribute double? altitudeAccuracy;
readonly attribute double? heading;
readonly attribute double? speed;
};
*/
for (ii in position.coords) {
// these four can be numbers or null
if (ii == "altitude" || ii == "altitudeAccuracy" || ii == "heading" || ii == "speed") {
test(function() {
assert_true(position.coords[ii] === null || typeof(position.coords[ii]) === "number",
ii + " must be null or 'number' type, was: " + typeof(position.coords[ii]));
}, ii+ " is null or number");
} else {
test(function() {
assert_equals(typeof(position.coords[ii]), "number",
ii + " should be type 'number' but typeof returned: " + typeof(position.coords[ii]));
}, ii + " is type number");
}
oldval = position.coords[ii];
position.coords[ii] = 666;
test(function() {
assert_equals(position.coords[ii], oldval,
ii + " should be readonly, wrote: " + position.coords[ii] + " old value was " + oldval);
}, ii + " readonly");
}
success.done();
done();
}
function BadErrorCallback(error)
{
success.step(function() {
assert_unreached("Error callback called in error");
});
success.done();
done();
}
function BadSuccessCallback(position)
{
fail.step(function() {
assert_unreached("Success callback called in error");
});
fail.done();
}
function errorCallback(error)
{
test(function() {
assert_equals(error.toString(), "[object PositionError]",
"PositionError.toString should result in '[object PositionError]' was: " +
error.toString());
}, "PositionError toString");
test(function() {
assert_equals(error.PERMISSION_DENIED, 1,
"PERMISSION_DENIED should be 1 was: " + error.POSITION_DENIED);
}, "PERMISSION_DENIED value is 1");
test(function() {
assert_equals(error.POSITION_UNAVAILABLE, 2,
"POSITION_UNAVAILABLE should be 2' was: " + error.POSITION_UNAVAILABLE);
}, "POSITION_UNAVAILABLE is 2");
test(function() {
assert_equals(error.TIMEOUT, 3,
"TIMEOUT should be 3 was: " + error.TIMEOUT);
}, "TIMEOUT value is 3");
fail.done();
}
success = async_test("getCurrentPosition success callback tests", {timeout:20000});
// with a longer timeout and with the user accepting the position request,
// this should test the successcallback
success.step(function() {
geo.getCurrentPosition(
successCallback,
BadErrorCallback,
{maximumAge:600000, timeout:10000}
);
});
fail = async_test("getCurrentPosition error callback tests");
// with a timeout of 0 the error callback is hopefully consistently called
fail.step(function() {
geo.getCurrentPosition(
BadSuccessCallback,
errorCallback,
{maximumAge:00, timeout:0}
);
});
</script>

View file

@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: getCurrentPosition TypeError tests</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='support.js'></script>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00027
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition();
});
}, 'Call getCurrentPosition without arguments, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00011
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition(null);
});
}, 'Call getCurrentPosition with null success callback, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00013
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition(null, null);
});
}, 'Call getCurrentPosition with null success and error callbacks, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00028
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition(3);
});
}, 'Call getCurrentPosition() with wrong type for first argument. Exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00029
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition(dummyFunction, 4);
});
}, 'Call getCurrentPosition() with wrong type for second argument. Exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00030
test(function() {
assert_throws(new TypeError(), function() {
geo.getCurrentPosition(dummyFunction, dummyFunction, 4);
});
}, 'Call getCurrentPosition() with wrong type for third argument. Exception expected.');
done();
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Call getCurrentPosition, check that there is UI appearing with the document host</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
<p>Clear all Geolocation permissions before running this test.</p>
<p>Test passes if there is a permission prompt including the host <strong id='host'></strong> and no FAIL.</p>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00018
try {
var dummyFunction = function() {};
window.navigator.geolocation.getCurrentPosition(dummyFunction, dummyFunction);
document.getElementById('host').innerHTML = window.location.hostname;
} catch (e) {
document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
}
</script>

View file

@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>User asked to approve/remember, then asked to revoke, then reload. The permission dialogue should reappear</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
<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?00141
var nextStep, onError, isUsingPreemptivePermission = false;
nextStep = function() {
document.querySelector('p').innerHTML =
'Now revoke permissions for this origin (where applicable) and reload the page. Tests passes if there is a permission prompt again and no FAIL.';
};
onError = function(err) {
if (!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE) {
nextStep();
} else {
document.getElementById('log').innerHTML = 'FAIL: an error callback was invoked unexpectedly: ' + err.message;
}
};
try {
window.navigator.geolocation.getCurrentPosition(nextStep, onError);
} catch (e) {
document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
}
</script>

View file

@ -0,0 +1,44 @@
<!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>

View file

@ -0,0 +1,34 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>User asked to deny/remember, then asked to revoke, then reload. The permission dialogue should reappear</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#get-current-position'>
<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?00142
var onSuccess, nextStep, isUsingPreemptivePermission = false;
onSuccess = function() {
document.getElementById('log').innerHTML = 'FAIL: a success callback was invoked unexpectedly.';
};
nextStep = function(err) {
if ((err.code === err.PERMISSION_DENIED) ||
(!isUsingPreemptivePermission && err.code === err.POSITION_UNAVAILABLE)) {
document.querySelector('p').innerHTML =
'Now revoke permissions for this origin (where applicable) and reload the page. Tests passes if there is a permission prompt again and no FAIL.';
} else {
document.getElementById('log').innerHTML =
'FAIL: an error callback was invoked with unexpected error code: ' + err.code + ', error message: ' + err.message;
}
};
try {
navigator.geolocation.getCurrentPosition(onSuccess, nextStep);
} catch (e) {
document.getElementById('log').innerHTML = 'FAIL: an exception was thrown unexpectedly: ' + e.message;
}
</script>

View file

@ -0,0 +1,34 @@
<!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>

View file

@ -0,0 +1,95 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>Geolocation API IDL tests</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="http://www.w3.org/TR/geolocation-API/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<h1>Geolocation API IDL tests</h1>
<div id="log"></div>
<script type=text/plain class=untested>
interface Navigator {
};
typedef unsigned long long DOMTimeStamp;
</script>
<script type=text/plain>
partial interface Navigator {
readonly attribute Geolocation geolocation;
};
[NoInterfaceObject]
interface Geolocation {
void getCurrentPosition(PositionCallback successCallback,
optional PositionErrorCallback errorCallback,
optional PositionOptions options);
long watchPosition(PositionCallback successCallback,
optional PositionErrorCallback errorCallback,
optional PositionOptions options);
void clearWatch(long watchId);
};
callback PositionCallback = void (Position position);
callback PositionErrorCallback = void (PositionError positionError);
dictionary PositionOptions {
boolean enableHighAccuracy = false;
[Clamp] unsigned long timeout = 0xFFFFFFFF;
[Clamp] unsigned long maximumAge = 0;
};
[NoInterfaceObject]
interface Position {
readonly attribute Coordinates coords;
readonly attribute DOMTimeStamp timestamp;
};
[NoInterfaceObject]
interface Coordinates {
readonly attribute double latitude;
readonly attribute double longitude;
readonly attribute double? altitude;
readonly attribute double accuracy;
readonly attribute double? altitudeAccuracy;
readonly attribute double? heading;
readonly attribute double? speed;
};
[NoInterfaceObject]
interface PositionError {
const unsigned short PERMISSION_DENIED = 1;
const unsigned short POSITION_UNAVAILABLE = 2;
const unsigned short TIMEOUT = 3;
readonly attribute unsigned short code;
readonly attribute DOMString message;
};
</script>
<script>
"use strict";
var idlArray;
setup(function() {
idlArray = new IdlArray();
[].forEach.call(document.querySelectorAll("script[type=text\\/plain]"), function(node) {
if (node.className == "untested") {
idlArray.add_untested_idls(node.textContent);
} else {
idlArray.add_idls(node.textContent);
}
});
idlArray.add_objects({
Navigator: ["navigator"],
Geolocation: ["navigator.geolocation"]
});
});
idlArray.test();
</script>

View file

@ -0,0 +1,30 @@
var geo;
setup(function() {
geo = navigator.geolocation;
}, {explicit_done: true});
// The spec states that an implementation SHOULD acquire user permission before
// beggining the position acquisition steps. If an implementation follows this
// advice, set the following flag to aid debugging.
var isUsingPreemptivePermission = false;
var dummyFunction = function() {};
var positionToString = function(pos) {
var c = pos.coords;
return '[lat: ' + c.latitude + ', lon: ' + c.longitude + ', acc: ' + c.accuracy + ']';
};
var errorToString = function(err) {
var codeString;
switch(err.code) {
case err.UNKNOWN_ERROR: codeString = 'UNKNOWN_ERROR'; break;
case err.PERMISSION_DENIED: codeString = 'PERMISSION_DENIED'; break;
case err.POSITION_UNAVAILABLE: codeString = 'POSITION_UNAVAILABLE'; break;
case err.TIMEOUT: codeString = 'TIMEOUT'; break;
default: codeString = 'undefined error code'; break;
}
return '[code: ' + codeString + ' (' + err.code + '), message: ' + (err.message ? err.message : '(empty)') + ']';
};

View file

@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: watchPosition TypeError tests</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/'>
<script src='/resources/testharness.js'></script>
<script src='/resources/testharnessreport.js'></script>
<script src='support.js'></script>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00058
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition();
});
}, 'Call watchPosition without arguments, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00015
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition(null);
});
}, 'Call watchPosition with null success callback, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00017
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition(null, null);
});
}, 'Call watchPosition with null success and error callbacks, check that exception is thrown');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00059
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition(3);
});
}, 'Call watchPosition() with wrong type for first argument. Exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00060
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition(dummyFunction, 4);
});
}, 'Call watchPosition() with wrong type for second argument. Exception expected.');
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00061
test(function() {
assert_throws(new TypeError(), function() {
geo.watchPosition(dummyFunction, dummyFunction, 4);
});
}, 'Call watchPosition() with wrong type for third argument. Exception expected.');
done();
</script>

View file

@ -0,0 +1,21 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Call watchPosition, check that there is UI appearing with the document host</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#privacy_for_uas'>
<p>Clear all Geolocation permissions before running this test.</p>
<p>Test passes if there is a permission prompt including the host <strong id='host'></strong> and no FAIL.</p>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00019
try {
var dummyFunction = function() {};
window.navigator.geolocation.watchPosition(dummyFunction, dummyFunction);
document.getElementById('host').innerHTML = window.location.hostname;
} catch (e) {
document.getElementById('log').innerHTML = 'FAIL: ' + e.message;
}
</script>

View file

@ -0,0 +1,36 @@
<!DOCTYPE HTML>
<meta charset='utf-8'>
<title>Geolocation Test: watchPosition location access denied</title>
<link rel='help' href='http://www.w3.org/TR/geolocation-API/#watch-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 deny.</p>
<div id='log'></div>
<script>
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00062
var t = async_test('Check that watchPosition returns synchronously before any callbacks are invoked.'),
id, checkMethodHasReturned, hasMethodReturned = false;
checkMethodHasReturned = t.step_func(function() {
assert_true(hasMethodReturned);
done();
});
try {
id = geo.watchPosition(checkMethodHasReturned, checkMethodHasReturned);
hasMethodReturned = true;
} catch(e) {
t.step(function() {
assert_unreached('An exception was thrown unexpectedly: ' + e.message);
});
}
// Rewrite http://dev.w3.org/geo/api/test-suite/t.html?00151
test(function() {
assert_greater_than_equal(id, -2147483648);
assert_less_than_equal(id, 2147483647);
}, 'Check that watchPosition returns a long');
</script>