| // 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. |
| |
| part of $LIBRARYNAME; |
| |
| $(ANNOTATIONS)$(NATIVESPEC)$(CLASS_MODIFIERS)class $CLASSNAME$EXTENDS$IMPLEMENTS { |
| factory $CLASSNAME(Map rtcIceServers, [Map$NULLABLE mediaConstraints]) { |
| var constructorName = |
| JS('RtcPeerConnection', 'window[#]', 'RTCPeerConnection'); |
| if (mediaConstraints != null) { |
| return JS('RtcPeerConnection', 'new #(#,#)', constructorName, |
| convertDartToNative_SerializedScriptValue(rtcIceServers), |
| convertDartToNative_SerializedScriptValue(mediaConstraints)); |
| } else { |
| return JS('RtcPeerConnection', 'new #(#)', constructorName, |
| convertDartToNative_SerializedScriptValue(rtcIceServers)); |
| } |
| } |
| |
| /** |
| * Checks if Real Time Communication (RTC) APIs are supported and enabled on |
| * the current platform. |
| */ |
| static bool get supported { |
| // Currently in Firefox some of the RTC elements are defined but throw an |
| // error unless the user has specifically enabled them in their |
| // about:config. So we have to construct an element to actually test if RTC |
| // is supported at the given time. |
| try { |
| new RtcPeerConnection( |
| {"iceServers": [ {"url":"stun:localhost"}]}); |
| return true; |
| } catch (_) { return false;} |
| return false; |
| } |
| |
| /** |
| * Temporarily exposes _getStats and old getStats as getLegacyStats until Chrome fully supports |
| * new getStats API. |
| */ |
| Future<RtcStatsResponse> |
| getLegacyStats([MediaStreamTrack$NULLABLE selector]) { |
| var completer = new Completer<RtcStatsResponse>(); |
| _getStats((value) { |
| completer.complete(value); |
| }, selector); |
| return completer.future; |
| } |
| @JSName('getStats') |
| Future _getStats( |
| [RtcStatsCallback$NULLABLE successCallback, |
| MediaStreamTrack$NULLABLE selector]) native; |
| |
| static Future generateCertificate(/*AlgorithmIdentifier*/ keygenAlgorithm) => |
| JS('dynamic', 'generateCertificate(#)', keygenAlgorithm); |
| |
| $!MEMBERS |
| } |