diff --git a/webrtc/api/stats/rtcstats.h b/webrtc/api/stats/rtcstats.h index 01dd1c3e21..988291bd11 100644 --- a/webrtc/api/stats/rtcstats.h +++ b/webrtc/api/stats/rtcstats.h @@ -166,6 +166,7 @@ class RTCStatsMemberInterface { public: // Member value types. enum Type { + kBool, // bool kInt32, // int32_t kUint32, // uint32_t kInt64, // int64_t @@ -173,6 +174,7 @@ class RTCStatsMemberInterface { kDouble, // double kString, // std::string + kSequenceBool, // std::vector kSequenceInt32, // std::vector kSequenceUint32, // std::vector kSequenceInt64, // std::vector diff --git a/webrtc/stats/rtcstats.cc b/webrtc/stats/rtcstats.cc index 6b6c437c22..543ef42013 100644 --- a/webrtc/stats/rtcstats.cc +++ b/webrtc/stats/rtcstats.cc @@ -93,6 +93,8 @@ RTCStats::MembersOfThisObjectAndAncestors( return to_str; \ } +WEBRTC_DEFINE_RTCSTATSMEMBER(bool, kBool, false, false, + rtc::ToString(value_)); WEBRTC_DEFINE_RTCSTATSMEMBER(int32_t, kInt32, false, false, rtc::ToString(value_)); WEBRTC_DEFINE_RTCSTATSMEMBER(uint32_t, kUint32, false, false, @@ -105,6 +107,9 @@ WEBRTC_DEFINE_RTCSTATSMEMBER(double, kDouble, false, false, rtc::ToString(value_)); WEBRTC_DEFINE_RTCSTATSMEMBER(std::string, kString, false, true, value_); +WEBRTC_DEFINE_RTCSTATSMEMBER( + std::vector, kSequenceBool, true, false, + VectorToString(value_)); WEBRTC_DEFINE_RTCSTATSMEMBER( std::vector, kSequenceInt32, true, false, VectorToString(value_)); diff --git a/webrtc/stats/rtcstats_unittest.cc b/webrtc/stats/rtcstats_unittest.cc index 6cb8817969..88a2e03472 100644 --- a/webrtc/stats/rtcstats_unittest.cc +++ b/webrtc/stats/rtcstats_unittest.cc @@ -51,10 +51,11 @@ TEST(RTCStatsTest, RTCStatsAndMembers) { EXPECT_EQ(stats.id(), "testId"); EXPECT_EQ(stats.timestamp_us(), static_cast(42)); std::vector members = stats.Members(); - EXPECT_EQ(members.size(), static_cast(12)); + EXPECT_EQ(members.size(), static_cast(14)); for (const RTCStatsMemberInterface* member : members) { EXPECT_FALSE(member->is_defined()); } + stats.m_bool = true; stats.m_int32 = 123; stats.m_uint32 = 123; stats.m_int64 = 123; @@ -62,6 +63,8 @@ TEST(RTCStatsTest, RTCStatsAndMembers) { stats.m_double = 123.0; stats.m_string = std::string("123"); + std::vector sequence_bool; + sequence_bool.push_back(true); std::vector sequence_int32; sequence_int32.push_back(static_cast(1)); std::vector sequence_uint32; @@ -75,6 +78,7 @@ TEST(RTCStatsTest, RTCStatsAndMembers) { std::vector sequence_string; sequence_string.push_back(std::string("six")); + stats.m_sequence_bool = sequence_bool; stats.m_sequence_int32 = sequence_int32; stats.m_sequence_uint32 = sequence_uint32; EXPECT_FALSE(stats.m_sequence_int64.is_defined()); @@ -85,12 +89,14 @@ TEST(RTCStatsTest, RTCStatsAndMembers) { for (const RTCStatsMemberInterface* member : members) { EXPECT_TRUE(member->is_defined()); } + EXPECT_EQ(*stats.m_bool, true); EXPECT_EQ(*stats.m_int32, static_cast(123)); EXPECT_EQ(*stats.m_uint32, static_cast(123)); EXPECT_EQ(*stats.m_int64, static_cast(123)); EXPECT_EQ(*stats.m_uint64, static_cast(123)); EXPECT_EQ(*stats.m_double, 123.0); EXPECT_EQ(*stats.m_string, std::string("123")); + EXPECT_EQ(*stats.m_sequence_bool, sequence_bool); EXPECT_EQ(*stats.m_sequence_int32, sequence_int32); EXPECT_EQ(*stats.m_sequence_uint32, sequence_uint32); EXPECT_EQ(*stats.m_sequence_int64, sequence_int64); diff --git a/webrtc/stats/test/rtcteststats.cc b/webrtc/stats/test/rtcteststats.cc index c317294332..a4bff77564 100644 --- a/webrtc/stats/test/rtcteststats.cc +++ b/webrtc/stats/test/rtcteststats.cc @@ -16,12 +16,14 @@ const char RTCTestStats::kType[] = "test-stats"; RTCTestStats::RTCTestStats(const std::string& id, int64_t timestamp_us) : RTCStats(id, timestamp_us), + m_bool("mBool"), m_int32("mInt32"), m_uint32("mUint32"), m_int64("mInt64"), m_uint64("mUint64"), m_double("mDouble"), m_string("mString"), + m_sequence_bool("mSequenceBool"), m_sequence_int32("mSequenceInt32"), m_sequence_uint32("mSequenceUint32"), m_sequence_int64("mSequenceInt64"), diff --git a/webrtc/stats/test/rtcteststats.h b/webrtc/stats/test/rtcteststats.h index c8191eb45b..8571fe89b1 100644 --- a/webrtc/stats/test/rtcteststats.h +++ b/webrtc/stats/test/rtcteststats.h @@ -23,12 +23,14 @@ class RTCTestStats : public RTCStats { RTCTestStats(const std::string& id, int64_t timestamp_us); WEBRTC_RTCSTATS_IMPL(RTCStats, RTCTestStats, + &m_bool, &m_int32, &m_uint32, &m_int64, &m_uint64, &m_double, &m_string, + &m_sequence_bool, &m_sequence_int32, &m_sequence_uint32, &m_sequence_int64, @@ -36,12 +38,14 @@ class RTCTestStats : public RTCStats { &m_sequence_double, &m_sequence_string); + RTCStatsMember m_bool; RTCStatsMember m_int32; RTCStatsMember m_uint32; RTCStatsMember m_int64; RTCStatsMember m_uint64; RTCStatsMember m_double; RTCStatsMember m_string; + RTCStatsMember> m_sequence_bool; RTCStatsMember> m_sequence_int32; RTCStatsMember> m_sequence_uint32; RTCStatsMember> m_sequence_int64;