Delete deprecated ReceiveSideCongestionController constructor

This makes Environment and thus field trials a required parameter, thus
RemoteBitrateEstimators member no longer need to fallback to the global field trial string.

Bug: webrtc:42220378
Change-Id: Ieb6ff442d5fde5fa9715573c758a7e078f0ceea4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/349922
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42314}
diff --git a/modules/congestion_controller/include/receive_side_congestion_controller.h b/modules/congestion_controller/include/receive_side_congestion_controller.h
index b4cbfb6..9cbad11 100644
--- a/modules/congestion_controller/include/receive_side_congestion_controller.h
+++ b/modules/congestion_controller/include/receive_side_congestion_controller.h
@@ -42,12 +42,6 @@
       RembThrottler::RembSender remb_sender,
       absl::Nullable<NetworkStateEstimator*> network_state_estimator);
 
-  [[deprecated]] ReceiveSideCongestionController(
-      Clock* clock,
-      RemoteEstimatorProxy::TransportFeedbackSender feedback_sender,
-      RembThrottler::RembSender remb_sender,
-      NetworkStateEstimator* network_state_estimator);
-
   ~ReceiveSideCongestionController() override = default;
 
   void OnReceivedPacket(const RtpPacketReceived& packet, MediaType media_type);
@@ -80,7 +74,7 @@
   void PickEstimator(bool has_absolute_send_time)
       RTC_EXCLUSIVE_LOCKS_REQUIRED(mutex_);
 
-  Clock& clock_;
+  const Environment env_;
   RembThrottler remb_throttler_;
   RemoteEstimatorProxy remote_estimator_proxy_;
 
diff --git a/modules/congestion_controller/receive_side_congestion_controller.cc b/modules/congestion_controller/receive_side_congestion_controller.cc
index 3bcc82f..317858c 100644
--- a/modules/congestion_controller/receive_side_congestion_controller.cc
+++ b/modules/congestion_controller/receive_side_congestion_controller.cc
@@ -51,7 +51,7 @@
           << "WrappingBitrateEstimator: Switching to absolute send time RBE.";
       using_absolute_send_time_ = true;
       rbe_ = std::make_unique<RemoteBitrateEstimatorAbsSendTime>(
-          &remb_throttler_, &clock_);
+          env_, &remb_throttler_);
     }
     packets_since_absolute_send_time_ = 0;
   } else {
@@ -64,7 +64,7 @@
                "time offset RBE.";
         using_absolute_send_time_ = false;
         rbe_ = std::make_unique<RemoteBitrateEstimatorSingleStream>(
-            &remb_throttler_, &clock_);
+            env_, &remb_throttler_);
       }
     }
   }
@@ -75,26 +75,13 @@
     RemoteEstimatorProxy::TransportFeedbackSender feedback_sender,
     RembThrottler::RembSender remb_sender,
     absl::Nullable<NetworkStateEstimator*> network_state_estimator)
-    : clock_(env.clock()),
-      remb_throttler_(std::move(remb_sender), &clock_),
+    : env_(env),
+      remb_throttler_(std::move(remb_sender), &env_.clock()),
       remote_estimator_proxy_(std::move(feedback_sender),
                               network_state_estimator),
-      rbe_(
-          std::make_unique<RemoteBitrateEstimatorSingleStream>(&remb_throttler_,
-                                                               &clock_)),
-      using_absolute_send_time_(false),
-      packets_since_absolute_send_time_(0) {}
-
-ReceiveSideCongestionController::ReceiveSideCongestionController(
-    Clock* clock,
-    RemoteEstimatorProxy::TransportFeedbackSender feedback_sender,
-    RembThrottler::RembSender remb_sender,
-    NetworkStateEstimator* network_state_estimator)
-    : clock_(*clock),
-      remb_throttler_(std::move(remb_sender), clock),
-      remote_estimator_proxy_(std::move(feedback_sender),
-                              network_state_estimator),
-      rbe_(new RemoteBitrateEstimatorSingleStream(&remb_throttler_, clock)),
+      rbe_(std::make_unique<RemoteBitrateEstimatorSingleStream>(
+          env_,
+          &remb_throttler_)),
       using_absolute_send_time_(false),
       packets_since_absolute_send_time_(0) {}
 
