33e91c55be
Review URL: https://codereview.chromium.org//12041090 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17619 260f80e4-7a28-3924-810f-c04153c831b5
80 lines
2.1 KiB
Plaintext
80 lines
2.1 KiB
Plaintext
// Copyright (c) 2012, 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.
|
|
|
|
part of $LIBRARYNAME;
|
|
|
|
$(ANNOTATIONS)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
|
|
|
|
$if DART2JS
|
|
@DomName('Navigator.language')
|
|
String get language => JS('String', '#.language || #.userLanguage', this,
|
|
this);
|
|
$endif
|
|
|
|
/**
|
|
* Gets a stream (video and or audio) from the local computer.
|
|
*
|
|
* Use [MediaStream.supported] to check if this is supported by the current
|
|
* platform.
|
|
*
|
|
* Example use:
|
|
*
|
|
* window.navigator.getUserMedia(audio:true, video: true).then((stream) {
|
|
* var video = new VideoElement()
|
|
* ..autoplay = true
|
|
* ..src = Url.createObjectUrl(stream);
|
|
* document.body.append(video);
|
|
* });
|
|
*
|
|
* See also:
|
|
* * [MediaStream.supported]
|
|
*/
|
|
@DomName('Navigator.webkitGetUserMedia')
|
|
@SupportedBrowser(SupportedBrowser.CHROME)
|
|
@Experimental
|
|
Future<LocalMediaStream> getUserMedia({bool audio: false,
|
|
bool video: false}) {
|
|
var completer = new Completer<LocalMediaStream>();
|
|
var options = {
|
|
'audio': audio,
|
|
'video': video
|
|
};
|
|
$if DART2JS
|
|
_ensureGetUserMedia();
|
|
this._getUserMedia(convertDartToNative_Dictionary(options),
|
|
(stream) {
|
|
completer.complete(stream);
|
|
},
|
|
(error) {
|
|
completer.completeError(error);
|
|
});
|
|
$else
|
|
this._getUserMedia(options,
|
|
(stream) {
|
|
completer.complete(stream);
|
|
},
|
|
(error) {
|
|
completer.completeError(error);
|
|
});
|
|
$endif
|
|
return completer.future;
|
|
}
|
|
|
|
$if DART2JS
|
|
_ensureGetUserMedia() {
|
|
if (JS('bool', '!(#.getUserMedia)', this)) {
|
|
JS('void', '#.getUserMedia = '
|
|
'(#.getUserMedia || #.webkitGetUserMedia || #.mozGetUserMedia ||'
|
|
'#.msGetUserMedia)', this, this, this, this, this);
|
|
}
|
|
}
|
|
|
|
@JSName('getUserMedia')
|
|
void _getUserMedia(options, _NavigatorUserMediaSuccessCallback success,
|
|
_NavigatorUserMediaErrorCallback error) native;
|
|
$endif
|
|
|
|
$!MEMBERS
|
|
}
|