16b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerdescription("Tests that Geoposition timestamps are well-formed (non-zero and in the same units as Date.getTime)."); 26b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 36b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar mockLatitude = 51.478; 46b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar mockLongitude = -0.166; 56b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar mockAccuracy = 100.0; 66b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 76b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerif (window.layoutTestController) { 86b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner layoutTestController.setGeolocationPermission(true); 96b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner layoutTestController.setMockGeolocationPosition(mockLatitude, mockLongitude, mockAccuracy); 106b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner} 116b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 126b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar now = new Date().getTime(); 136b70adc33054f8aee8c54d0f460458a9df11b8a5Russell BrennershouldBeTrue('now != 0'); 146b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar t = null; 156b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar then = null; 166b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 176b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerfunction checkPosition(p) { 186b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner t = p.timestamp; 196b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner var d = new Date(); 206b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner then = d.getTime(); 216b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner shouldBeTrue('t != 0'); 226b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner shouldBeTrue('then != 0'); 236b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner shouldBeTrue('now - 1 <= t'); // Avoid rounding errors 246b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (now - 1 > t) { 256b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner debug(" now - 1 = " + (now-1)); 266b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner debug(" t = " + t); 276b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner } 286b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner shouldBeTrue('t <= then + 1'); // Avoid rounding errors 296b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner finishJSTest(); 306b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner} 316b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner 326b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennernavigator.geolocation.getCurrentPosition(checkPosition); 336b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerwindow.jsTestIsAsync = true; 346b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerwindow.successfullyParsed = true; 35