| Index: test/codegen/lib/html/interactive_test.dart
|
| diff --git a/test/codegen/lib/html/interactive_test.dart b/test/codegen/lib/html/interactive_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..82a879b89412e666e130c8f4fa67da3d4f8dfa6d
|
| --- /dev/null
|
| +++ b/test/codegen/lib/html/interactive_test.dart
|
| @@ -0,0 +1,138 @@
|
| + // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library interactive_test;
|
| +
|
| +import 'dart:async';
|
| +import 'dart:html';
|
| +import 'package:unittest/unittest.dart';
|
| +import 'package:unittest/html_individual_config.dart';
|
| +import 'utils.dart';
|
| +
|
| +
|
| +main() {
|
| + useHtmlIndividualConfiguration();
|
| +
|
| + group('Geolocation', () {
|
| + test('getCurrentPosition', () {
|
| + return window.navigator.geolocation.getCurrentPosition().then(
|
| + (position) {
|
| + expect(position.coords.latitude, isNotNull);
|
| + expect(position.coords.longitude, isNotNull);
|
| + expect(position.coords.accuracy, isNotNull);
|
| + });
|
| + });
|
| +
|
| + test('watchPosition', () {
|
| + return window.navigator.geolocation.watchPosition().first.then(
|
| + (position) {
|
| + expect(position.coords.latitude, isNotNull);
|
| + expect(position.coords.longitude, isNotNull);
|
| + expect(position.coords.accuracy, isNotNull);
|
| + });
|
| + });
|
| + });
|
| +
|
| + group('MediaStream', () {
|
| + if (MediaStream.supported) {
|
| + test('getUserMedia', () {
|
| + return window.navigator.getUserMedia(video: true).then((stream) {
|
| + expect(stream, isNotNull);
|
| +
|
| + var url = Url.createObjectUrlFromStream(stream);
|
| + expect(url, isNotNull);
|
| +
|
| + var video = new VideoElement()
|
| + ..autoplay = true;
|
| +
|
| + var completer = new Completer();
|
| + video.onError.listen((e) {
|
| + completer.completeError(e);
|
| + });
|
| + video.onPlaying.first.then((e) {
|
| + completer.complete(video);
|
| + });
|
| +
|
| + document.body.append(video);
|
| + video.src = url;
|
| +
|
| + return completer.future;
|
| + });
|
| + });
|
| +
|
| + test('getUserMediaComplexConstructor', () {
|
| + return window.navigator.getUserMedia(
|
| + video: {'mandatory':
|
| + { 'minAspectRatio': 1.333, 'maxAspectRatio': 1.334 },
|
| + 'optional':
|
| + [{ 'minFrameRate': 60 },
|
| + { 'maxWidth': 640 }]
|
| + }).then((stream) {
|
| + expect(stream, isNotNull);
|
| +
|
| + var url = Url.createObjectUrlFromStream(stream);
|
| + expect(url, isNotNull);
|
| +
|
| + var video = new VideoElement()
|
| + ..autoplay = true;
|
| +
|
| + var completer = new Completer();
|
| + video.onError.listen((e) {
|
| + completer.completeError(e);
|
| + });
|
| + video.onPlaying.first.then((e) {
|
| + completer.complete(video);
|
| + });
|
| +
|
| + document.body.append(video);
|
| + video.src = url;
|
| +
|
| + return completer.future;
|
| + });
|
| + });
|
| + }
|
| + });
|
| +
|
| + group('KeyEvent', () {
|
| + keydownHandlerTest(KeyEvent e) {
|
| + document.body.innerHtml =
|
| + '${document.body.innerHtml}KeyDOWN: CharCode: ${e.charCode}, KeyCode:'
|
| + ' ${e.keyCode}<br />';
|
| + expect(e.charCode, 0);
|
| + }
|
| + keypressHandlerTest(KeyEvent e) {
|
| + document.body.innerHtml =
|
| + '${document.body.innerHtml}KeyPRESS: CharCode: ${e.charCode}, '
|
| + 'KeyCode: ${e.keyCode}<br />';
|
| + }
|
| + keyupHandlerTest(KeyEvent e) {
|
| + document.body.innerHtml =
|
| + '${document.body.innerHtml}KeyUP: CharCode: ${e.charCode}, KeyCode:'
|
| + ' ${e.keyCode}<br />';
|
| + expect(e.charCode, 0);
|
| + }
|
| + keyupHandlerTest2(KeyEvent e) {
|
| + document.body.innerHtml =
|
| + '${document.body.innerHtml}A second KeyUP handler: CharCode: '
|
| + '${e.charCode}, KeyCode: ${e.keyCode}<br />';
|
| + expect(e.charCode, 0);
|
| + }
|
| + test('keys', () {
|
| + document.body.innerHtml =
|
| + '${document.body.innerHtml}To test keyboard event values, press some '
|
| + 'keys on your keyboard.<br /><br />The charcode for keydown and keyup'
|
| + ' should be 0, and the keycode should (generally) be populated with a'
|
| + ' value. Keycode and charcode should both have values for the '
|
| + 'keypress event.';
|
| + KeyboardEventStream.onKeyDown(document.body).listen(
|
| + keydownHandlerTest);
|
| + KeyboardEventStream.onKeyPress(document.body).listen(
|
| + keypressHandlerTest);
|
| + KeyboardEventStream.onKeyUp(document.body).listen(
|
| + keyupHandlerTest);
|
| + KeyboardEventStream.onKeyUp(document.body).listen(
|
| + keyupHandlerTest2);
|
| + });
|
| + });
|
| +}
|
|
|