Chromium Code Reviews| Index: content/renderer/media/rtc_stats.cc |
| diff --git a/content/renderer/media/rtc_stats.cc b/content/renderer/media/rtc_stats.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..d9049b46eea591b862e80e4e72792e472570f2ad |
| --- /dev/null |
| +++ b/content/renderer/media/rtc_stats.cc |
| @@ -0,0 +1,151 @@ |
| +// Copyright (c) 2016 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "content/renderer/media/rtc_stats.h" |
| + |
| +#include "base/logging.h" |
| +#include "third_party/webrtc/api/rtcstats.h" |
| + |
| +namespace content { |
| + |
| +namespace { |
| + |
| +double kMillisecondsPerMicrosecond = 0.001; |
|
perkj_chrome
2016/09/07 14:34:36
I am sure this const exist in a number of places.
hbos_chromium
2016/09/08 08:38:31
Done.
|
| + |
| +} // namespace |
| + |
| +RTCStats::RTCStats(const webrtc::RTCStats* stats) |
| + : stats_(stats), |
| + members_(stats->Members()) { |
| + DCHECK(stats_); |
| +} |
| + |
| +RTCStats::~RTCStats() { |
| +} |
| + |
| +blink::WebString RTCStats::id() const { |
| + return blink::WebString::fromUTF8(stats_->id()); |
| +} |
| + |
| +blink::WebString RTCStats::type() const { |
| + return blink::WebString::fromUTF8(stats_->type()); |
| +} |
| + |
| +double RTCStats::timestamp() const { |
| + return stats_->timestamp_us() * kMillisecondsPerMicrosecond; |
| +} |
| + |
| +size_t RTCStats::membersCount() const { |
| + return members_.size(); |
| +} |
| + |
| +std::unique_ptr<blink::WebRTCStatsMember> RTCStats::getMember(size_t i) const { |
| + DCHECK_LT(i, members_.size()); |
| + return std::unique_ptr<blink::WebRTCStatsMember>( |
| + new RTCStatsMember(members_[i])); |
| +} |
| + |
| +RTCStatsMember::RTCStatsMember(const webrtc::RTCStatsMemberInterface* member) |
| + : member_(member) { |
| + DCHECK(member_); |
| +} |
| + |
| +blink::WebString RTCStatsMember::name() const { |
| + return blink::WebString::fromUTF8(member_->name()); |
| +} |
| + |
| +blink::WebRTCStatsMemberType RTCStatsMember::type() const { |
| + switch (member_->type()) { |
| + case webrtc::RTCStatsMemberInterface::kInt32: |
| + return blink::WebRTCStatsMemberTypeInt32; |
| + case webrtc::RTCStatsMemberInterface::kUint32: |
| + return blink::WebRTCStatsMemberTypeUint32; |
| + case webrtc::RTCStatsMemberInterface::kInt64: |
| + return blink::WebRTCStatsMemberTypeInt64; |
| + case webrtc::RTCStatsMemberInterface::kUint64: |
| + return blink::WebRTCStatsMemberTypeUint64; |
| + case webrtc::RTCStatsMemberInterface::kDouble: |
| + return blink::WebRTCStatsMemberTypeDouble; |
| + case webrtc::RTCStatsMemberInterface::kStaticString: |
| + return blink::WebRTCStatsMemberTypeStaticString; |
| + case webrtc::RTCStatsMemberInterface::kString: |
| + return blink::WebRTCStatsMemberTypeString; |
| + case webrtc::RTCStatsMemberInterface::kSequenceInt32: |
| + return blink::WebRTCStatsMemberTypeSequenceInt32; |
| + case webrtc::RTCStatsMemberInterface::kSequenceUint32: |
| + return blink::WebRTCStatsMemberTypeSequenceUint32; |
| + case webrtc::RTCStatsMemberInterface::kSequenceInt64: |
| + return blink::WebRTCStatsMemberTypeSequenceInt64; |
| + case webrtc::RTCStatsMemberInterface::kSequenceUint64: |
| + return blink::WebRTCStatsMemberTypeSequenceUint64; |
| + case webrtc::RTCStatsMemberInterface::kSequenceDouble: |
| + return blink::WebRTCStatsMemberTypeSequenceDouble; |
| + case webrtc::RTCStatsMemberInterface::kSequenceStaticString: |
| + return blink::WebRTCStatsMemberTypeSequenceStaticString; |
| + case webrtc::RTCStatsMemberInterface::kSequenceString: |
| + return blink::WebRTCStatsMemberTypeSequenceString; |
| + default: |
| + NOTREACHED(); |
| + return blink::WebRTCStatsMemberTypeSequenceInt32; |
| + } |
| +} |
| + |
| +int32_t RTCStatsMember::valueInt32() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<int32_t>>(); |
| +} |
| + |
| +uint32_t RTCStatsMember::valueUint32() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<uint32_t>>(); |
| +} |
| + |
| +int64_t RTCStatsMember::valueInt64() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<int64_t>>(); |
| +} |
| + |
| +uint64_t RTCStatsMember::valueUint64() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<uint64_t>>(); |
| +} |
| + |
| +double RTCStatsMember::valueDouble() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<double>>(); |
| +} |
| + |
| +const char* RTCStatsMember::valueStaticString() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<const char*>>(); |
| +} |
| + |
| +const std::string& RTCStatsMember::valueString() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::string>>(); |
| +} |
| + |
| +const std::vector<int32_t>& RTCStatsMember::valueSequenceInt32() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<int32_t>>>(); |
| +} |
| + |
| +const std::vector<uint32_t>& RTCStatsMember::valueSequenceUint32() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<uint32_t>>>(); |
| +} |
| + |
| +const std::vector<int64_t>& RTCStatsMember::valueSequenceInt64() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<int64_t>>>(); |
| +} |
| + |
| +const std::vector<uint64_t>& RTCStatsMember::valueSequenceUint64() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<uint64_t>>>(); |
| +} |
| + |
| +const std::vector<double>& RTCStatsMember::valueSequenceDouble() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<double>>>(); |
| +} |
| + |
| +const std::vector<const char*>& RTCStatsMember::valueSequenceStaticString() |
| + const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<const char*>>>(); |
| +} |
| + |
| +const std::vector<std::string>& RTCStatsMember::valueSequenceString() const { |
| + return *member_->cast_to<webrtc::RTCStatsMember<std::vector<std::string>>>(); |
| +} |
| + |
| +} // namespace content |