3776313e65
Introduces NULLASSERT token and NNBD condition to allow code to conditionally compile with NNBD. Change-Id: Ib71e439f32c793e69b66c328cd7c9900358d886e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/134045 Commit-Queue: Srujan Gaddam <srujzs@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
60 lines
2.1 KiB
Plaintext
60 lines
2.1 KiB
Plaintext
// 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
|
|
}
|