| Index: webrtc/stats/rtcstats_objects.cc
 | 
| diff --git a/webrtc/stats/rtcstats_objects.cc b/webrtc/stats/rtcstats_objects.cc
 | 
| index 947b5647d7f46325748d1126623a3b38f9f1c06e..04b870665414b92ca1a8c5462d971dd5c4c69aed 100644
 | 
| --- a/webrtc/stats/rtcstats_objects.cc
 | 
| +++ b/webrtc/stats/rtcstats_objects.cc
 | 
| @@ -25,6 +25,38 @@ const char* RTCIceCandidateType::kSrflx = "srflx";
 | 
|  const char* RTCIceCandidateType::kPrflx = "prflx";
 | 
|  const char* RTCIceCandidateType::kRelay = "relay";
 | 
|  
 | 
| +WEBRTC_RTCSTATS_IMPL(RTCCertificateStats, RTCStats, "certificate",
 | 
| +    &fingerprint,
 | 
| +    &fingerprint_algorithm,
 | 
| +    &base64_certificate,
 | 
| +    &issuer_certificate_id);
 | 
| +
 | 
| +RTCCertificateStats::RTCCertificateStats(
 | 
| +    const std::string& id, int64_t timestamp_us)
 | 
| +    : RTCCertificateStats(std::string(id), timestamp_us) {
 | 
| +}
 | 
| +
 | 
| +RTCCertificateStats::RTCCertificateStats(
 | 
| +    std::string&& id, int64_t timestamp_us)
 | 
| +    : RTCStats(std::move(id), timestamp_us),
 | 
| +      fingerprint("fingerprint"),
 | 
| +      fingerprint_algorithm("fingerprintAlgorithm"),
 | 
| +      base64_certificate("base64Certificate"),
 | 
| +      issuer_certificate_id("issuerCertificateId") {
 | 
| +}
 | 
| +
 | 
| +RTCCertificateStats::RTCCertificateStats(
 | 
| +    const RTCCertificateStats& other)
 | 
| +    : RTCStats(other.id(), other.timestamp_us()),
 | 
| +      fingerprint(other.fingerprint),
 | 
| +      fingerprint_algorithm(other.fingerprint_algorithm),
 | 
| +      base64_certificate(other.base64_certificate),
 | 
| +      issuer_certificate_id(other.issuer_certificate_id) {
 | 
| +}
 | 
| +
 | 
| +RTCCertificateStats::~RTCCertificateStats() {
 | 
| +}
 | 
| +
 | 
|  WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair",
 | 
|      &transport_id,
 | 
|      &local_candidate_id,
 | 
| @@ -186,38 +218,6 @@ const char* RTCRemoteIceCandidateStats::type() const {
 | 
|    return kType;
 | 
|  }
 | 
|  
 | 
| -WEBRTC_RTCSTATS_IMPL(RTCCertificateStats, RTCStats, "certificate",
 | 
| -    &fingerprint,
 | 
| -    &fingerprint_algorithm,
 | 
| -    &base64_certificate,
 | 
| -    &issuer_certificate_id);
 | 
| -
 | 
| -RTCCertificateStats::RTCCertificateStats(
 | 
| -    const std::string& id, int64_t timestamp_us)
 | 
| -    : RTCCertificateStats(std::string(id), timestamp_us) {
 | 
| -}
 | 
| -
 | 
| -RTCCertificateStats::RTCCertificateStats(
 | 
| -    std::string&& id, int64_t timestamp_us)
 | 
| -    : RTCStats(std::move(id), timestamp_us),
 | 
| -      fingerprint("fingerprint"),
 | 
| -      fingerprint_algorithm("fingerprintAlgorithm"),
 | 
| -      base64_certificate("base64Certificate"),
 | 
| -      issuer_certificate_id("issuerCertificateId") {
 | 
| -}
 | 
| -
 | 
| -RTCCertificateStats::RTCCertificateStats(
 | 
| -    const RTCCertificateStats& other)
 | 
| -    : RTCStats(other.id(), other.timestamp_us()),
 | 
| -      fingerprint(other.fingerprint),
 | 
| -      fingerprint_algorithm(other.fingerprint_algorithm),
 | 
| -      base64_certificate(other.base64_certificate),
 | 
| -      issuer_certificate_id(other.issuer_certificate_id) {
 | 
| -}
 | 
| -
 | 
| -RTCCertificateStats::~RTCCertificateStats() {
 | 
| -}
 | 
| -
 | 
|  WEBRTC_RTCSTATS_IMPL(RTCPeerConnectionStats, RTCStats, "peer-connection",
 | 
|      &data_channels_opened,
 | 
|      &data_channels_closed);
 | 
| @@ -244,4 +244,45 @@ RTCPeerConnectionStats::RTCPeerConnectionStats(
 | 
|  RTCPeerConnectionStats::~RTCPeerConnectionStats() {
 | 
|  }
 | 
|  
 | 
| +WEBRTC_RTCSTATS_IMPL(RTCTransportStats, RTCStats, "transport",
 | 
| +    &bytes_sent,
 | 
| +    &bytes_received,
 | 
| +    &rtcp_transport_stats_id,
 | 
| +    &active_connection,
 | 
| +    &selected_candidate_pair_id,
 | 
| +    &local_certificate_id,
 | 
| +    &remote_certificate_id);
 | 
| +
 | 
| +RTCTransportStats::RTCTransportStats(
 | 
| +    const std::string& id, int64_t timestamp_us)
 | 
| +    : RTCTransportStats(std::string(id), timestamp_us) {
 | 
| +}
 | 
| +
 | 
| +RTCTransportStats::RTCTransportStats(
 | 
| +    std::string&& id, int64_t timestamp_us)
 | 
| +    : RTCStats(std::move(id), timestamp_us),
 | 
| +      bytes_sent("bytesSent"),
 | 
| +      bytes_received("bytesReceived"),
 | 
| +      rtcp_transport_stats_id("rtcpTransportStatsId"),
 | 
| +      active_connection("activeConnection"),
 | 
| +      selected_candidate_pair_id("selectedCandidatePairId"),
 | 
| +      local_certificate_id("localCertificateId"),
 | 
| +      remote_certificate_id("remoteCertificateId") {
 | 
| +}
 | 
| +
 | 
| +RTCTransportStats::RTCTransportStats(
 | 
| +    const RTCTransportStats& other)
 | 
| +    : RTCStats(other.id(), other.timestamp_us()),
 | 
| +      bytes_sent(other.bytes_sent),
 | 
| +      bytes_received(other.bytes_received),
 | 
| +      rtcp_transport_stats_id(other.rtcp_transport_stats_id),
 | 
| +      active_connection(other.active_connection),
 | 
| +      selected_candidate_pair_id(other.selected_candidate_pair_id),
 | 
| +      local_certificate_id(other.local_certificate_id),
 | 
| +      remote_certificate_id(other.remote_certificate_id) {
 | 
| +}
 | 
| +
 | 
| +RTCTransportStats::~RTCTransportStats() {
 | 
| +}
 | 
| +
 | 
|  }  // namespace webrtc
 | 
| 
 |