Add Environment-based constructor to DefaultVideoJitterTiming.

The existing one will be removed in a separate CL once no longer used.

Bug: b/493549134
Change-Id: I4786ed17b2c6b94c0236c8c17c1581ed362fa6f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/482280
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47999}
diff --git a/modules/video_coding/timing/BUILD.gn b/modules/video_coding/timing/BUILD.gn
index 6b2440c..2cccb28 100644
--- a/modules/video_coding/timing/BUILD.gn
+++ b/modules/video_coding/timing/BUILD.gn
@@ -105,6 +105,7 @@
     ":jitter_estimator",
     ":timestamp_extrapolator",
     "../../../api:field_trials_view",
+    "../../../api/environment",
     "../../../api/units:data_size",
     "../../../api/units:time_delta",
     "../../../api/units:timestamp",
@@ -158,6 +159,7 @@
     ":timestamp_extrapolator",
     ":timing_module",
     "../../../api:field_trials",
+    "../../../api/environment",
     "../../../api/units:data_size",
     "../../../api/units:frequency",
     "../../../api/units:time_delta",
@@ -165,6 +167,7 @@
     "../../../rtc_base:histogram_percentile_counter",
     "../../../system_wrappers",
     "../../../system_wrappers:metrics",
+    "../../../test:create_test_environment",
     "../../../test:create_test_field_trials",
     "../../../test:test_support",
   ]
diff --git a/modules/video_coding/timing/default_video_jitter_timing.cc b/modules/video_coding/timing/default_video_jitter_timing.cc
index 01a3335..ee130a9 100644
--- a/modules/video_coding/timing/default_video_jitter_timing.cc
+++ b/modules/video_coding/timing/default_video_jitter_timing.cc
@@ -13,6 +13,7 @@
 #include <cstdint>
 #include <optional>
 
+#include "api/environment/environment.h"
 #include "api/field_trials_view.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
@@ -24,6 +25,9 @@
 
 namespace webrtc {
 
+DefaultVideoJitterTiming::DefaultVideoJitterTiming(const Environment& env)
+    : DefaultVideoJitterTiming(&env.clock(), env.field_trials()) {}
+
 DefaultVideoJitterTiming::DefaultVideoJitterTiming(
     Clock* clock,
     const FieldTrialsView& field_trials)
diff --git a/modules/video_coding/timing/default_video_jitter_timing.h b/modules/video_coding/timing/default_video_jitter_timing.h
index a88eb0a..c3c8b7f 100644
--- a/modules/video_coding/timing/default_video_jitter_timing.h
+++ b/modules/video_coding/timing/default_video_jitter_timing.h
@@ -14,6 +14,7 @@
 #include <cstdint>
 #include <optional>
 
+#include "api/environment/environment.h"
 #include "api/field_trials_view.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
@@ -27,7 +28,8 @@
 
 class DefaultVideoJitterTiming {
  public:
-  // TODO(b/493549134): Use Environment.
+  explicit DefaultVideoJitterTiming(const Environment& env);
+  // TODO(b/493549134): Remove once no longer used.
   DefaultVideoJitterTiming(Clock* clock, const FieldTrialsView& field_trials);
   ~DefaultVideoJitterTiming() = default;
 
diff --git a/modules/video_coding/timing/default_video_jitter_timing_unittest.cc b/modules/video_coding/timing/default_video_jitter_timing_unittest.cc
index f73cdda..04a3fff 100644
--- a/modules/video_coding/timing/default_video_jitter_timing_unittest.cc
+++ b/modules/video_coding/timing/default_video_jitter_timing_unittest.cc
@@ -13,11 +13,13 @@
 #include <cstdint>
 #include <optional>
 
+#include "api/environment/environment.h"
 #include "api/field_trials.h"
 #include "api/units/data_size.h"
 #include "api/units/time_delta.h"
 #include "api/units/timestamp.h"
 #include "system_wrappers/include/clock.h"
+#include "test/create_test_environment.h"
 #include "test/create_test_field_trials.h"
 #include "test/gtest.h"
 
@@ -30,26 +32,26 @@
 constexpr TimeDelta kRtt = TimeDelta::Millis(100);
 
 TEST(DefaultVideoJitterTimingTest, ExtrapolatorReturnsNulloptInitially) {
-  FieldTrials field_trials = CreateTestFieldTrials();
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env = CreateTestEnvironment({.time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   EXPECT_EQ(timing.ExtrapolateLocalTime(kRtpTimestamp), std::nullopt);
 }
 
 TEST(DefaultVideoJitterTimingTest, ExtrapolatorReturnsTimeAfterUpdate) {
-  FieldTrials field_trials = CreateTestFieldTrials();
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env = CreateTestEnvironment({.time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   timing.OnCompleteTemporalUnit(kRtpTimestamp, clock.CurrentTime());
   EXPECT_EQ(timing.ExtrapolateLocalTime(kRtpTimestamp), clock.CurrentTime());
 }
 
 TEST(DefaultVideoJitterTimingTest, ExtrapolatorReturnsNulloptAfterReset) {
-  FieldTrials field_trials = CreateTestFieldTrials();
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env = CreateTestEnvironment({.time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   timing.OnCompleteTemporalUnit(kRtpTimestamp, clock.CurrentTime());
   EXPECT_EQ(timing.ExtrapolateLocalTime(kRtpTimestamp), clock.CurrentTime());
@@ -59,9 +61,9 @@
 }
 
 TEST(DefaultVideoJitterTimingTest, OnDecodableTemporalUnitReturnsEstimate) {
-  FieldTrials field_trials = CreateTestFieldTrials();
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env = CreateTestEnvironment({.time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   EXPECT_NE(timing.OnDecodableTemporalUnit(kRtpTimestamp, kFrameSize,
                                            clock.CurrentTime(),
@@ -71,9 +73,9 @@
 
 TEST(DefaultVideoJitterTimingTest,
      OnDecodableTemporalUnitReturnsNulloptOnRetransmission) {
-  FieldTrials field_trials = CreateTestFieldTrials();
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env = CreateTestEnvironment({.time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   EXPECT_EQ(timing.OnDecodableTemporalUnit(kRtpTimestamp, kFrameSize,
                                            clock.CurrentTime(),
@@ -86,7 +88,9 @@
   FieldTrials field_trials =
       CreateTestFieldTrials("WebRTC-JitterEstimatorConfig/nack_limit:1/");
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env =
+      CreateTestEnvironment({.field_trials = field_trials, .time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   timing.UpdateRtt(kRtt);
 
@@ -115,7 +119,9 @@
   FieldTrials field_trials =
       CreateTestFieldTrials("WebRTC-JitterEstimatorConfig/nack_limit:1/");
   SimulatedClock clock(kInitialTime);
-  DefaultVideoJitterTiming timing(&clock, field_trials);
+  Environment env =
+      CreateTestEnvironment({.field_trials = field_trials, .time = &clock});
+  DefaultVideoJitterTiming timing(env);
 
   timing.UpdateRtt(kRtt);