| Index: webrtc/api/rtcstatscollector.h | 
| diff --git a/webrtc/api/rtcstatscollector.h b/webrtc/api/rtcstatscollector.h | 
| index c32d65f2460a83447946b70430b5bf1bc05b5074..7b23d247264222151215b0c7425434d5df93d0b9 100644 | 
| --- a/webrtc/api/rtcstatscollector.h | 
| +++ b/webrtc/api/rtcstatscollector.h | 
| @@ -41,6 +41,7 @@ namespace webrtc { | 
|  | 
| class PeerConnection; | 
| struct SessionStats; | 
| +struct ChannelNamePairs; | 
|  | 
| class RTCStatsCollectorCallback : public virtual rtc::RefCountInterface { | 
| public: | 
| @@ -97,19 +98,19 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, | 
| void DeliverCachedReport(); | 
|  | 
| // Produces |RTCCertificateStats|. | 
| -  void ProduceCertificateStats_s( | 
| +  void ProduceCertificateStats_n( | 
| int64_t timestamp_us, | 
| const std::map<std::string, CertificateStatsPair>& transport_cert_stats, | 
| RTCStatsReport* report) const; | 
| // Produces |RTCCodecStats|. | 
| -  void ProduceCodecStats_s( | 
| +  void ProduceCodecStats_n( | 
| int64_t timestamp_us, const MediaInfo& media_info, | 
| RTCStatsReport* report) const; | 
| // Produces |RTCDataChannelStats|. | 
| void ProduceDataChannelStats_s( | 
| int64_t timestamp_us, RTCStatsReport* report) const; | 
| // Produces |RTCIceCandidatePairStats| and |RTCIceCandidateStats|. | 
| -  void ProduceIceCandidateAndPairStats_s( | 
| +  void ProduceIceCandidateAndPairStats_n( | 
| int64_t timestamp_us, const SessionStats& session_stats, | 
| RTCStatsReport* report) const; | 
| // Produces |RTCMediaStreamStats| and |RTCMediaStreamTrackStats|. | 
| @@ -119,19 +120,19 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, | 
| void ProducePeerConnectionStats_s( | 
| int64_t timestamp_us, RTCStatsReport* report) const; | 
| // Produces |RTCInboundRTPStreamStats| and |RTCOutboundRTPStreamStats|. | 
| -  void ProduceRTPStreamStats_s( | 
| +  void ProduceRTPStreamStats_n( | 
| int64_t timestamp_us, const SessionStats& session_stats, | 
| const MediaInfo& media_info, RTCStatsReport* report) const; | 
| // Produces |RTCTransportStats|. | 
| -  void ProduceTransportStats_s( | 
| +  void ProduceTransportStats_n( | 
| int64_t timestamp_us, const SessionStats& session_stats, | 
| const std::map<std::string, CertificateStatsPair>& transport_cert_stats, | 
| RTCStatsReport* report) const; | 
|  | 
| // Helper function to stats-producing functions. | 
| std::map<std::string, CertificateStatsPair> | 
| -  PrepareTransportCertificateStats(const SessionStats& session_stats) const; | 
| -  MediaInfo PrepareMediaInfo(const SessionStats& session_stats) const; | 
| +  PrepareTransportCertificateStats_n(const SessionStats& session_stats) const; | 
| +  std::unique_ptr<MediaInfo> PrepareMediaInfo_s() const; | 
|  | 
| // Slots for signals (sigslot) that are wired up to |pc_|. | 
| void OnDataChannelCreated(DataChannel* channel); | 
| @@ -150,6 +151,13 @@ class RTCStatsCollector : public virtual rtc::RefCountInterface, | 
| rtc::scoped_refptr<RTCStatsReport> partial_report_; | 
| std::vector<rtc::scoped_refptr<RTCStatsCollectorCallback>> callbacks_; | 
|  | 
| +  // Set in |GetStatsReport|, used in |ProducePartialResultsOnNetworkThread| | 
| +  // (not passed as arguments to avoid copies). This is thread safe - it is set | 
| +  // at the start of |GetStatsReport| after making sure there are no pending | 
| +  // stats requests in progress. | 
| +  std::unique_ptr<ChannelNamePairs> channel_name_pairs_; | 
| +  std::unique_ptr<MediaInfo> media_info_; | 
| + | 
| // A timestamp, in microseconds, that is based on a timer that is | 
| // monotonically increasing. That is, even if the system clock is modified the | 
| // difference between the timer and this timestamp is how fresh the cached | 
|  |