Rename StatsCollector to LegacyStatsCollector.

We should have done this a long time ago.

Let's do the same for stats_types.h in a separate CL because that file
is part of the api/ folder and needs some special care (typedefs and
temporarily include helper to avoid breaking downstream projects).

Bug: webrtc:14180
Change-Id: Id9c71ebd53dd97dd238bdf7527c36d7cf0e91f85
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/267642
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#37426}
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 4195db3..632a072 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -733,6 +733,8 @@
     ":jitter_buffer_delay",
     ":jsep_ice_candidate",
     ":jsep_session_description",
+    ":legacy_stats_collector",
+    ":legacy_stats_collector_interface",
     ":local_audio_source",
     ":media_protocol_names",
     ":media_stream",
@@ -757,8 +759,6 @@
     ":sdp_utils",
     ":session_description",
     ":simulcast_description",
-    ":stats_collector",
-    ":stats_collector_interface",
     ":stream_collection",
     ":track_media_info_map",
     ":transceiver_list",
@@ -1084,6 +1084,7 @@
     ":data_channel_controller",
     ":dtls_transport",
     ":jsep_transport_controller",
+    ":legacy_stats_collector",
     ":media_session",
     ":media_stream",
     ":media_stream_observer",
@@ -1100,7 +1101,6 @@
     ":sdp_state_provider",
     ":session_description",
     ":simulcast_description",
-    ":stats_collector",
     ":stream_collection",
     ":transceiver_list",
     ":usage_pattern",
@@ -1174,6 +1174,7 @@
     ":dtls_transport",
     ":ice_server_parsing",
     ":jsep_transport_controller",
+    ":legacy_stats_collector",
     ":peer_connection_internal",
     ":peer_connection_message_handler",
     ":rtc_stats_collector",
@@ -1189,7 +1190,6 @@
     ":sdp_offer_answer",
     ":session_description",
     ":simulcast_description",
-    ":stats_collector",
     ":transceiver_list",
     ":transport_stats",
     ":usage_pattern",
@@ -1280,22 +1280,22 @@
     "../rtc_base/system:rtc_export",
   ]
 }
