diff --git a/webrtc/api/stats/rtcstats.h b/webrtc/api/stats/rtcstats.h
index 01dd1c3..988291b 100644
--- a/webrtc/api/stats/rtcstats.h
+++ b/webrtc/api/stats/rtcstats.h
@@ -166,6 +166,7 @@
  public:
   // Member value types.
   enum Type {
+    kBool,                  // bool
     kInt32,                 // int32_t
     kUint32,                // uint32_t
     kInt64,                 // int64_t
@@ -173,6 +174,7 @@
     kDouble,                // double
     kString,                // std::string
 
+    kSequenceBool,          // std::vector<bool>
     kSequenceInt32,         // std::vector<int32_t>
     kSequenceUint32,        // std::vector<uint32_t>
     kSequenceInt64,         // std::vector<int64_t>
diff --git a/webrtc/stats/rtcstats.cc b/webrtc/stats/rtcstats.cc
index 6b6c437..543ef42 100644
--- a/webrtc/stats/rtcstats.cc
+++ b/webrtc/stats/rtcstats.cc
@@ -93,6 +93,8 @@
     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,
@@ -106,6 +108,9 @@
 WEBRTC_DEFINE_RTCSTATSMEMBER(std::string, kString, false, true,
                              value_);
 WEBRTC_DEFINE_RTCSTATSMEMBER(
+    std::vector<bool>, kSequenceBool, true, false,
+    VectorToString(value_));
+WEBRTC_DEFINE_RTCSTATSMEMBER(
     std::vector<int32_t>, kSequenceInt32, true, false,
     VectorToString(value_));
 WEBRTC_DEFINE_RTCSTATSMEMBER(
diff --git a/webrtc/stats/rtcstats_unittest.cc b/webrtc/stats/rtcstats_unittest.cc
index 6cb8817..88a2e03 100644
--- a/webrtc/stats/rtcstats_unittest.cc
+++ b/webrtc/stats/rtcstats_unittest.cc
@@ -51,10 +51,11 @@
   EXPECT_EQ(stats.id(), "testId");
   EXPECT_EQ(stats.timestamp_us(), static_cast<int64_t>(42));
   std::vector<const RTCStatsMemberInterface*> members = stats.Members();
-  EXPECT_EQ(members.size(), static_cast<size_t>(12));
+  EXPECT_EQ(members.size(), static_cast<size_t>(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 @@
   stats.m_double = 123.0;
   stats.m_string = std::string("123");
 
+  std::vector<bool> sequence_bool;
+  sequence_bool.push_back(true);
   std::vector<int32_t> sequence_int32;
   sequence_int32.push_back(static_cast<int32_t>(1));
   std::vector<uint32_t> sequence_uint32;
@@ -75,6 +78,7 @@
   std::vector<std::string> 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 @@
   for (const RTCStatsMemberInterface* member : members) {
     EXPECT_TRUE(member->is_defined());
   }
+  EXPECT_EQ(*stats.m_bool, true);
   EXPECT_EQ(*stats.m_int32, static_cast<int32_t>(123));
   EXPECT_EQ(*stats.m_uint32, static_cast<uint32_t>(123));
   EXPECT_EQ(*stats.m_int64, static_cast<int64_t>(123));
   EXPECT_EQ(*stats.m_uint64, static_cast<uint64_t>(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 c317294..a4bff77 100644
--- a/webrtc/stats/test/rtcteststats.cc
+++ b/webrtc/stats/test/rtcteststats.cc
@@ -16,12 +16,14 @@
 
 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 c8191eb..8571fe8 100644
--- a/webrtc/stats/test/rtcteststats.h
+++ b/webrtc/stats/test/rtcteststats.h
@@ -23,12 +23,14 @@
   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 @@
       &m_sequence_double,
       &m_sequence_string);
 
+  RTCStatsMember<bool> m_bool;
   RTCStatsMember<int32_t> m_int32;
   RTCStatsMember<uint32_t> m_uint32;
   RTCStatsMember<int64_t> m_int64;
   RTCStatsMember<uint64_t> m_uint64;
   RTCStatsMember<double> m_double;
   RTCStatsMember<std::string> m_string;
+  RTCStatsMember<std::vector<bool>> m_sequence_bool;
   RTCStatsMember<std::vector<int32_t>> m_sequence_int32;
   RTCStatsMember<std::vector<uint32_t>> m_sequence_uint32;
   RTCStatsMember<std::vector<int64_t>> m_sequence_int64;
