| Index: webrtc/api/stats/rtcstats_objects.h
 | 
| diff --git a/webrtc/api/stats/rtcstats_objects.h b/webrtc/api/stats/rtcstats_objects.h
 | 
| index 6ff9f9949a4fa2e862d38fd1b1b086a86d571395..2a18f35bc1dcee5abed4fb99cee889161674fc94 100644
 | 
| --- a/webrtc/api/stats/rtcstats_objects.h
 | 
| +++ b/webrtc/api/stats/rtcstats_objects.h
 | 
| @@ -17,6 +17,58 @@
 | 
|  
 | 
|  namespace webrtc {
 | 
|  
 | 
| +// https://www.w3.org/TR/webrtc/#rtcicecandidatetype-enum
 | 
| +struct RTCIceCandidateType {
 | 
| +  static const char* kHost;
 | 
| +  static const char* kSrflx;
 | 
| +  static const char* kPrflx;
 | 
| +  static const char* kRelay;
 | 
| +};
 | 
| +
 | 
| +// https://w3c.github.io/webrtc-stats/#icecandidate-dict*
 | 
| +class RTCIceCandidateStats : public RTCStats {
 | 
| + public:
 | 
| +  WEBRTC_RTCSTATS_IMPL(RTCStats, RTCIceCandidateStats,
 | 
| +      &ip,
 | 
| +      &port,
 | 
| +      &protocol,
 | 
| +      &candidate_type,
 | 
| +      &priority,
 | 
| +      &url);
 | 
| +
 | 
| +  RTCStatsMember<std::string> ip;
 | 
| +  RTCStatsMember<int32_t> port;
 | 
| +  RTCStatsMember<std::string> protocol;
 | 
| +  // TODO(hbos): Support enum types? "RTCStatsMember<RTCIceCandidateType>"?
 | 
| +  RTCStatsMember<std::string> candidate_type;
 | 
| +  RTCStatsMember<int32_t> priority;
 | 
| +  RTCStatsMember<std::string> url;
 | 
| +
 | 
| + protected:
 | 
| +  RTCIceCandidateStats(const std::string& id, int64_t timestamp_us);
 | 
| +  RTCIceCandidateStats(std::string&& id, int64_t timestamp_us);
 | 
| +};
 | 
| +
 | 
| +// In the spec both local and remote varieties are of type RTCIceCandidateStats.
 | 
| +// But here we define them as subclasses of |RTCIceCandidateStats| because the
 | 
| +// |kType| need to be different ("RTCStatsType type") in the local/remote case.
 | 
| +// https://w3c.github.io/webrtc-stats/#rtcstatstype-str*
 | 
| +class RTCLocalIceCandidateStats final : public RTCIceCandidateStats {
 | 
| + public:
 | 
| +  static const char kType[];
 | 
| +  RTCLocalIceCandidateStats(const std::string& id, int64_t timestamp_us);
 | 
| +  RTCLocalIceCandidateStats(std::string&& id, int64_t timestamp_us);
 | 
| +  const char* type() const override { return kType; }
 | 
| +};
 | 
| +
 | 
| +class RTCRemoteIceCandidateStats final : public RTCIceCandidateStats {
 | 
| + public:
 | 
| +  static const char kType[];
 | 
| +  RTCRemoteIceCandidateStats(const std::string& id, int64_t timestamp_us);
 | 
| +  RTCRemoteIceCandidateStats(std::string&& id, int64_t timestamp_us);
 | 
| +  const char* type() const override { return kType; }
 | 
| +};
 | 
| +
 | 
|  // https://w3c.github.io/webrtc-stats/#certificatestats-dict*
 | 
|  class RTCCertificateStats : public RTCStats {
 | 
|   public:
 | 
| 
 |