blob: edef2250882161c82f759d0c16a02e6c2eb69264 [file] [log] [blame]
// 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)class $CLASSNAME$EXTENDS$IMPLEMENTS$NATIVESPEC {
$if DART2JS
factory $CLASSNAME(Map rtcIceServers, [Map mediaConstraints]) {
var constructorName = JS('RtcPeerConnection', 'window[#]',
'${Device.propertyPrefix}RTCPeerConnection');
if (?mediaConstraints) {
return JS('RtcPeerConnection', 'new #(#,#)', constructorName,
convertDartToNative_SerializedScriptValue(rtcIceServers),
convertDartToNative_SerializedScriptValue(mediaConstraints));
} else {
return JS('RtcPeerConnection', 'new #(#)', constructorName,
convertDartToNative_SerializedScriptValue(rtcIceServers));
}
}
$endif
/**
* Checks if Real Time Communication (RTC) APIs are supported and enabled on
* the current platform.
*/
$if DART2JS
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 at the given time.
try {
var c = new RtcPeerConnection({"iceServers": [ {"url":"stun:foo.com"}]});
return c is RtcPeerConnection;
} catch (_) {}
return false;
}
$else
static bool get supported => true;
$endif
$!MEMBERS
}