@@ -125,7 +112,7 @@
 }
 
 TimeDelta ReceiveSideCongestionController::MaybeProcess() {
-  Timestamp now = clock_.CurrentTime();
+  Timestamp now = env_.clock().CurrentTime();
   mutex_.Lock();
   TimeDelta time_until_rbe = rbe_->Process();
   mutex_.Unlock();
diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn
index b9346ae..d691ad7 100644
--- a/modules/remote_bitrate_estimator/BUILD.gn
+++ b/modules/remote_bitrate_estimator/BUILD.gn
@@ -36,7 +36,7 @@
     "../../api:field_trials_view",
     "../../api:network_state_predictor_api",
     "../../api:rtp_headers",
-    "../../api/transport:field_trial_based_config",
+    "../../api/environment",
     "../../api/transport:network_control",
     "../../api/units:data_rate",
     "../../api/units:data_size",
@@ -55,10 +55,10 @@
     "../../rtc_base/experiments:field_trial_parser",
     "../../rtc_base/synchronization:mutex",
     "../../system_wrappers",
-    "../../system_wrappers:field_trial",
     "../../system_wrappers:metrics",
   ]
   absl_deps = [
+    "//third_party/abseil-cpp/absl/base:nullability",
     "//third_party/abseil-cpp/absl/strings",
     "//third_party/abseil-cpp/absl/types:optional",
   ]
@@ -120,6 +120,7 @@
     deps = [
       ":remote_bitrate_estimator",
       "..:module_api_public",
+      "../../api/environment:environment_factory",
       "../../api/transport:mock_network_control",
       "../../api/transport:network_control",
       "../../api/units:data_rate",
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc
index fcfbb2e..278ad9d 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.cc
@@ -16,7 +16,8 @@
 #include <memory>
 #include <utility>
 
-#include "api/transport/field_trial_based_config.h"
+#include "absl/base/nullability.h"
+#include "api/environment/environment.h"
 #include "api/units/data_rate.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
@@ -88,11 +89,9 @@
 }
 
 RemoteBitrateEstimatorAbsSendTime::RemoteBitrateEstimatorAbsSendTime(
-    RemoteBitrateObserver* observer,
-    Clock* clock)
-    : clock_(clock), observer_(observer), remote_rate_(field_trials_) {
-  RTC_DCHECK(clock_);
-  RTC_DCHECK(observer_);
+    const Environment& env,
+    absl::Nonnull<RemoteBitrateObserver*> observer)
+    : env_(env), observer_(observer), remote_rate_(env_.field_trials()) {
   RTC_LOG(LS_INFO) << "RemoteBitrateEstimatorAbsSendTime: Instantiating.";
 }
 
@@ -225,7 +224,7 @@
   Timestamp send_time =
       Timestamp::Millis(static_cast<int64_t>(timestamp) * kTimestampToMs);
 
-  Timestamp now = clock_->CurrentTime();
+  Timestamp now = env_.clock().CurrentTime();
   // TODO(holmer): SSRCs are only needed for REMB, should be broken out from
   // here.
 
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h
index 9bcdfb8..e48f3ab 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h
@@ -19,8 +19,9 @@
 #include <memory>
 #include <vector>
 
+#include "absl/base/nullability.h"
+#include "api/environment/environment.h"
 #include "api/rtp_headers.h"
-#include "api/transport/field_trial_based_config.h"
 #include "api/units/data_rate.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
@@ -32,14 +33,14 @@
 #include "modules/remote_bitrate_estimator/overuse_estimator.h"
 #include "rtc_base/bitrate_tracker.h"
 #include "rtc_base/checks.h"
-#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
 
 class RemoteBitrateEstimatorAbsSendTime : public RemoteBitrateEstimator {
  public:
-  RemoteBitrateEstimatorAbsSendTime(RemoteBitrateObserver* observer,
-                                    Clock* clock);
+  RemoteBitrateEstimatorAbsSendTime(
+      const Environment& env,
+      absl::Nonnull<RemoteBitrateObserver*> observer);
 
   RemoteBitrateEstimatorAbsSendTime() = delete;
   RemoteBitrateEstimatorAbsSendTime(const RemoteBitrateEstimatorAbsSendTime&) =
@@ -98,9 +99,8 @@
 
   void TimeoutStreams(Timestamp now);
 
-  Clock* const clock_;
-  const FieldTrialBasedConfig field_trials_;
-  RemoteBitrateObserver* const observer_;
+  const Environment env_;
+  const absl::Nonnull<RemoteBitrateObserver*> observer_;
   std::unique_ptr<InterArrival> inter_arrival_;
   std::unique_ptr<OveruseEstimator> estimator_;
   OveruseDetector detector_;
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
index d8ef23c..6cdf8a6 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc
@@ -10,6 +10,9 @@
 
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time.h"
 
+#include <memory>
+
+#include "api/environment/environment_factory.h"
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h"
 #include "test/gtest.h"
 
@@ -25,12 +28,10 @@
   RemoteBitrateEstimatorAbsSendTimeTest& operator=(
       const RemoteBitrateEstimatorAbsSendTimeTest&) = delete;
 
-  virtual void SetUp() {
-    bitrate_estimator_.reset(new RemoteBitrateEstimatorAbsSendTime(
-        bitrate_observer_.get(), &clock_));
+  void SetUp() override {
+    bitrate_estimator_ = std::make_unique<RemoteBitrateEstimatorAbsSendTime>(
+        CreateEnvironment(&clock_), bitrate_observer_.get());
   }
-
- protected:
 };
 
 TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, InitialBehavior) {
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
index 1605008..9db92ac 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
@@ -13,7 +13,9 @@
 #include <cstdint>
 #include <utility>
 
+#include "absl/base/nullability.h"
 #include "absl/types/optional.h"
+#include "api/environment/environment.h"
 #include "modules/remote_bitrate_estimator/aimd_rate_control.h"
 #include "modules/remote_bitrate_estimator/include/bwe_defines.h"
 #include "modules/remote_bitrate_estimator/inter_arrival.h"
@@ -39,13 +41,13 @@
       inter_arrival(90 * kTimestampGroupLengthMs, kTimestampToMs) {}
 
 RemoteBitrateEstimatorSingleStream::RemoteBitrateEstimatorSingleStream(
-    RemoteBitrateObserver* observer,
-    Clock* clock)
-    : clock_(clock),
+    const Environment& env,
+    absl::Nonnull<RemoteBitrateObserver*> observer)
+    : env_(env),
+      observer_(observer),
       incoming_bitrate_(kBitrateWindow),
       last_valid_incoming_bitrate_(DataRate::Zero()),
