#include "third_party/blink/renderer/modules/peerconnection/rtc_stats_report.h"
#include "base/feature_list.h"
#include "base/notreached.h"
#include "base/numerics/safe_conversions.h"
#include "third_party/blink/public/common/features.h"
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_object_builder.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_audio_playout_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_audio_source_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_certificate_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_codec_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_data_channel_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_ice_candidate_pair_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_ice_candidate_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_inbound_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_media_source_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_outbound_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_peer_connection_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_received_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_remote_inbound_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_remote_outbound_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_sent_rtp_stream_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_transport_stats.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_video_source_stats.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/modules/mediastream/user_media_client.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/peerconnection/rtc_stats.h"
#include "third_party/blink/renderer/platform/wtf/casting.h"
#include "third_party/webrtc/api/stats/rtc_stats.h"
#include "third_party/webrtc/api/stats/rtc_stats_report.h"
#include "third_party/webrtc/api/stats/rtcstats_objects.h"
#include "v8/include/v8-local-handle.h"
#include "v8/include/v8-object.h"
namespace blink {
namespace {
template <typename T>
v8::Local<v8::Value> HashMapToValue(ScriptState* script_state,
HashMap<String, T>&& map) { … }
bool IsCapturing(LocalDOMWindow* window) { … }
bool ExposeHardwareCapabilityStats(ScriptState* script_state) { … }
RTCCodecStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCCodecStats& webrtc_stat) { … }
RTCInboundRtpStreamStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCInboundRtpStreamStats& webrtc_stat,
bool expose_hardware_caps) { … }
RTCRemoteInboundRtpStreamStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCRemoteInboundRtpStreamStats& webrtc_stat) { … }
RTCOutboundRtpStreamStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCOutboundRtpStreamStats& webrtc_stat,
bool expose_hardware_caps) { … }
RTCRemoteOutboundRtpStreamStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCRemoteOutboundRtpStreamStats& webrtc_stat) { … }
RTCAudioSourceStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCAudioSourceStats& webrtc_stat) { … }
RTCVideoSourceStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCVideoSourceStats& webrtc_stat) { … }
RTCAudioPlayoutStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCAudioPlayoutStats& webrtc_stat) { … }
RTCPeerConnectionStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCPeerConnectionStats& webrtc_stat) { … }
RTCDataChannelStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCDataChannelStats& webrtc_stat) { … }
RTCTransportStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCTransportStats& webrtc_stat) { … }
RTCIceCandidateStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCIceCandidateStats& webrtc_stat) { … }
RTCIceCandidatePairStats* ToV8Stat(
ScriptState* script_state,
const webrtc::RTCIceCandidatePairStats& webrtc_stat) { … }
RTCCertificateStats* ToV8Stat(ScriptState* script_state,
const webrtc::RTCCertificateStats& webrtc_stat) { … }
RTCStats* RTCStatsToIDL(ScriptState* script_state,
const webrtc::RTCStats& stat,
bool expose_hardware_caps) { … }
class RTCStatsReportIterationSource final
: public PairSyncIterable<RTCStatsReport>::IterationSource { … };
}
RTCStatsReport::RTCStatsReport(std::unique_ptr<RTCStatsReportPlatform> report)
: … { … }
uint32_t RTCStatsReport::size() const { … }
PairSyncIterable<RTCStatsReport>::IterationSource*
RTCStatsReport::CreateIterationSource(ScriptState*, ExceptionState&) { … }
bool RTCStatsReport::GetMapEntryIdl(ScriptState* script_state,
const String& key,
ScriptValue& value,
ExceptionState&) { … }
bool RTCStatsReport::GetMapEntry(ScriptState* script_state,
const String& key,
ScriptValue& value,
ExceptionState& exception_state) { … }
}