| Index: LayoutTests/dart/dom/GeolocationTest.dart | 
| diff --git a/LayoutTests/dart/dom/GeolocationTest.dart b/LayoutTests/dart/dom/GeolocationTest.dart | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..3b5763fc9d3ae9bf59410027c1ea313b5819d8ad | 
| --- /dev/null | 
| +++ b/LayoutTests/dart/dom/GeolocationTest.dart | 
| @@ -0,0 +1,44 @@ | 
| +library GeolocationTest; | 
| + | 
| +import 'package:expect/expect.dart'; | 
| +import 'package:unittest/html_config.dart'; | 
| +import 'package:unittest/unittest.dart'; | 
| +import 'dart:async'; | 
| +import 'dart:html'; | 
| + | 
| +main() { | 
| +  useHtmlConfiguration(true); | 
| + | 
| +  errorCallback(error) => | 
| +      Expect.fail('${error.error.code}: ${error.error.message}'); | 
| + | 
| +  // TODO(14150): This delay should not be necessary. | 
| +  setUp(() => new Future.delayed(Duration.ZERO)); | 
| + | 
| +  test('geolocation.getCurrentPosition', () { | 
| +    final geolocation = window.navigator.geolocation; | 
| + | 
| +    geolocation.getCurrentPosition().then(expectAsync((posA) { | 
| +      Timer.run(expectAsync(() { | 
| +        geolocation.getCurrentPosition().then(expectAsync((posB) { | 
| +          Expect.equals(posA.coords.longitude, posB.coords.longitude); | 
| +        })).catchError(errorCallback); | 
| +      })); | 
| +    })).catchError(errorCallback); | 
| +  }); | 
| + | 
| +  test('geolocation.watchPosition', () { | 
| +    final geolocation = window.navigator.geolocation; | 
| + | 
| +    var posA; | 
| +    return geolocation.getCurrentPosition().then((position) { | 
| +      posA = position; | 
| +      // TODO(14150): This delay should not be necessary. | 
| +      return new Future.delayed(Duration.ZERO); | 
| +    }).then((_) { | 
| +      return geolocation.watchPosition().first; | 
| +    }).then((posB) { | 
| +      Expect.equals(posA.coords.longitude, posB.coords.longitude); | 
| +    }); | 
| +  }); | 
| +} | 
|  |