-rtc_source_set("stats_collector") {
+rtc_source_set("legacy_stats_collector") {
   visibility = [ ":*" ]
   sources = [
-    "stats_collector.cc",
-    "stats_collector.h",
+    "legacy_stats_collector.cc",
+    "legacy_stats_collector.h",
   ]
   deps = [
     ":channel",
     ":channel_interface",
     ":data_channel_utils",
+    ":legacy_stats_collector_interface",
     ":peer_connection_internal",
     ":rtp_receiver",
     ":rtp_receiver_proxy",
     ":rtp_sender_proxy",
     ":rtp_transceiver",
-    ":stats_collector_interface",
     ":transport_stats",
     "../api:candidate",
     "../api:field_trials_view",
@@ -1521,7 +1521,7 @@
     "peer_connection_message_handler.h",
   ]
   deps = [
-    ":stats_collector_interface",
+    ":legacy_stats_collector_interface",
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
     "../api:rtc_error",
@@ -1605,12 +1605,12 @@
     ":audio_rtp_receiver",
     ":channel",
     ":channel_interface",
+    ":legacy_stats_collector_interface",
     ":rtp_receiver",
     ":rtp_receiver_proxy",
     ":rtp_sender",
     ":rtp_sender_proxy",
     ":rtp_transceiver",
-    ":stats_collector_interface",
     ":transceiver_list",
     ":usage_pattern",
     ":video_rtp_receiver",
@@ -1884,7 +1884,7 @@
   ]
   deps = [
     ":dtmf_sender",
-    ":stats_collector_interface",
+    ":legacy_stats_collector_interface",
     "../api:audio_options_api",
     "../api:dtls_transport_interface",
     "../api:frame_transformer_interface",
@@ -2007,9 +2007,9 @@
   absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
 }
 
-rtc_source_set("stats_collector_interface") {
+rtc_source_set("legacy_stats_collector_interface") {
   visibility = [ ":*" ]
-  sources = [ "stats_collector_interface.h" ]
+  sources = [ "legacy_stats_collector_interface.h" ]
   deps = [
     "../api:libjingle_peerconnection_api",
     "../api:media_stream_interface",
@@ -2255,6 +2255,7 @@
       "ice_server_parsing_unittest.cc",
       "jitter_buffer_delay_unittest.cc",
       "jsep_session_description_unittest.cc",
+      "legacy_stats_collector_unittest.cc",
       "local_audio_source_unittest.cc",
       "media_stream_unittest.cc",
       "peer_connection_adaptation_integrationtest.cc",
@@ -2286,7 +2287,6 @@
       "sctp_utils_unittest.cc",
       "sdp_offer_answer_unittest.cc",
       "sdp_serializer_unittest.cc",
-      "stats_collector_unittest.cc",
       "test/fake_audio_capture_module_unittest.cc",
       "test/test_sdp_strings.h",
       "track_media_info_map_unittest.cc",
@@ -2307,6 +2307,7 @@
       ":ice_server_parsing",
       ":integration_test_helpers",
       ":jitter_buffer_delay",
+      ":legacy_stats_collector",
       ":local_audio_source",
       ":media_protocol_names",
       ":media_session",
@@ -2331,7 +2332,6 @@
       ":sdp_utils",
       ":session_description",
       ":simulcast_description",
-      ":stats_collector",
       ":stream_collection",
       ":track_media_info_map",
       ":transport_stats",
diff --git a/pc/stats_collector.cc b/pc/legacy_stats_collector.cc
similarity index 94%
rename from pc/stats_collector.cc
rename to pc/legacy_stats_collector.cc
index 97dd5bd..444bb3b0 100644
--- a/pc/stats_collector.cc
+++ b/pc/legacy_stats_collector.cc
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "pc/stats_collector.h"
+#include "pc/legacy_stats_collector.h"
 
 #include <stddef.h>
 #include <stdint.h>
@@ -467,7 +467,7 @@
 void ExtractStatsFromList(
     const std::vector<T>& data,
     const StatsReport::Id& transport_id,
-    StatsCollector* collector,
+    LegacyStatsCollector* collector,
     StatsReport::Direction direction,
     const std::map<uint32_t, std::string>& track_id_by_ssrc) {
   for (const auto& d : data) {
@@ -534,7 +534,7 @@
   }
 }
 
-StatsCollector::StatsCollector(PeerConnectionInternal* pc)
+LegacyStatsCollector::LegacyStatsCollector(PeerConnectionInternal* pc)
     : pc_(pc),
       stats_gathering_started_(0),
       use_standard_bytes_stats_(
@@ -542,18 +542,18 @@
   RTC_DCHECK(pc_);
 }
 
-StatsCollector::~StatsCollector() {
+LegacyStatsCollector::~LegacyStatsCollector() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 }
 
 // Wallclock time in ms.
-double StatsCollector::GetTimeNow() {
+double LegacyStatsCollector::GetTimeNow() {
   return static_cast<double>(rtc::TimeUTCMillis());
 }
 
 // Adds a MediaStream with tracks that can be used as a `selector` in a call
 // to GetStats.
-void StatsCollector::AddStream(MediaStreamInterface* stream) {
+void LegacyStatsCollector::AddStream(MediaStreamInterface* stream) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   RTC_DCHECK(stream != NULL);
 
@@ -563,7 +563,7 @@
                                        &track_ids_);
 }
 
-void StatsCollector::AddTrack(MediaStreamTrackInterface* track) {
+void LegacyStatsCollector::AddTrack(MediaStreamTrackInterface* track) {
   if (track->kind() == MediaStreamTrackInterface::kAudioKind) {
     CreateTrackReport(static_cast<AudioTrackInterface*>(track), &reports_,
                       &track_ids_);
@@ -575,8 +575,8 @@
   }
 }
 
-void StatsCollector::AddLocalAudioTrack(AudioTrackInterface* audio_track,
-                                        uint32_t ssrc) {
+void LegacyStatsCollector::AddLocalAudioTrack(AudioTrackInterface* audio_track,
+                                              uint32_t ssrc) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   RTC_DCHECK(audio_track != NULL);
 #if RTC_DCHECK_IS_ON
@@ -597,8 +597,9 @@
   }
 }
 
-void StatsCollector::RemoveLocalAudioTrack(AudioTrackInterface* audio_track,
-                                           uint32_t ssrc) {
+void LegacyStatsCollector::RemoveLocalAudioTrack(
+    AudioTrackInterface* audio_track,
+    uint32_t ssrc) {
   RTC_DCHECK(audio_track != NULL);
   local_audio_tracks_.erase(
       std::remove_if(
@@ -609,8 +610,8 @@
       local_audio_tracks_.end());
 }
 
-void StatsCollector::GetStats(MediaStreamTrackInterface* track,
-                              StatsReports* reports) {
+void LegacyStatsCollector::GetStats(MediaStreamTrackInterface* track,
+                                    StatsReports* reports) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   RTC_DCHECK(reports != NULL);
   RTC_DCHECK(reports->empty());
@@ -649,7 +650,7 @@
   }
 }
 
-void StatsCollector::UpdateStats(
+void LegacyStatsCollector::UpdateStats(
     PeerConnectionInterface::StatsOutputLevel level) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   // Calls to UpdateStats() that occur less than kMinGatherStatsPeriodMs apart
@@ -683,11 +684,12 @@
   UpdateTrackReports();
 }
 
-StatsReport* StatsCollector::PrepareReport(bool local,
-                                           uint32_t ssrc,
-                                           const std::string& track_id,
-                                           const StatsReport::Id& transport_id,
-                                           StatsReport::Direction direction) {
+StatsReport* LegacyStatsCollector::PrepareReport(
+    bool local,
+    uint32_t ssrc,
+    const std::string& track_id,
+    const StatsReport::Id& transport_id,
+    StatsReport::Direction direction) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   StatsReport::Id id(StatsReport::NewIdWithDirection(
       local ? StatsReport::kStatsReportTypeSsrc
@@ -710,7 +712,7 @@
   return report;
 }
 
-StatsReport* StatsCollector::PrepareADMReport() {
+StatsReport* LegacyStatsCollector::PrepareADMReport() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   StatsReport::Id id(StatsReport::NewTypedId(
       StatsReport::kStatsReportTypeSession, pc_->session_id()));
@@ -718,12 +720,12 @@
   return report;
 }
 
-bool StatsCollector::IsValidTrack(const std::string& track_id) {
+bool LegacyStatsCollector::IsValidTrack(const std::string& track_id) {
   return reports_.Find(StatsReport::NewTypedId(
              StatsReport::kStatsReportTypeTrack, track_id)) != nullptr;
 }
 
-StatsReport* StatsCollector::AddCertificateReports(
+StatsReport* LegacyStatsCollector::AddCertificateReports(
     std::unique_ptr<rtc::SSLCertificateStats> cert_stats) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
@@ -751,7 +753,7 @@
   return first_report;
 }
 
-StatsReport* StatsCollector::AddConnectionInfoReport(
+StatsReport* LegacyStatsCollector::AddConnectionInfoReport(
     const std::string& content_name,
     int component,
     int connection_id,
@@ -812,7 +814,7 @@
   return report;
 }
 
-StatsReport* StatsCollector::AddCandidateReport(
+StatsReport* LegacyStatsCollector::AddCandidateReport(
     const cricket::CandidateStats& candidate_stats,
     bool local) {
   const auto& candidate = candidate_stats.candidate();
@@ -853,8 +855,8 @@
   return report;
 }
 
-std::map<std::string, std::string> StatsCollector::ExtractSessionInfo() {
-  TRACE_EVENT0("webrtc", "StatsCollector::ExtractSessionInfo");
+std::map<std::string, std::string> LegacyStatsCollector::ExtractSessionInfo() {
+  TRACE_EVENT0("webrtc", "LegacyStatsCollector::ExtractSessionInfo");
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
   SessionStats stats;
@@ -871,12 +873,12 @@
   return std::move(stats.transport_names_by_mid);
 }
 
-StatsCollector::SessionStats StatsCollector::ExtractSessionInfo_n(
+LegacyStatsCollector::SessionStats LegacyStatsCollector::ExtractSessionInfo_n(
     const std::vector<rtc::scoped_refptr<
         RtpTransceiverProxyWithInternal<RtpTransceiver>>>& transceivers,
     absl::optional<std::string> sctp_transport_name,
     absl::optional<std::string> sctp_mid) {
-  TRACE_EVENT0("webrtc", "StatsCollector::ExtractSessionInfo_n");
+  TRACE_EVENT0("webrtc", "LegacyStatsCollector::ExtractSessionInfo_n");
   RTC_DCHECK_RUN_ON(pc_->network_thread());
   rtc::Thread::ScopedDisallowBlockingCalls no_blocking_calls;
   SessionStats stats;
@@ -927,7 +929,7 @@
   return stats;
 }
 
-void StatsCollector::ExtractSessionInfo_s(SessionStats& session_stats) {
+void LegacyStatsCollector::ExtractSessionInfo_s(SessionStats& session_stats) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   rtc::Thread::ScopedDisallowBlockingCalls no_blocking_calls;
 
@@ -1019,7 +1021,7 @@
   }
 }
 
-void StatsCollector::ExtractBweInfo() {
+void LegacyStatsCollector::ExtractBweInfo() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
   if (pc_->signaling_state() == PeerConnectionInterface::kClosed)
@@ -1067,7 +1069,7 @@
 
   virtual bool GetStatsOnWorkerThread() = 0;
 
-  virtual void ExtractStats(StatsCollector* collector) const = 0;
+  virtual void ExtractStats(LegacyStatsCollector* collector) const = 0;
 
   virtual bool HasRemoteAudio() const = 0;
 
@@ -1079,7 +1081,7 @@
  protected:
   template <typename ReceiverT, typename SenderT>
   void ExtractSenderReceiverStats(
-      StatsCollector* collector,
+      LegacyStatsCollector* collector,
       const std::vector<ReceiverT>& receiver_data,
       const std::vector<SenderT>& sender_data) const {
     RTC_DCHECK(collector);
@@ -1105,7 +1107,7 @@
                                           /*get_and_clear_legacy_stats=*/true);
   }
 
-  void ExtractStats(StatsCollector* collector) const override {
+  void ExtractStats(LegacyStatsCollector* collector) const override {
     ExtractSenderReceiverStats(collector, voice_media_info.receivers,
                                voice_media_info.senders);
     if (voice_media_info.device_underrun_count == -2 ||
@@ -1137,7 +1139,7 @@
     return video_media_channel_->GetStats(&video_media_info);
   }
 
-  void ExtractStats(StatsCollector* collector) const override {
+  void ExtractStats(LegacyStatsCollector* collector) const override {
     ExtractSenderReceiverStats(collector, video_media_info.receivers,
                                video_media_info.aggregated_senders);
   }
@@ -1164,7 +1166,7 @@
 
 }  // namespace
 
-void StatsCollector::ExtractMediaInfo(
+void LegacyStatsCollector::ExtractMediaInfo(
     const std::map<std::string, std::string>& transport_names_by_mid) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
@@ -1239,7 +1241,7 @@
   UpdateStatsFromExistingLocalAudioTracks(has_remote_audio);
 }
 
-void StatsCollector::ExtractSenderInfo() {
+void LegacyStatsCollector::ExtractSenderInfo() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
   for (const auto& sender : pc_->GetSenders()) {
@@ -1272,7 +1274,7 @@
   }
 }
 
-void StatsCollector::ExtractDataInfo() {
+void LegacyStatsCollector::ExtractDataInfo() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
   rtc::Thread::ScopedDisallowBlockingCalls no_blocking_calls;
@@ -1294,16 +1296,16 @@
   }
 }
 
-StatsReport* StatsCollector::GetReport(const StatsReport::StatsType& type,
-                                       const std::string& id,
-                                       StatsReport::Direction direction) {
+StatsReport* LegacyStatsCollector::GetReport(const StatsReport::StatsType& type,
+                                             const std::string& id,
+                                             StatsReport::Direction direction) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   RTC_DCHECK(type == StatsReport::kStatsReportTypeSsrc ||
              type == StatsReport::kStatsReportTypeRemoteSsrc);
   return reports_.Find(StatsReport::NewIdWithDirection(type, id, direction));
 }
 
-void StatsCollector::UpdateStatsFromExistingLocalAudioTracks(
+void LegacyStatsCollector::UpdateStatsFromExistingLocalAudioTracks(
     bool has_remote_tracks) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   // Loop through the existing local audio tracks.
@@ -1330,9 +1332,10 @@
   }
 }
 
-void StatsCollector::UpdateReportFromAudioTrack(AudioTrackInterface* track,
-                                                StatsReport* report,
-                                                bool has_remote_tracks) {
+void LegacyStatsCollector::UpdateReportFromAudioTrack(
+    AudioTrackInterface* track,
+    StatsReport* report,
+    bool has_remote_tracks) {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   RTC_DCHECK(track != NULL);
 
@@ -1353,7 +1356,7 @@
   }
 }
 
-void StatsCollector::UpdateTrackReports() {
+void LegacyStatsCollector::UpdateTrackReports() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
 
   rtc::Thread::ScopedDisallowBlockingCalls no_blocking_calls;
@@ -1364,7 +1367,7 @@
   }
 }
 
-void StatsCollector::InvalidateCache() {
+void LegacyStatsCollector::InvalidateCache() {
   RTC_DCHECK_RUN_ON(pc_->signaling_thread());
   cache_timestamp_ms_ = 0;
 }
diff --git a/pc/stats_collector.h b/pc/legacy_stats_collector.h
similarity index 94%
rename from pc/stats_collector.h
rename to pc/legacy_stats_collector.h
index ea719c6..21f51c5 100644
--- a/pc/stats_collector.h
+++ b/pc/legacy_stats_collector.h
@@ -11,8 +11,8 @@
 // This file contains a class used for gathering statistics from an ongoing
 // libjingle PeerConnection.
 
-#ifndef PC_STATS_COLLECTOR_H_
-#define PC_STATS_COLLECTOR_H_
+#ifndef PC_LEGACY_STATS_COLLECTOR_H_
+#define PC_LEGACY_STATS_COLLECTOR_H_
 
 #include <stdint.h>
 
@@ -33,9 +33,9 @@
 #include "api/stats_types.h"
 #include "p2p/base/connection_info.h"
 #include "p2p/base/port.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "pc/peer_connection_internal.h"
 #include "pc/rtp_transceiver.h"
-#include "pc/stats_collector_interface.h"
 #include "pc/transport_stats.h"
 #include "rtc_base/network_constants.h"
 #include "rtc_base/ssl_certificate.h"
@@ -55,12 +55,12 @@
 // A mapping between track ids and their StatsReport.
 typedef std::map<std::string, StatsReport*> TrackIdMap;
 
-class StatsCollector : public StatsCollectorInterface {
+class LegacyStatsCollector : public LegacyStatsCollectorInterface {
  public:
   // The caller is responsible for ensuring that the pc outlives the
-  // StatsCollector instance.
-  explicit StatsCollector(PeerConnectionInternal* pc);
-  virtual ~StatsCollector();
+  // LegacyStatsCollector instance.
+  explicit LegacyStatsCollector(PeerConnectionInternal* pc);
+  virtual ~LegacyStatsCollector();
 
   // Adds a MediaStream with tracks that can be used as a `selector` in a call
   // to GetStats.
@@ -112,7 +112,7 @@
   bool UseStandardBytesStats() const { return use_standard_bytes_stats_; }
 
  private:
-  friend class StatsCollectorTest;
+  friend class LegacyStatsCollectorTest;
 
   // Struct that's populated on the network thread and carries the values to
   // the signaling thread where the stats are added to the stats reports.
@@ -206,11 +206,11 @@
 
   // TODO(tommi): We appear to be holding on to raw pointers to reference
   // counted objects?  We should be using scoped_refptr here.
-  typedef std::vector<std::pair<AudioTrackInterface*, uint32_t> >
+  typedef std::vector<std::pair<AudioTrackInterface*, uint32_t>>
       LocalAudioTrackVector;
   LocalAudioTrackVector local_audio_tracks_;
 };
 
 }  // namespace webrtc
 
-#endif  // PC_STATS_COLLECTOR_H_
+#endif  // PC_LEGACY_STATS_COLLECTOR_H_
diff --git a/pc/stats_collector_interface.h b/pc/legacy_stats_collector_interface.h
similarity index 84%
rename from pc/stats_collector_interface.h
rename to pc/legacy_stats_collector_interface.h
index 4d5c98a..3cddb28 100644
--- a/pc/stats_collector_interface.h
+++ b/pc/legacy_stats_collector_interface.h
@@ -12,8 +12,8 @@
 // is used by compilation units that do not wish to depend on the StatsCollector
 // implementation.
 
-#ifndef PC_STATS_COLLECTOR_INTERFACE_H_
-#define PC_STATS_COLLECTOR_INTERFACE_H_
+#ifndef PC_LEGACY_STATS_COLLECTOR_INTERFACE_H_
+#define PC_LEGACY_STATS_COLLECTOR_INTERFACE_H_
 
 #include <stdint.h>
 
@@ -22,9 +22,9 @@
 
 namespace webrtc {
 
-class StatsCollectorInterface {
+class LegacyStatsCollectorInterface {
  public:
-  virtual ~StatsCollectorInterface() {}
+  virtual ~LegacyStatsCollectorInterface() {}
 
   // Adds a local audio track that is used for getting some voice statistics.
   virtual void AddLocalAudioTrack(AudioTrackInterface* audio_track,
@@ -40,4 +40,4 @@
 
 }  // namespace webrtc
 
-#endif  // PC_STATS_COLLECTOR_INTERFACE_H_
+#endif  // PC_LEGACY_STATS_COLLECTOR_INTERFACE_H_
diff --git a/pc/stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
similarity index 98%
rename from pc/stats_collector_unittest.cc
rename to pc/legacy_stats_collector_unittest.cc
index 03861c1..3033172 100644
--- a/pc/stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -8,7 +8,7 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "pc/stats_collector.h"
+#include "pc/legacy_stats_collector.h"
 
 #include <stdio.h>
 
@@ -583,10 +583,10 @@
   voice_receiver_info->decoding_codec_plc = 127;
 }
 
-class StatsCollectorForTest : public StatsCollector {
+class LegacyStatsCollectorForTest : public LegacyStatsCollector {
  public:
-  explicit StatsCollectorForTest(PeerConnectionInternal* pc)
-      : StatsCollector(pc), time_now_(19477) {}
+  explicit LegacyStatsCollectorForTest(PeerConnectionInternal* pc)
+      : LegacyStatsCollector(pc), time_now_(19477) {}
 
   double GetTimeNow() override { return time_now_; }
 
@@ -594,19 +594,19 @@
   double time_now_;
 };
 
-class StatsCollectorTest : public ::testing::Test {
+class LegacyStatsCollectorTest : public ::testing::Test {
  protected:
   rtc::scoped_refptr<FakePeerConnectionForStats> CreatePeerConnection() {
     return rtc::make_ref_counted<FakePeerConnectionForStats>();
   }
 
-  std::unique_ptr<StatsCollectorForTest> CreateStatsCollector(
+  std::unique_ptr<LegacyStatsCollectorForTest> CreateStatsCollector(
       PeerConnectionInternal* pc) {
-    return std::make_unique<StatsCollectorForTest>(pc);
+    return std::make_unique<LegacyStatsCollectorForTest>(pc);
   }
 
   void VerifyAudioTrackStats(FakeAudioTrack* audio_track,
-                             StatsCollectorForTest* stats,
+                             LegacyStatsCollectorForTest* stats,
                              const VoiceMediaInfo& voice_info,
                              StatsReports* reports) {
     stats->UpdateStats(PeerConnectionInterface::kStatsOutputLevelStandard);
@@ -768,14 +768,14 @@
   return receiver;
 }
 
-class StatsCollectorTrackTest : public StatsCollectorTest,
+class StatsCollectorTrackTest : public LegacyStatsCollectorTest,
                                 public ::testing::WithParamInterface<bool> {
  public:
   // Adds a outgoing video track with a given SSRC into the stats.
   // If GetParam() returns true, the track is also inserted into the local
   // stream, which is created if necessary.
   void AddOutgoingVideoTrack(FakePeerConnectionForStats* pc,
-                             StatsCollectorForTest* stats) {
+                             LegacyStatsCollectorForTest* stats) {
     video_track_ = VideoTrack::Create(
         kLocalTrackId, FakeVideoTrackSource::Create(), rtc::Thread::Current());
     if (GetParam()) {
@@ -791,7 +791,7 @@
 
   // Adds a incoming video track with a given SSRC into the stats.
   void AddIncomingVideoTrack(FakePeerConnectionForStats* pc,
-                             StatsCollectorForTest* stats) {
+                             LegacyStatsCollectorForTest* stats) {
     video_track_ = VideoTrack::Create(
         kRemoteTrackId, FakeVideoTrackSource::Create(), rtc::Thread::Current());
     if (GetParam()) {
@@ -810,7 +810,7 @@
   // stream, which is created if necessary.
   rtc::scoped_refptr<RtpSenderInterface> AddOutgoingAudioTrack(
       FakePeerConnectionForStats* pc,
-      StatsCollectorForTest* stats) {
+      LegacyStatsCollectorForTest* stats) {
     audio_track_ = rtc::make_ref_counted<FakeAudioTrack>(kLocalTrackId);
     if (GetParam()) {
       if (!stream_)
@@ -825,7 +825,7 @@
 
   // Adds a incoming audio track with a given SSRC into the stats.
   void AddIncomingAudioTrack(FakePeerConnectionForStats* pc,
-                             StatsCollectorForTest* stats) {
+                             LegacyStatsCollectorForTest* stats) {
     audio_track_ = rtc::make_ref_counted<FakeAudioTrack>(kRemoteTrackId);
     if (GetParam()) {
       if (stream_ == nullptr)
@@ -846,7 +846,7 @@
   rtc::scoped_refptr<FakeAudioTrack> audio_track_;
 };
 
-TEST_F(StatsCollectorTest, FilterOutNegativeDataChannelId) {
+TEST_F(LegacyStatsCollectorTest, FilterOutNegativeDataChannelId) {
   auto pc = CreatePeerConnection();
   auto stats = CreateStatsCollector(pc.get());
 
@@ -865,7 +865,7 @@
 }
 
 // Verify that ExtractDataInfo populates reports.
-TEST_F(StatsCollectorTest, ExtractDataInfo) {
+TEST_F(LegacyStatsCollectorTest, ExtractDataInfo) {
   const std::string kDataChannelLabel = "hacks";
   constexpr int kDataChannelId = 31337;
   const std::string kConnectingString = DataChannelInterface::DataStateString(
@@ -1033,7 +1033,7 @@
 
 // This test verifies that an object of type "googSession" always
 // exists in the returned stats.
-TEST_F(StatsCollectorTest, SessionObjectExists) {
+TEST_F(LegacyStatsCollectorTest, SessionObjectExists) {
   auto pc = CreatePeerConnection();
   auto stats = CreateStatsCollector(pc.get());
 
@@ -1047,7 +1047,7 @@
 
 // This test verifies that only one object of type "googSession" exists
 // in the returned stats.
-TEST_F(StatsCollectorTest, OnlyOneSessionObjectExists) {
+TEST_F(LegacyStatsCollectorTest, OnlyOneSessionObjectExists) {
   auto pc = CreatePeerConnection();
   auto stats = CreateStatsCollector(pc.get());
 
@@ -1270,7 +1270,7 @@
 
 // This test verifies the Ice Candidate report should contain the correct
 // information from local/remote candidates.
-TEST_F(StatsCollectorTest, IceCandidateReport) {
+TEST_F(LegacyStatsCollectorTest, IceCandidateReport) {
   const std::string kTransportName = "transport";
   const rtc::AdapterType kNetworkType = rtc::ADAPTER_TYPE_ETHERNET;
   constexpr uint32_t kPriority = 1000;
@@ -1378,7 +1378,7 @@
 
 // This test verifies that all chained certificates are correctly
 // reported
-TEST_F(StatsCollectorTest, ChainedCertificateReportsCreated) {
+TEST_F(LegacyStatsCollectorTest, ChainedCertificateReportsCreated) {
   // Build local certificate chain.
   std::vector<std::string> local_ders(5);
   local_ders[0] = "These";
@@ -1402,7 +1402,7 @@
 
 // This test verifies that all certificates without chains are correctly
 // reported.
-TEST_F(StatsCollectorTest, ChainlessCertificateReportsCreated) {
+TEST_F(LegacyStatsCollectorTest, ChainlessCertificateReportsCreated) {
   // Build local certificate.
   std::string local_der = "This is the local der.";
   rtc::FakeSSLIdentity local_identity(DerToPem(local_der));
@@ -1418,7 +1418,7 @@
 
 // This test verifies that the stats are generated correctly when no
 // transport is present.
-TEST_F(StatsCollectorTest, NoTransport) {
+TEST_F(LegacyStatsCollectorTest, NoTransport) {
   auto pc = CreatePeerConnection();
   auto stats = CreateStatsCollector(pc.get());
 
@@ -1455,7 +1455,7 @@
 
 // This test verifies that a remote certificate with an unsupported digest
 // algorithm is correctly ignored.
-TEST_F(StatsCollectorTest, UnsupportedDigestIgnored) {
+TEST_F(LegacyStatsCollectorTest, UnsupportedDigestIgnored) {
   // Build a local certificate.
   std::string local_der = "This is the local der.";
   rtc::FakeSSLIdentity local_identity(DerToPem(local_der));
diff --git a/pc/peer_connection.cc b/pc/peer_connection.cc
index b112099..9251ba9 100644
--- a/pc/peer_connection.cc
+++ b/pc/peer_connection.cc
@@ -543,15 +543,15 @@
   }
 
   // Need to stop transceivers before destroying the stats collector because
-  // AudioRtpSender has a reference to the StatsCollector it will update when
-  // stopping.
+  // AudioRtpSender has a reference to the LegacyStatsCollector it will update
+  // when stopping.
   if (rtp_manager()) {
     for (const auto& transceiver : rtp_manager()->transceivers()->List()) {
       transceiver->StopInternal();
     }
   }
 
-  stats_.reset(nullptr);
+  legacy_stats_.reset(nullptr);
   if (stats_collector_) {
     stats_collector_->WaitForPendingRequest();
     stats_collector_ = nullptr;
@@ -635,15 +635,15 @@
 
   configuration_ = configuration;
 
-  stats_ = std::make_unique<StatsCollector>(this);
+  legacy_stats_ = std::make_unique<LegacyStatsCollector>(this);
   stats_collector_ = RTCStatsCollector::Create(this);
 
   sdp_handler_ = SdpOfferAnswerHandler::Create(this, configuration,
                                                dependencies, context_.get());
 
   rtp_manager_ = std::make_unique<RtpTransmissionManager>(
-      IsUnifiedPlan(), context_.get(), &usage_pattern_, observer_, stats_.get(),
-      [this]() {
+      IsUnifiedPlan(), context_.get(), &usage_pattern_, observer_,
+      legacy_stats_.get(), [this]() {
         RTC_DCHECK_RUN_ON(signaling_thread());
         sdp_handler_->UpdateNegotiationNeeded();
       });
@@ -868,7 +868,7 @@
   auto sender_or_error = rtp_manager()->AddTrack(track, stream_ids);
   if (sender_or_error.ok()) {
     sdp_handler_->UpdateNegotiationNeeded();
-    stats_->AddTrack(track.get());
+    legacy_stats_->AddTrack(track.get());
   }
   return sender_or_error;
 }
@@ -1145,8 +1145,9 @@
   // TODO(steveanton): Move construction of the RtpSenders to RtpTransceiver.
   rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender;
   if (kind == MediaStreamTrackInterface::kAudioKind) {
-    auto audio_sender = AudioRtpSender::Create(
-        worker_thread(), rtc::CreateRandomUuid(), stats_.get(), rtp_manager());
+    auto audio_sender =
+        AudioRtpSender::Create(worker_thread(), rtc::CreateRandomUuid(),
+                               legacy_stats_.get(), rtp_manager());
     audio_sender->SetMediaChannel(rtp_manager()->voice_media_channel());
     new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
         signaling_thread(), audio_sender);
@@ -1208,27 +1209,27 @@
 bool PeerConnection::GetStats(StatsObserver* observer,
                               MediaStreamTrackInterface* track,
                               StatsOutputLevel level) {
-  TRACE_EVENT0("webrtc", "PeerConnection::GetStats");
+  TRACE_EVENT0("webrtc", "PeerConnection::GetStats (legacy)");
   RTC_DCHECK_RUN_ON(signaling_thread());
   if (!observer) {
-    RTC_LOG(LS_ERROR) << "GetStats - observer is NULL.";
+    RTC_LOG(LS_ERROR) << "Legacy GetStats - observer is NULL.";
     return false;
   }
 
   RTC_LOG_THREAD_BLOCK_COUNT();
 
-  stats_->UpdateStats(level);
+  legacy_stats_->UpdateStats(level);
 
   RTC_DCHECK_BLOCK_COUNT_NO_MORE_THAN(4);
 
-  // The StatsCollector is used to tell if a track is valid because it may
+  // The LegacyStatsCollector is used to tell if a track is valid because it may
   // remember tracks that the PeerConnection previously removed.
-  if (track && !stats_->IsValidTrack(track->id())) {
-    RTC_LOG(LS_WARNING) << "GetStats is called with an invalid track: "
+  if (track && !legacy_stats_->IsValidTrack(track->id())) {
+    RTC_LOG(LS_WARNING) << "Legacy GetStats is called with an invalid track: "
                         << track->id();
     return false;
   }
-  message_handler_.PostGetStats(observer, stats_.get(), track);
+  message_handler_.PostGetStats(observer, legacy_stats_.get(), track);
 
   return true;
 }
@@ -1816,7 +1817,7 @@
   }
   // Update stats here so that we have the most recent stats for tracks and
   // streams before the channels are closed.
-  stats_->UpdateStats(kStatsOutputLevelStandard);
+  legacy_stats_->UpdateStats(kStatsOutputLevelStandard);
 
   ice_connection_state_ = PeerConnectionInterface::kIceConnectionClosed;
   Observer()->OnIceConnectionChange(ice_connection_state_);
diff --git a/pc/peer_connection.h b/pc/peer_connection.h
index b7fdbf9..30bcdf3 100644
--- a/pc/peer_connection.h
+++ b/pc/peer_connection.h
@@ -61,6 +61,7 @@
 #include "pc/data_channel_utils.h"
 #include "pc/dtls_transport.h"
 #include "pc/jsep_transport_controller.h"
+#include "pc/legacy_stats_collector.h"
 #include "pc/peer_connection_internal.h"
 #include "pc/peer_connection_message_handler.h"
 #include "pc/rtc_stats_collector.h"
@@ -70,7 +71,6 @@
 #include "pc/sctp_data_channel.h"
 #include "pc/sdp_offer_answer.h"
 #include "pc/session_description.h"
-#include "pc/stats_collector.h"
 #include "pc/transceiver_list.h"
 #include "pc/transport_stats.h"
 #include "pc/usage_pattern.h"
@@ -320,9 +320,9 @@
   bool ShouldFireNegotiationNeededEvent(uint32_t event_id) override;
 
   // Functions needed by SdpOfferAnswerHandler
-  StatsCollector* stats() override {
+  LegacyStatsCollector* legacy_stats() override {
     RTC_DCHECK_RUN_ON(signaling_thread());
-    return stats_.get();
+    return legacy_stats_.get();
   }
   DataChannelController* data_channel_controller() override {
     RTC_DCHECK_RUN_ON(signaling_thread());
@@ -655,7 +655,7 @@
   // pointer).
   Call* const call_ptr_;
 
-  std::unique_ptr<StatsCollector> stats_
+  std::unique_ptr<LegacyStatsCollector> legacy_stats_
       RTC_GUARDED_BY(signaling_thread());  // A pointer is passed to senders_
   rtc::scoped_refptr<RTCStatsCollector> stats_collector_
       RTC_GUARDED_BY(signaling_thread());
diff --git a/pc/peer_connection_internal.h b/pc/peer_connection_internal.h
index 762f9b1..bc1ce18 100644
--- a/pc/peer_connection_internal.h
+++ b/pc/peer_connection_internal.h
@@ -28,7 +28,7 @@
 namespace webrtc {
 
 class DataChannelController;
-class StatsCollector;
+class LegacyStatsCollector;
 
 // This interface defines the functions that are needed for
 // SdpOfferAnswerHandler to access PeerConnection internal state.
@@ -75,7 +75,7 @@
   virtual JsepTransportController* transport_controller_n() = 0;
   virtual DataChannelController* data_channel_controller() = 0;
   virtual cricket::PortAllocator* port_allocator() = 0;
-  virtual StatsCollector* stats() = 0;
+  virtual LegacyStatsCollector* legacy_stats() = 0;
   // Returns the observer. Will crash on CHECK if the observer is removed.
   virtual PeerConnectionObserver* Observer() const = 0;
   virtual bool GetSctpSslRole(rtc::SSLRole* role) = 0;
diff --git a/pc/peer_connection_message_handler.cc b/pc/peer_connection_message_handler.cc
index 1d3dcf8..0a3e6bb 100644
--- a/pc/peer_connection_message_handler.cc
+++ b/pc/peer_connection_message_handler.cc
@@ -19,7 +19,7 @@
 #include "api/scoped_refptr.h"
 #include "api/sequence_checker.h"
 #include "api/stats_types.h"
-#include "pc/stats_collector_interface.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/location.h"
 
@@ -53,13 +53,13 @@
   RTCError error;
 };
 
-struct GetStatsMsg : public rtc::MessageData {
-  GetStatsMsg(webrtc::StatsObserver* observer,
-              StatsCollectorInterface* stats,
-              webrtc::MediaStreamTrackInterface* track)
+struct LegacyGetStatsMsg : public rtc::MessageData {
+  LegacyGetStatsMsg(webrtc::StatsObserver* observer,
+                    LegacyStatsCollectorInterface* stats,
+                    webrtc::MediaStreamTrackInterface* track)
       : observer(observer), stats(stats), track(track) {}
   rtc::scoped_refptr<webrtc::StatsObserver> observer;
-  StatsCollectorInterface* stats;
+  LegacyStatsCollectorInterface* stats;
   rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> track;
 };
 
@@ -115,7 +115,7 @@
       break;
     }
     case MSG_GETSTATS: {
-      GetStatsMsg* param = static_cast<GetStatsMsg*>(msg->pdata);
+      LegacyGetStatsMsg* param = static_cast<LegacyGetStatsMsg*>(msg->pdata);
       StatsReports reports;
       param->stats->GetStats(param->track.get(), &reports);
       param->observer->OnComplete(reports);
@@ -164,10 +164,11 @@
 
 void PeerConnectionMessageHandler::PostGetStats(
     StatsObserver* observer,
-    StatsCollectorInterface* stats,
+    LegacyStatsCollectorInterface* legacy_stats,
     MediaStreamTrackInterface* track) {
-  signaling_thread()->Post(RTC_FROM_HERE, this, MSG_GETSTATS,
-                           new GetStatsMsg(observer, stats, track));
+  signaling_thread()->Post(
+      RTC_FROM_HERE, this, MSG_GETSTATS,
+      new LegacyGetStatsMsg(observer, legacy_stats, track));
 }
 
 void PeerConnectionMessageHandler::RequestUsagePatternReport(
diff --git a/pc/peer_connection_message_handler.h b/pc/peer_connection_message_handler.h
index c19f5a4..d5ca9ab 100644
--- a/pc/peer_connection_message_handler.h
+++ b/pc/peer_connection_message_handler.h
@@ -18,7 +18,7 @@
 #include "api/peer_connection_interface.h"
 #include "api/rtc_error.h"
 #include "api/stats_types.h"
-#include "pc/stats_collector_interface.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "rtc_base/message_handler.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/thread_message.h"
@@ -47,7 +47,7 @@
       CreateSessionDescriptionObserver* observer,
       RTCError error);
   void PostGetStats(StatsObserver* observer,
-                    StatsCollectorInterface* stats,
+                    LegacyStatsCollectorInterface* legacy_stats,
                     MediaStreamTrackInterface* track);
   void RequestUsagePatternReport(std::function<void()>, int delay_ms);
 
diff --git a/pc/rtp_sender.cc b/pc/rtp_sender.cc
index 6b9d929..b152bcb 100644
--- a/pc/rtp_sender.cc
+++ b/pc/rtp_sender.cc
@@ -21,7 +21,7 @@
 #include "api/media_stream_interface.h"
 #include "api/priority.h"
 #include "media/base/media_engine.h"
-#include "pc/stats_collector_interface.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
 #include "rtc_base/location.h"
@@ -453,7 +453,7 @@
 rtc::scoped_refptr<AudioRtpSender> AudioRtpSender::Create(
     rtc::Thread* worker_thread,
     const std::string& id,
-    StatsCollectorInterface* stats,
+    LegacyStatsCollectorInterface* stats,
     SetStreamsObserver* set_streams_observer) {
   return rtc::make_ref_counted<AudioRtpSender>(worker_thread, id, stats,
                                                set_streams_observer);
@@ -461,10 +461,10 @@
 
 AudioRtpSender::AudioRtpSender(rtc::Thread* worker_thread,
                                const std::string& id,
-                               StatsCollectorInterface* stats,
+                               LegacyStatsCollectorInterface* legacy_stats,
                                SetStreamsObserver* set_streams_observer)
     : RtpSenderBase(worker_thread, id, set_streams_observer),
-      stats_(stats),
+      legacy_stats_(legacy_stats),
       dtmf_sender_proxy_(DtmfSenderProxy::Create(
           rtc::Thread::Current(),
           DtmfSender::Create(rtc::Thread::Current(), this))),
@@ -537,14 +537,14 @@
 }
 
 void AudioRtpSender::AddTrackToStats() {
-  if (can_send_track() && stats_) {
-    stats_->AddLocalAudioTrack(audio_track().get(), ssrc_);
+  if (can_send_track() && legacy_stats_) {
+    legacy_stats_->AddLocalAudioTrack(audio_track().get(), ssrc_);
   }
 }
 
 void AudioRtpSender::RemoveTrackFromStats() {
-  if (can_send_track() && stats_) {
-    stats_->RemoveLocalAudioTrack(audio_track().get(), ssrc_);
+  if (can_send_track() && legacy_stats_) {
+    legacy_stats_->RemoveLocalAudioTrack(audio_track().get(), ssrc_);
   }
 }
 
diff --git a/pc/rtp_sender.h b/pc/rtp_sender.h
index 4c1d307..95f68e3 100644
--- a/pc/rtp_sender.h
+++ b/pc/rtp_sender.h
@@ -37,7 +37,7 @@
 #include "media/base/audio_source.h"
 #include "media/base/media_channel.h"
 #include "pc/dtmf_sender.h"
-#include "pc/stats_collector_interface.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
@@ -46,8 +46,6 @@
 
 namespace webrtc {
 
-class StatsCollectorInterface;
-
 bool UnimplementedRtpParameterHasValue(const RtpParameters& parameters);
 
 // Internal interface used by PeerConnection.
@@ -309,7 +307,7 @@
   static rtc::scoped_refptr<AudioRtpSender> Create(
       rtc::Thread* worker_thread,
       const std::string& id,
-      StatsCollectorInterface* stats,
+      LegacyStatsCollectorInterface* stats,
       SetStreamsObserver* set_streams_observer);
   virtual ~AudioRtpSender();
 
@@ -333,7 +331,7 @@
  protected:
   AudioRtpSender(rtc::Thread* worker_thread,
                  const std::string& id,
-                 StatsCollectorInterface* stats,
+                 LegacyStatsCollectorInterface* legacy_stats,
                  SetStreamsObserver* set_streams_observer);
 
   void SetSend() override;
@@ -355,7 +353,7 @@
   }
   sigslot::signal0<> SignalDestroyed;
 
-  StatsCollectorInterface* stats_ = nullptr;
+  LegacyStatsCollectorInterface* legacy_stats_ = nullptr;
   rtc::scoped_refptr<DtmfSenderInterface> dtmf_sender_proxy_;
   bool cached_track_enabled_ = false;
 
diff --git a/pc/rtp_transmission_manager.cc b/pc/rtp_transmission_manager.cc
index 9880b2d..09b0b73 100644
--- a/pc/rtp_transmission_manager.cc
+++ b/pc/rtp_transmission_manager.cc
@@ -18,7 +18,7 @@
 #include "api/rtp_transceiver_direction.h"
 #include "pc/audio_rtp_receiver.h"
 #include "pc/channel_interface.h"
-#include "pc/stats_collector_interface.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "pc/video_rtp_receiver.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/helpers.h"
@@ -38,13 +38,13 @@
     ConnectionContext* context,
     UsagePattern* usage_pattern,
     PeerConnectionObserver* observer,
-    StatsCollectorInterface* stats,
+    LegacyStatsCollectorInterface* legacy_stats,
     std::function<void()> on_negotiation_needed)
     : is_unified_plan_(is_unified_plan),
       context_(context),
       usage_pattern_(usage_pattern),
       observer_(observer),
-      stats_(stats),
+      legacy_stats_(legacy_stats),
       on_negotiation_needed_(on_negotiation_needed),
       weak_ptr_factory_(this) {}
 
@@ -210,7 +210,7 @@
                (track->kind() == MediaStreamTrackInterface::kAudioKind));
     sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
         signaling_thread(),
-        AudioRtpSender::Create(worker_thread(), id, stats_, this));
+        AudioRtpSender::Create(worker_thread(), id, legacy_stats_, this));
     NoteUsageEvent(UsageEvent::AUDIO_ADDED);
   } else {
     RTC_DCHECK_EQ(media_type, cricket::MEDIA_TYPE_VIDEO);
diff --git a/pc/rtp_transmission_manager.h b/pc/rtp_transmission_manager.h
index 46121d2..90c3d8a 100644
--- a/pc/rtp_transmission_manager.h
+++ b/pc/rtp_transmission_manager.h
@@ -27,12 +27,12 @@
 #include "api/scoped_refptr.h"
 #include "api/sequence_checker.h"
 #include "media/base/media_channel.h"
+#include "pc/legacy_stats_collector_interface.h"
 #include "pc/rtp_receiver.h"
 #include "pc/rtp_receiver_proxy.h"
 #include "pc/rtp_sender.h"
 #include "pc/rtp_sender_proxy.h"
 #include "pc/rtp_transceiver.h"
-#include "pc/stats_collector_interface.h"
 #include "pc/transceiver_list.h"
 #include "pc/usage_pattern.h"
 #include "rtc_base/third_party/sigslot/sigslot.h"
@@ -79,7 +79,7 @@
                          ConnectionContext* context,
                          UsagePattern* usage_pattern,
                          PeerConnectionObserver* observer,
-                         StatsCollectorInterface* stats_,
+                         LegacyStatsCollectorInterface* legacy_stats,
                          std::function<void()> on_negotiation_needed);
 
   // No move or copy permitted.
@@ -264,7 +264,7 @@
   ConnectionContext* context_;
   UsagePattern* usage_pattern_;
   PeerConnectionObserver* observer_;
-  StatsCollectorInterface* const stats_;
+  LegacyStatsCollectorInterface* const legacy_stats_;
   std::function<void()> on_negotiation_needed_;
   rtc::WeakPtrFactory<RtpTransmissionManager> weak_ptr_factory_
       RTC_GUARDED_BY(signaling_thread());
diff --git a/pc/sdp_offer_answer.cc b/pc/sdp_offer_answer.cc
index db51759..3ea8240 100644
--- a/pc/sdp_offer_answer.cc
+++ b/pc/sdp_offer_answer.cc
@@ -42,6 +42,7 @@
 #include "p2p/base/transport_info.h"
 #include "pc/channel_interface.h"
 #include "pc/dtls_transport.h"
+#include "pc/legacy_stats_collector.h"
 #include "pc/media_stream.h"
 #include "pc/media_stream_proxy.h"
 #include "pc/peer_connection_internal.h"
@@ -51,7 +52,6 @@
 #include "pc/rtp_sender.h"
 #include "pc/rtp_sender_proxy.h"
 #include "pc/simulcast_description.h"
-#include "pc/stats_collector.h"
 #include "pc/usage_pattern.h"
 #include "pc/webrtc_session_description_factory.h"
 #include "rtc_base/helpers.h"
@@ -1488,10 +1488,10 @@
   RTC_DCHECK_RUN_ON(signaling_thread());
   RTC_DCHECK(desc);
 
-  // Invalidate the [legacy] stats cache to make sure that it gets updated next
+  // Invalidate the legacy stats cache to make sure that it gets updated next
   // time getStats() gets called, as updating the session description affects
   // the stats.
-  pc_->stats()->InvalidateCache();
+  pc_->legacy_stats()->InvalidateCache();
 
   // Take a reference to the old local description since it's used below to
   // compare against the new local description. When setting the new local
@@ -1826,7 +1826,7 @@
   // Invalidate the [legacy] stats cache to make sure that it gets updated next
   // time getStats() gets called, as updating the session description affects
   // the stats.
-  pc_->stats()->InvalidateCache();
+  pc_->legacy_stats()->InvalidateCache();
 
   if (!operation->ReplaceRemoteDescriptionAndCheckEror())
     return;
@@ -2045,7 +2045,7 @@
   // Once all processing has finished, fire off callbacks.
   auto observer = pc_->Observer();
   for (const auto& transceiver : now_receiving_transceivers) {
-    pc_->stats()->AddTrack(transceiver->receiver()->track().get());
+    pc_->legacy_stats()->AddTrack(transceiver->receiver()->track().get());
     observer->OnTrack(transceiver);
     observer->OnAddTrack(transceiver->receiver(),
                          transceiver->receiver()->streams());
@@ -2115,7 +2115,7 @@
   auto observer = pc_->Observer();
   for (size_t i = 0; i < new_streams->count(); ++i) {
     MediaStreamInterface* new_stream = new_streams->at(i);
-    pc_->stats()->AddStream(new_stream);
+    pc_->legacy_stats()->AddStream(new_stream);
     observer->OnAddStream(rtc::scoped_refptr<MediaStreamInterface>(new_stream));
   }
 
@@ -2834,7 +2834,7 @@
     rtp_manager()->AddVideoTrack(track.get(), local_stream);
   }
 
-  pc_->stats()->AddStream(local_stream);
+  pc_->legacy_stats()->AddStream(local_stream);
   UpdateNegotiationNeeded();
   return true;
 }
diff --git a/pc/test/fake_peer_connection_base.h b/pc/test/fake_peer_connection_base.h
index f629f04..8363f4d 100644
--- a/pc/test/fake_peer_connection_base.h
+++ b/pc/test/fake_peer_connection_base.h
@@ -315,7 +315,7 @@
   JsepTransportController* transport_controller_n() override { return nullptr; }
   DataChannelController* data_channel_controller() override { return nullptr; }
   cricket::PortAllocator* port_allocator() override { return nullptr; }
-  StatsCollector* stats() override { return nullptr; }
+  LegacyStatsCollector* legacy_stats() override { return nullptr; }
   PeerConnectionObserver* Observer() const override { return nullptr; }
   bool GetSctpSslRole(rtc::SSLRole* role) override { return false; }
   PeerConnectionInterface::IceConnectionState ice_connection_state_internal()
diff --git a/pc/test/mock_peer_connection_internal.h b/pc/test/mock_peer_connection_internal.h
index 4dd6db5..09b3d43 100644
--- a/pc/test/mock_peer_connection_internal.h
+++ b/pc/test/mock_peer_connection_internal.h
@@ -226,7 +226,7 @@
   MOCK_METHOD(JsepTransportController*, transport_controller_n, (), (override));
   MOCK_METHOD(DataChannelController*, data_channel_controller, (), (override));
   MOCK_METHOD(cricket::PortAllocator*, port_allocator, (), (override));
-  MOCK_METHOD(StatsCollector*, stats, (), (override));
+  MOCK_METHOD(LegacyStatsCollector*, legacy_stats, (), (override));
   MOCK_METHOD(PeerConnectionObserver*, Observer, (), (const, override));
   MOCK_METHOD(bool, GetSctpSslRole, (rtc::SSLRole*), (override));
   MOCK_METHOD(PeerConnectionInterface::IceConnectionState,