-      remote_rate_(field_trials_),
-      observer_(observer),
+      remote_rate_(env_.field_trials()),
       process_interval_(kProcessInterval),
       uma_recorded_(false) {
   RTC_LOG(LS_INFO) << "RemoteBitrateEstimatorSingleStream: Instantiating.";
@@ -68,7 +70,7 @@
   uint32_t ssrc = rtp_packet.Ssrc();
   uint32_t rtp_timestamp =
       rtp_packet.Timestamp() + transmission_time_offset.value_or(0);
-  Timestamp now = clock_->CurrentTime();
+  Timestamp now = env_.clock().CurrentTime();
   Detector& estimator = overuse_detectors_[ssrc];
   estimator.last_packet_time = now;
 
@@ -114,7 +116,7 @@
 }
 
 TimeDelta RemoteBitrateEstimatorSingleStream::Process() {
-  Timestamp now = clock_->CurrentTime();
+  Timestamp now = env_.clock().CurrentTime();
   Timestamp next_process_time = last_process_time_.has_value()
                                     ? *last_process_time_ + process_interval_
                                     : now;
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h
index 44976ca..16a0097 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h
@@ -17,8 +17,9 @@
 #include <map>
 #include <vector>
 
+#include "absl/base/nullability.h"
 #include "absl/types/optional.h"
-#include "api/transport/field_trial_based_config.h"
+#include "api/environment/environment.h"
 #include "api/units/data_rate.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
@@ -31,13 +32,11 @@
 
 namespace webrtc {
 
-class Clock;
-struct RTPHeader;
-
 class RemoteBitrateEstimatorSingleStream : public RemoteBitrateEstimator {
  public:
-  RemoteBitrateEstimatorSingleStream(RemoteBitrateObserver* observer,
-                                     Clock* clock);
+  RemoteBitrateEstimatorSingleStream(
+      const Environment& env,
+      absl::Nonnull<RemoteBitrateObserver*> observer);
 
   RemoteBitrateEstimatorSingleStream() = delete;
   RemoteBitrateEstimatorSingleStream(
@@ -68,13 +67,12 @@
 
   std::vector<uint32_t> GetSsrcs() const;
 
-  Clock* const clock_;
-  const FieldTrialBasedConfig field_trials_;
+  const Environment env_;
+  const absl::Nonnull<RemoteBitrateObserver*> observer_;
   std::map<uint32_t, Detector> overuse_detectors_;
   BitrateTracker incoming_bitrate_;
   DataRate last_valid_incoming_bitrate_;
   AimdRateControl remote_rate_;
-  RemoteBitrateObserver* const observer_;
   absl::optional<Timestamp> last_process_time_;
   TimeDelta process_interval_;
   bool uma_recorded_;
diff --git a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
index 3d72807..15696dc 100644
--- a/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
+++ b/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc
@@ -10,6 +10,9 @@
 
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h"
 
+#include <memory>
+
+#include "api/environment/environment_factory.h"
 #include "modules/remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h"
 #include "test/gtest.h"
 
@@ -24,12 +27,10 @@
   RemoteBitrateEstimatorSingleTest& operator=(
       const RemoteBitrateEstimatorSingleTest&) = delete;
 
-  virtual void SetUp() {
-    bitrate_estimator_.reset(new RemoteBitrateEstimatorSingleStream(
-        bitrate_observer_.get(), &clock_));
+  void SetUp() override {
+    bitrate_estimator_ = std::make_unique<RemoteBitrateEstimatorSingleStream>(
+        CreateEnvironment(&clock_), bitrate_observer_.get());
   }
-
- protected:
 };
 
 TEST_F(RemoteBitrateEstimatorSingleTest, InitialBehavior) {