Remove forward declarations in environment.h

These forward declaration complicates applying include cleaner tool

Bug: webrtc:42226242
Change-Id: Iffa3f9a8a38d774bd4565078552892c58845d4f8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/381404
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44172}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 1af8603..6825012 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -366,7 +366,7 @@
     "crypto:options",
     "metronome",
     "neteq:neteq_api",
-    "rtc_event_log",
+    "rtc_event_log:rtc_event_log_factory_interface",
     "task_queue",
     "transport:bandwidth_estimation_settings",
     "transport:bitrate_settings",
diff --git a/api/environment/BUILD.gn b/api/environment/BUILD.gn
index 4db7c46..1a21672 100644
--- a/api/environment/BUILD.gn
+++ b/api/environment/BUILD.gn
@@ -12,9 +12,13 @@
   visibility = [ "*" ]
   sources = [ "environment.h" ]
   deps = [
+    "..:field_trials_view",
     "..:refcountedbase",
     "..:scoped_refptr",
     "../../rtc_base/system:rtc_export",
+    "../../system_wrappers",
+    "../rtc_event_log",
+    "../task_queue",
     "//third_party/abseil-cpp/absl/base:nullability",
   ]
 }
diff --git a/api/environment/DEPS b/api/environment/DEPS
new file mode 100644
index 0000000..7050f40
--- /dev/null
+++ b/api/environment/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+system_wrappers/include/clock.h",
+]
diff --git a/api/environment/environment.h b/api/environment/environment.h
index d86b7ae..20547b9 100644
--- a/api/environment/environment.h
+++ b/api/environment/environment.h
@@ -22,20 +22,15 @@
 #include <utility>
 
 #include "absl/base/nullability.h"
+#include "api/field_trials_view.h"
 #include "api/ref_counted_base.h"
+#include "api/rtc_event_log/rtc_event_log.h"
 #include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/system/rtc_export.h"
+#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
-
-// These classes are forward declared to keep Environment dependencies
-// lightweight. Users who need any of the types below should include their
-// header explicitely.
-class Clock;
-class TaskQueueFactory;
-class FieldTrialsView;
-class RtcEventLog;
-
 // Contains references to WebRTC utilities. Object of this class should be
 // passed as a construction parameter and saved by value in each class that
 // needs it. Most classes shouldn't create a new instance of the `Environment`,
diff --git a/api/environment/environment_factory.h b/api/environment/environment_factory.h
index 66e5137..9a06ca7 100644
--- a/api/environment/environment_factory.h
+++ b/api/environment/environment_factory.h
@@ -16,20 +16,15 @@
 
 #include "absl/base/nullability.h"
 #include "api/environment/environment.h"
+#include "api/field_trials_view.h"
 #include "api/ref_counted_base.h"
+#include "api/rtc_event_log/rtc_event_log.h"
 #include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_factory.h"
 #include "rtc_base/system/rtc_export.h"
+#include "system_wrappers/include/clock.h"
 
 namespace webrtc {
-
-// These classes are forward declared to reduce amount of headers exposed
-// through api header.
-// IWYU pragma: begin_keep
-class Clock;
-class TaskQueueFactory;
-class FieldTrialsView;
-class RtcEventLog;
-// IWYU pragma: end_keep
 // Constructs `Environment`.
 // Individual utilities are provided using one of the `Set` functions.
 // `Set` functions do nothing when nullptr value is passed.
diff --git a/api/rtc_event_log/BUILD.gn b/api/rtc_event_log/BUILD.gn
index 7f241de..fcf5e7e 100644
--- a/api/rtc_event_log/BUILD.gn
+++ b/api/rtc_event_log/BUILD.gn
@@ -15,15 +15,20 @@
     "rtc_event.h",
     "rtc_event_log.cc",
     "rtc_event_log.h",
-    "rtc_event_log_factory_interface.h",
   ]
 
   deps = [
     "..:libjingle_logging_api",
-    "../../rtc_base:checks",
     "../../rtc_base:timeutils",
+  ]
+}
+
+rtc_source_set("rtc_event_log_factory_interface") {
+  visibility = [ "*" ]
+  sources = [ "rtc_event_log_factory_interface.h" ]
+  deps = [
+    ":rtc_event_log",
     "../environment",
-    "../task_queue",
     "//third_party/abseil-cpp/absl/base:nullability",
   ]
 }
@@ -37,6 +42,7 @@
 
   deps = [
     ":rtc_event_log",
+    ":rtc_event_log_factory_interface",
     "..:field_trials_view",
     "../../rtc_base/system:rtc_export",
     "../environment",
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index 83e7ebf..39748a8 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -55,7 +55,7 @@
     "../../audio:audio_processing",
     "../../audio_codecs:audio_codecs_api",
     "../../neteq:neteq_api",
-    "../../rtc_event_log",
+    "../../rtc_event_log:rtc_event_log_factory_interface",
     "../../transport:bitrate_settings",
     "../../transport:network_control",
     "../../units:time_delta",
@@ -91,7 +91,7 @@
     "../../audio:audio_processing",
     "../../audio_codecs:audio_codecs_api",
     "../../neteq:neteq_api",
-    "../../rtc_event_log",
+    "../../rtc_event_log:rtc_event_log_factory_interface",
     "../../transport:bitrate_settings",
     "../../transport:network_control",
     "../../video_codecs:video_codecs_api",
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index d91a446..c87d3b2 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -472,6 +472,7 @@
     "../api:libjingle_logging_api",
     "../api/environment",
     "../api/rtc_event_log",
+    "../api/rtc_event_log:rtc_event_log_factory_interface",
     "../rtc_base:macromagic",
     "../rtc_base/synchronization:mutex",
     "//third_party/abseil-cpp/absl/base:nullability",
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index b96a895..dd4ec75 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -1561,7 +1561,7 @@
     "../api/environment:environment_factory",
     "../api/metronome",
     "../api/neteq:neteq_api",
-    "../api/rtc_event_log:rtc_event_log",
+    "../api/rtc_event_log:rtc_event_log_factory_interface",
     "../api/transport:bitrate_settings",
     "../api/transport:network_control",
     "../api/transport:sctp_transport_factory_interface",