Fix circular dependencies between optional, array_view, and rtc_base.

This splits things out of rtc_base and makes dependencies explicit.

Bug: webrtc:6828
Change-Id: Id521896c3c43595349021c857bec216e429a0c8d
Reviewed-on: https://webrtc-review.googlesource.com/32780
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21264}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 04bfe70..0c7e41c 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -87,6 +87,7 @@
     ":optional",
     ":rtc_stats_api",
     ":video_frame_api",
+    "../rtc_base:checks",
     "audio_codecs:audio_codecs_api",
 
     # Basically, don't add stuff here. You might break sensitive downstream
@@ -185,6 +186,7 @@
   ]
 
   deps = [
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
 }
@@ -220,6 +222,7 @@
   ]
 
   deps = [
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
 }
@@ -232,6 +235,7 @@
   deps = [
     ":video_frame_api",
     "$rtc_libyuv_dir",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../system_wrappers",
   ]
@@ -242,7 +246,8 @@
     "array_view.h",
   ]
   deps = [
-    "../rtc_base:rtc_base_approved",
+    "../rtc_base:checks",
+    "../rtc_base:type_traits",
   ]
 }
 
@@ -253,7 +258,8 @@
   ]
   deps = [
     ":array_view",
-    "../rtc_base:rtc_base_approved",
+    "../rtc_base:checks",
+    "../rtc_base:sanitizer",
   ]
 }
 
@@ -325,6 +331,7 @@
       ":libjingle_peerconnection_api",
       "../api:peerconnection_and_implicit_call_api",
       "../media:rtc_media_base",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
     ]
     if (!build_with_chromium && is_clang) {
@@ -356,6 +363,7 @@
       ":libjingle_peerconnection_test_api",
       ":optional",
       ":ortc_api",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../test:test_support",
diff --git a/api/audio_codecs/BUILD.gn b/api/audio_codecs/BUILD.gn
index 8ea533b..d2c074d 100644
--- a/api/audio_codecs/BUILD.gn
+++ b/api/audio_codecs/BUILD.gn
@@ -29,7 +29,9 @@
     "..:array_view",
     "..:optional",
     "../..:webrtc_common",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
   ]
 }
 
diff --git a/api/video_codecs/BUILD.gn b/api/video_codecs/BUILD.gn
index 4a050ab..f3cb7f1 100644
--- a/api/video_codecs/BUILD.gn
+++ b/api/video_codecs/BUILD.gn
@@ -27,6 +27,7 @@
     "..:video_frame_api",
     "../..:webrtc_common",
     "../../common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
diff --git a/audio/BUILD.gn b/audio/BUILD.gn
index ef132cc..65e3050 100644
--- a/audio/BUILD.gn
+++ b/audio/BUILD.gn
@@ -54,6 +54,7 @@
     "../modules/pacing:pacing",
     "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
     "../modules/rtp_rtcp",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
@@ -113,6 +114,7 @@
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:rtc_task_queue",
+      "../rtc_base:safe_compare",
       "../system_wrappers:system_wrappers",
       "../test:audio_codec_mocks",
       "../test:rtp_test_utils",
diff --git a/audio/utility/BUILD.gn b/audio/utility/BUILD.gn
index 277bf94..f38e0eb 100644
--- a/audio/utility/BUILD.gn
+++ b/audio/utility/BUILD.gn
@@ -23,6 +23,7 @@
     "../..:webrtc_common",
     "../../modules:module_api",
     "../../modules/audio_coding:audio_format_conversion",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -36,6 +37,7 @@
     deps = [
       ":audio_frame_operations",
       "../../modules:module_api",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../test:test_support",
       "//testing/gtest",
diff --git a/call/BUILD.gn b/call/BUILD.gn
index 80a74d4..373d20e 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -73,6 +73,7 @@
     "../api:optional",
     "../modules/rtp_rtcp",
     "../modules/rtp_rtcp:rtp_rtcp_format",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
 }
@@ -98,6 +99,7 @@
   ]
   deps = [
     "../modules/bitrate_controller",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:sequenced_task_checker",
     "../system_wrappers",
@@ -142,6 +144,7 @@
     "../modules/rtp_rtcp",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../modules/utility",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
     "../rtc_base:sequenced_task_checker",
@@ -216,6 +219,7 @@
       "../modules/rtp_rtcp:mock_rtp_rtcp",
       "../modules/rtp_rtcp:rtp_rtcp_format",
       "../modules/utility:mock_process_thread",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
       "../test:audio_codec_mocks",
@@ -249,6 +253,7 @@
       "../modules/audio_coding",
       "../modules/audio_mixer:audio_mixer_impl",
       "../modules/rtp_rtcp",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
       "../system_wrappers:metrics_default",
diff --git a/common_audio/BUILD.gn b/common_audio/BUILD.gn
index 24f6c98..f601731 100644
--- a/common_audio/BUILD.gn
+++ b/common_audio/BUILD.gn
@@ -63,6 +63,7 @@
     ":sinc_resampler",
     "..:webrtc_common",
     "../api:optional",
+    "../rtc_base:checks",
     "../rtc_base:gtest_prod",
     "../rtc_base:rtc_base_approved",
     "../system_wrappers",
@@ -222,8 +223,10 @@
     ":common_audio_c_arm_asm",
     ":common_audio_cc",
     "..:webrtc_common",
+    "../rtc_base:checks",
     "../rtc_base:compile_assert_c",
     "../rtc_base:rtc_base_approved",
+    "../rtc_base:sanitizer",
     "../system_wrappers",
     "../system_wrappers:cpu_features_api",
   ]
@@ -272,6 +275,7 @@
   ]
   deps = [
     ":fir_filter",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../system_wrappers:cpu_features_api",
   ]
@@ -302,6 +306,7 @@
     deps = [
       ":fir_filter",
       ":sinc_resampler",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
     ]
@@ -341,6 +346,7 @@
     deps = [
       ":fir_filter",
       ":sinc_resampler",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
     ]
@@ -380,6 +386,7 @@
     }
     deps = [
       ":common_audio_c",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
     ]
   }
@@ -440,6 +447,7 @@
       ":fir_filter_factory",
       ":sinc_resampler",
       "..:webrtc_common",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../system_wrappers:cpu_features_api",
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 70d3600..fa3c1e0 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -112,7 +112,9 @@
     apk_name = "AppRTCMobileTest"
     android_manifest = "androidtests/AndroidManifest.xml"
 
-    java_files = [ "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java" ]
+    java_files = [
+      "androidtests/src/org/appspot/apprtc/test/PeerConnectionClientTest.java",
+    ]
 
     apk_under_test = ":AppRTCMobile"
 
@@ -500,6 +502,7 @@
     }
     deps = [
       "../api:video_frame_api_i420",
+      "../rtc_base:checks",
     ]
     if (is_win) {
       sources += [
@@ -715,6 +718,7 @@
     deps = [
       "../p2p:libstunprober",
       "../p2p:rtc_p2p",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers:field_trial_default",
diff --git a/logging/BUILD.gn b/logging/BUILD.gn
index 9d1acf0..bfa20aa 100644
--- a/logging/BUILD.gn
+++ b/logging/BUILD.gn
@@ -78,7 +78,9 @@
     "../modules/audio_coding:audio_network_adaptor_config",
     "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
     "../modules/rtp_rtcp:rtp_rtcp_format",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
+    "../system_wrappers",
   ]
 
   # TODO(eladalon): Remove this.
@@ -106,6 +108,7 @@
     "../modules/audio_coding:audio_network_adaptor",
     "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
     "../modules/rtp_rtcp:rtp_rtcp_format",
+    "../rtc_base:checks",
     "../rtc_base:protobuf_utils",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
@@ -148,6 +151,7 @@
       "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
       "../modules/rtp_rtcp",
       "../modules/rtp_rtcp:rtp_rtcp_format",
+      "../rtc_base:checks",
       "../rtc_base:protobuf_utils",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
@@ -185,6 +189,7 @@
         "../modules/audio_coding:audio_network_adaptor",
         "../modules/remote_bitrate_estimator:remote_bitrate_estimator",
         "../modules/rtp_rtcp:rtp_rtcp_format",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
         "../rtc_base:rtc_base_tests_utils",
         "../system_wrappers:metrics_default",
@@ -208,6 +213,7 @@
         ":rtc_event_log_parser",
         "../modules/rtp_rtcp",
         "../modules/rtp_rtcp:rtp_rtcp_format",
+        "../rtc_base:checks",
         "../rtc_base:protobuf_utils",
         "../rtc_base:rtc_base_approved",
         "../system_wrappers:field_trial_default",
@@ -233,6 +239,7 @@
         "../:webrtc_common",
         "../call:video_stream_api",
         "../modules/rtp_rtcp:rtp_rtcp_format",
+        "../rtc_base:checks",
         "../rtc_base:protobuf_utils",
         "../rtc_base:rtc_base_approved",
 
@@ -257,6 +264,7 @@
         ":rtc_event_log_api",
         ":rtc_event_log_impl",
         ":rtc_event_log_proto",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
       ]
       if (!build_with_chromium && is_clang) {
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 31822ce..4793ec9 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -54,7 +54,10 @@
 rtc_static_library("rtc_media_base") {
   defines = []
   libs = []
-  deps = []
+  deps = [
+    "../rtc_base:checks",
+    "../rtc_base:sanitizer",
+  ]
   public_deps = []
   sources = [
     "base/adaptedvideotracksource.cc",
@@ -130,6 +133,7 @@
     "../api:video_frame_api_i420",
     "../call:call_interfaces",
     "../modules/video_coding:video_coding_utility",
+    "../rtc_base:checks",
     "../system_wrappers:field_trial_api",
     "../system_wrappers:metrics_api",
   ]
@@ -343,6 +347,7 @@
       "../modules/rtp_rtcp:rtp_rtcp_format",
       "../modules/video_coding:video_coding_utility",
       "../p2p:rtc_p2p",
+      "../rtc_base:checks",
     ]
     sources = [
       "base/fakemediaengine.h",
@@ -434,6 +439,7 @@
       "../api:video_frame_api_i420",
       "../pc:rtc_pc",
       "../pc:rtc_pc_base",
+      "../rtc_base:checks",
       "../test:field_trial",
     ]
     sources = [
diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn
index dbc821f..dc55621 100644
--- a/modules/audio_coding/BUILD.gn
+++ b/modules/audio_coding/BUILD.gn
@@ -50,7 +50,9 @@
     "../../api:array_view",
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
   ]
 }
 
@@ -63,6 +65,7 @@
     "acm2/rent_a_codec.h",
   ]
   deps = [
+           "../../rtc_base:checks",
            "../../api:array_view",
            "../../api:optional",
            "../../api/audio_codecs:audio_codecs_api",
@@ -129,6 +132,7 @@
   }
 
   deps = audio_coding_deps + [
+           "../../rtc_base:checks",
            "../../system_wrappers:metrics_api",
            "..:module_api",
            "../../api:array_view",
@@ -196,6 +200,7 @@
   deps = [
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -219,6 +224,7 @@
     ":legacy_encoded_audio_frame",
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
   public_deps = [
@@ -258,6 +264,7 @@
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
     "../../api/audio_codecs/g722:audio_encoder_g722_config",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
   public_deps = [
@@ -299,6 +306,7 @@
     "../../api/audio_codecs:audio_codecs_api",
     "../../api/audio_codecs/ilbc:audio_encoder_ilbc_config",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
   public_deps = [
@@ -455,7 +463,9 @@
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
   ]
 }
 
@@ -469,6 +479,7 @@
   deps = [
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -559,6 +570,7 @@
     ":isac_common",
     "../..:webrtc_common",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:compile_assert_c",
     "../../rtc_base:rtc_base_approved",
   ]
@@ -665,8 +677,10 @@
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:compile_assert_c",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
     "../../system_wrappers:cpu_features_api",
   ]
 
@@ -741,6 +755,7 @@
     deps = [
       ":isac_fix_common",
       "../../common_audio",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
     ]
   }
@@ -766,6 +781,7 @@
     ":legacy_encoded_audio_frame",
     "../..:webrtc_common",
     "../../api/audio_codecs:audio_codecs_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
   public_deps = [
@@ -802,6 +818,7 @@
     "../../api/audio_codecs:audio_codecs_api",
     "../../api/audio_codecs/opus:audio_encoder_opus_config",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
     "../../system_wrappers:field_trial_api",
@@ -839,6 +856,7 @@
 
   deps = [
     "../..:webrtc_common",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -912,6 +930,7 @@
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_audio",
     "../../logging:rtc_event_log_api",
+    "../../rtc_base:checks",
     "../../rtc_base:protobuf_utils",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
@@ -1026,8 +1045,10 @@
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:gtest_prod",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
     "../../system_wrappers:field_trial_api",
     "../../system_wrappers:metrics_api",
   ]
@@ -1066,6 +1087,7 @@
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
     "../../api/audio_codecs:builtin_audio_decoder_factory",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../rtp_rtcp",
   ]
@@ -1101,6 +1123,7 @@
     "../..:webrtc_common",
     "../../api:array_view",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_base_tests_utils",
     "../../test:rtp_test_utils",
@@ -1149,6 +1172,7 @@
     "../../api:array_view",
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../rtp_rtcp",
     "../rtp_rtcp:rtp_rtcp_format",
@@ -1172,6 +1196,7 @@
   deps = [
     "../..:webrtc_common",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -1193,6 +1218,7 @@
     deps = [
       ":neteq_tools_minimal",
       "../../logging:rtc_event_log_parser",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../rtp_rtcp",
       "../rtp_rtcp:rtp_rtcp_format",
@@ -1359,6 +1385,7 @@
     defines = audio_coding_defines
 
     deps = audio_coding_deps + [
+             "../../rtc_base:checks",
              ":audio_coding",
              ":neteq_tools",
              "../../api/audio_codecs:audio_codecs_api",
@@ -1493,6 +1520,7 @@
       defines = []
       deps = [
         "..:module_api",
+        "../../rtc_base:checks",
       ]
       sources = [
         "neteq/tools/neteq_rtpplay.cc",
@@ -1601,6 +1629,7 @@
       "../..:webrtc_common",
       "../../api/audio_codecs:audio_codecs_api",
       "../../api/audio_codecs:builtin_audio_decoder_factory",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
       "../../test:test_support",
@@ -1626,6 +1655,7 @@
       "..:module_api",
       "../..:webrtc_common",
       "../../api/audio_codecs:builtin_audio_decoder_factory",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../test:test_support",
       "//testing/gtest",
@@ -1680,6 +1710,7 @@
     ]
 
     deps = [
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers:system_wrappers_default",
       "../../test:rtp_test_utils",
@@ -1757,6 +1788,7 @@
       ":neteq_quality_test_support",
       ":neteq_tools",
       "../..:webrtc_common",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers:system_wrappers_default",
       "../../test:test_main",
@@ -1792,6 +1824,7 @@
       ":g711",
       ":neteq",
       ":neteq_quality_test_support",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../test:test_main",
       "//testing/gtest",
@@ -2075,10 +2108,12 @@
       "../../common_audio",
       "../../common_audio:mock_common_audio",
       "../../logging:rtc_event_log_api",
+      "../../rtc_base:checks",
       "../../rtc_base:protobuf_utils",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
+      "../../rtc_base:sanitizer",
       "../../system_wrappers",
       "../../system_wrappers:cpu_features_api",
       "../../test:audio_codec_mocks",
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
index 2fd6f9b..3174ee9 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -76,6 +76,7 @@
     deps = [
       ":audio_device_generic",
       "../../api:array_view",
+      "../../rtc_base:checks",
       "../../rtc_base:gtest_prod",
       "../../rtc_base:rtc_base",
       "../../sdk:audio_objc",
@@ -101,6 +102,7 @@
     "../..:webrtc_common",
     "../../api:array_view",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_task_queue",
     "../../system_wrappers",
@@ -329,6 +331,7 @@
       ":mock_audio_device",
       "../../api:array_view",
       "../../api:optional",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
       "../../test:test_support",
diff --git a/modules/audio_mixer/BUILD.gn b/modules/audio_mixer/BUILD.gn
index f2ad160..cffd1a8 100644
--- a/modules/audio_mixer/BUILD.gn
+++ b/modules/audio_mixer/BUILD.gn
@@ -39,6 +39,7 @@
     "../../api:array_view",
     "../../api:audio_mixer_api",
     "../../audio/utility:audio_frame_operations",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
     "../audio_processing",
@@ -59,6 +60,7 @@
   deps = [
     "..:module_api",
     "../../audio/utility:audio_frame_operations",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -83,6 +85,7 @@
       "../../api:array_view",
       "../../api:audio_mixer_api",
       "../../audio/utility:audio_frame_operations",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_task_queue",
       "../../test:test_support",
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index 639424b..dca2478 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -229,8 +229,10 @@
     "../../api:array_view",
     "../../api:optional",
     "../../audio/utility:audio_frame_operations",
+    "../../rtc_base:checks",
     "../../rtc_base:gtest_prod",
     "../../rtc_base:protobuf_utils",
+    "../../rtc_base:sanitizer",
     "../../system_wrappers:cpu_features_api",
     "../../system_wrappers:metrics_api",
     "../audio_coding:isac",
@@ -340,6 +342,7 @@
   deps = [
     "../..:webrtc_common",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:cpu_features_api",
   ]
@@ -402,7 +405,9 @@
     ":audio_processing_statistics",
     "../..:webrtc_common",
     "../../common_audio:common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
+    "../../rtc_base:sanitizer",
     "../../system_wrappers:cpu_features_api",
     "../../system_wrappers:metrics_api",
   ]
@@ -580,6 +585,7 @@
       "../../api:array_view",
       "../../api:optional",
       "../../common_audio:common_audio",
+      "../../rtc_base:checks",
       "../../rtc_base:gtest_prod",
       "../../rtc_base:protobuf_utils",
       "../../rtc_base:rtc_base",
@@ -733,6 +739,7 @@
       "../../api:array_view",
       "../../common_audio:common_audio",
       "../../modules:module_api",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
     ]
   }
@@ -758,6 +765,7 @@
         ":audioproc_test_utils",
         "../../api:optional",
         "../../common_audio:common_audio",
+        "../../rtc_base:checks",
         "../../rtc_base:protobuf_utils",
         "../../rtc_base:rtc_base_approved",
         "../../rtc_base:rtc_task_queue",
@@ -792,6 +800,7 @@
       "../../api:array_view",
       "../../api:optional",
       "../../common_audio",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
       "../../test:test_support",
@@ -844,6 +853,7 @@
       ":audio_processing",
       ":audioproc_test_utils",
       "../../common_audio:common_audio",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers:metrics_default",
     ]
diff --git a/modules/audio_processing/aec_dump/BUILD.gn b/modules/audio_processing/aec_dump/BUILD.gn
index 818a9bf..2e44509 100644
--- a/modules/audio_processing/aec_dump/BUILD.gn
+++ b/modules/audio_processing/aec_dump/BUILD.gn
@@ -74,6 +74,7 @@
 
     deps = [
       "../../../modules:module_api",
+      "../../../rtc_base:checks",
       "../../../rtc_base:protobuf_utils",
       "../../../rtc_base:rtc_base_approved",
       "../../../rtc_base:rtc_task_queue",
diff --git a/modules/audio_processing/test/conversational_speech/BUILD.gn b/modules/audio_processing/test/conversational_speech/BUILD.gn
index c726330..9cedd6e 100644
--- a/modules/audio_processing/test/conversational_speech/BUILD.gn
+++ b/modules/audio_processing/test/conversational_speech/BUILD.gn
@@ -47,6 +47,7 @@
     "../../../..:webrtc_common",
     "../../../../api:array_view",
     "../../../../common_audio",
+    "../../../../rtc_base:checks",
     "../../../../rtc_base:rtc_base_approved",
   ]
   visibility = [ ":*" ]  # Only targets in this file can depend on this.
diff --git a/modules/audio_processing/test/py_quality_assessment/BUILD.gn b/modules/audio_processing/test/py_quality_assessment/BUILD.gn
index 19cfc03..a23151c 100644
--- a/modules/audio_processing/test/py_quality_assessment/BUILD.gn
+++ b/modules/audio_processing/test/py_quality_assessment/BUILD.gn
@@ -117,6 +117,7 @@
   output_name = "py_quality_assessment/quality_assessment/fake_polqa"
   deps = [
     "../../../..:webrtc_common",
+    "../../../../rtc_base:checks",
     "../../../../rtc_base:rtc_base_approved",
   ]
 }
diff --git a/modules/congestion_controller/BUILD.gn b/modules/congestion_controller/BUILD.gn
index 295f40a..58d2e25 100644
--- a/modules/congestion_controller/BUILD.gn
+++ b/modules/congestion_controller/BUILD.gn
@@ -51,6 +51,8 @@
     "../..:webrtc_common",
     "../../api:optional",
     "../../logging:rtc_event_log_api",
+    "../../rtc_base:checks",
+    "../../rtc_base:rate_limiter",
     "../../rtc_base:rtc_base",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
@@ -87,6 +89,7 @@
     deps = [
       ":congestion_controller",
       ":mock_congestion_controller",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
diff --git a/modules/desktop_capture/BUILD.gn b/modules/desktop_capture/BUILD.gn
index efe44f9..277683a 100644
--- a/modules/desktop_capture/BUILD.gn
+++ b/modules/desktop_capture/BUILD.gn
@@ -28,6 +28,7 @@
 
   deps = [
     "../..:webrtc_common",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",  # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
   ]
 }
@@ -37,7 +38,9 @@
     testonly = true
 
     sources = []
-    deps = []
+    deps = [
+      "../../rtc_base:checks",
+    ]
     if (rtc_desktop_capture_supported) {
       deps += [
         ":desktop_capture_mock",
@@ -86,6 +89,7 @@
       ":desktop_capture_mock",
       ":primitives",
       "../..:webrtc_common",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers:cpu_features_api",
       "../../test:test_support",
@@ -125,6 +129,7 @@
 
     deps = [
       ":primitives",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
     ]
@@ -174,6 +179,7 @@
     deps = [
       ":desktop_capture_generic",
       ":primitives",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
       "../../sdk:common_objc",
@@ -328,6 +334,7 @@
     ":primitives",
     "../..:webrtc_common",
     "../../api:refcountedbase",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",  # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
     "../../system_wrappers",
     "../../system_wrappers:cpu_features_api",
diff --git a/modules/pacing/BUILD.gn b/modules/pacing/BUILD.gn
index de10eae..428a99e 100644
--- a/modules/pacing/BUILD.gn
+++ b/modules/pacing/BUILD.gn
@@ -37,6 +37,7 @@
     "../../:webrtc_common",
     "../../api:optional",
     "../../logging:rtc_event_log_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
     "../../system_wrappers:field_trial_api",
@@ -60,6 +61,7 @@
     ]
     deps = [
       ":pacing",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
       "../../system_wrappers",
diff --git a/modules/remote_bitrate_estimator/BUILD.gn b/modules/remote_bitrate_estimator/BUILD.gn
index 7c32ce1..93b8322 100644
--- a/modules/remote_bitrate_estimator/BUILD.gn
+++ b/modules/remote_bitrate_estimator/BUILD.gn
@@ -49,6 +49,7 @@
     "../../api:optional",
     "../../modules:module_api",
     "../../modules/rtp_rtcp:rtp_rtcp_format",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
     "../../system_wrappers:field_trial_api",
@@ -140,6 +141,7 @@
       "..:module_api",
       "../..:webrtc_common",
       "../../api:optional",
+      "../../rtc_base:checks",
       "../../rtc_base:gtest_prod",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
@@ -204,6 +206,7 @@
       ":bwe_simulator_lib",
       ":remote_bitrate_estimator",
       "../..:webrtc_common",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
diff --git a/modules/rtp_rtcp/BUILD.gn b/modules/rtp_rtcp/BUILD.gn
index 6cf158c..e3f35b8 100644
--- a/modules/rtp_rtcp/BUILD.gn
+++ b/modules/rtp_rtcp/BUILD.gn
@@ -87,6 +87,7 @@
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
   ]
@@ -198,7 +199,9 @@
     "../../api/audio_codecs:audio_codecs_api",
     "../../common_video",
     "../../logging:rtc_event_log_api",
+    "../../rtc_base:checks",
     "../../rtc_base:gtest_prod",
+    "../../rtc_base:rate_limiter",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
     "../../rtc_base:sequenced_task_checker",
@@ -238,6 +241,7 @@
     "../../api:array_view",
     "../../api:optional",
     "../../api:transport_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_task_queue",
     "../../rtc_base:weak_ptr",
@@ -255,6 +259,7 @@
     ":rtp_rtcp",
     ":rtp_rtcp_format",
     "..:module_api",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 
@@ -278,6 +283,7 @@
     ":rtp_rtcp_format",
     "..:module_api",
     "../../api:optional",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../test:test_support",
   ]
@@ -399,6 +405,8 @@
       "../../call:rtp_receiver",
       "../../common_video:common_video",
       "../../logging:rtc_event_log_api",
+      "../../rtc_base:checks",
+      "../../rtc_base:rate_limiter",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
       "../../rtc_base:rtc_task_queue",
diff --git a/modules/utility/BUILD.gn b/modules/utility/BUILD.gn
index cba8b17..7002fd2 100644
--- a/modules/utility/BUILD.gn
+++ b/modules/utility/BUILD.gn
@@ -34,6 +34,7 @@
     "../..:webrtc_common",
     "../../audio/utility:audio_frame_operations",
     "../../common_audio",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_task_queue",
     "../../system_wrappers",
diff --git a/modules/video_capture/BUILD.gn b/modules/video_capture/BUILD.gn
index ca945e2..26fb4f9 100644
--- a/modules/video_capture/BUILD.gn
+++ b/modules/video_capture/BUILD.gn
@@ -125,6 +125,7 @@
 
     deps = [
       ":video_capture_module",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../system_wrappers",
     ]
diff --git a/modules/video_coding/BUILD.gn b/modules/video_coding/BUILD.gn
index 6de45e2..ccd4a43 100644
--- a/modules/video_coding/BUILD.gn
+++ b/modules/video_coding/BUILD.gn
@@ -103,6 +103,7 @@
     "../../api:video_frame_api_i420",
     "../../call:video_stream_api",
     "../../common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
@@ -172,6 +173,7 @@
     "../../api/video_codecs:video_codecs_api",
     "../../common_video",
     "../../modules/rtp_rtcp",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
     "../../rtc_base:rtc_task_queue",
@@ -198,6 +200,7 @@
     "../../api:video_frame_api_i420",
     "../../api/video_codecs:video_codecs_api",
     "../../media:rtc_media_base",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:metrics_api",
   ]
@@ -239,6 +242,7 @@
     "../..:webrtc_common",
     "../../api:video_frame_api_i420",
     "../../common_video:common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
   ]
@@ -301,6 +305,7 @@
     "../../api:optional",
     "../../api/video_codecs:video_codecs_api",
     "../../common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_numerics",
     "../../rtc_base:sequenced_task_checker",
@@ -339,6 +344,7 @@
     ":video_coding_utility",
     "..:module_api",
     "../../common_video",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers",
   ]
@@ -392,6 +398,7 @@
       "../../api:video_frame_api",
       "../../api:video_frame_api_i420",
       "../../common_video:common_video",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../test:test_support",
     ]
@@ -427,6 +434,7 @@
       "../../api:video_frame_api_i420",
       "../../api/video_codecs:video_codecs_api",
       "../../common_video:common_video",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_task_queue",
       "../../rtc_base:sequenced_task_checker",
@@ -485,6 +493,7 @@
       "../../common_video",
       "../../media:rtc_audio_video",
       "../../media:rtc_media_base",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_base_tests_utils",
       "../../system_wrappers",
@@ -594,6 +603,7 @@
       "../../api:video_frame_api_i420",
       "../../api/video_codecs:video_codecs_api",
       "../../common_video:common_video",
+      "../../rtc_base:checks",
       "../../rtc_base:rtc_base",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_numerics",
diff --git a/modules/video_processing/BUILD.gn b/modules/video_processing/BUILD.gn
index da889a8..fdf7107 100644
--- a/modules/video_processing/BUILD.gn
+++ b/modules/video_processing/BUILD.gn
@@ -31,6 +31,7 @@
     "../../common_audio",
     "../../common_video",
     "../../modules/utility",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:cpu_features_api",
   ]
diff --git a/ortc/BUILD.gn b/ortc/BUILD.gn
index d280a9d..7aaa929 100644
--- a/ortc/BUILD.gn
+++ b/ortc/BUILD.gn
@@ -47,6 +47,7 @@
     "../pc:peerconnection",
     "../pc:rtc_pc",
     "../pc:rtc_pc_base",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_base_approved",
   ]
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index 431e217..3991281 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -91,6 +91,7 @@
     "../api:libjingle_peerconnection_api",
     "../api:optional",
     "../api:ortc_api",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../system_wrappers:field_trial_api",
   ]
@@ -175,6 +176,7 @@
       ":rtc_p2p",
       "../api:fakemetricsobserver",
       "../api:ortc_api",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
@@ -199,6 +201,7 @@
   deps = [
     ":rtc_p2p",
     "..:webrtc_common",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
   ]
 }
@@ -214,6 +217,7 @@
       ":libstunprober",
       ":p2p_test_utils",
       ":rtc_p2p",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_tests_utils",
       "//testing/gmock",
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 41a3898..225f7f4 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -75,6 +75,7 @@
     "../media:rtc_h264_profile_id",
     "../media:rtc_media_base",
     "../p2p:rtc_p2p",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_task_queue",
   ]
@@ -182,6 +183,7 @@
     "../media:rtc_data",
     "../media:rtc_media_base",
     "../p2p:rtc_p2p",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base",
     "../rtc_base:rtc_base_approved",
     "../stats",
@@ -289,6 +291,7 @@
       "../media:rtc_media_tests_utils",
       "../p2p:p2p_test_utils",
       "../p2p:rtc_p2p",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_main",
@@ -342,6 +345,7 @@
       "../media:rtc_media_tests_utils",
       "../modules/audio_device:audio_device",
       "../p2p:p2p_test_utils",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
@@ -436,6 +440,7 @@
     deps = [
       ":peerconnection",
       ":rtc_pc_base",
+      "../rtc_base:checks",
     ]
     if (is_android) {
       deps += [ ":android_black_magic" ]
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index b11e0fb..e64e444 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -89,6 +89,49 @@
   }
 }
 
+rtc_source_set("checks") {
+  sources = [
+    "checks.cc",
+    "checks.h",
+  ]
+  deps = [
+    ":safe_compare",
+    "..:webrtc_common",
+  ]
+}
+
+rtc_source_set("type_traits") {
+  sources = [
+    "type_traits.h",
+  ]
+}
+
+rtc_source_set("sanitizer") {
+  sources = [
+    "sanitizer.h",
+  ]
+}
+
+rtc_source_set("safe_compare") {
+  sources = [
+    "numerics/safe_compare.h",
+  ]
+  deps = [
+    ":type_traits",
+  ]
+}
+
+rtc_source_set("rate_limiter") {
+  sources = [
+    "rate_limiter.cc",
+    "rate_limiter.h",
+  ]
+  deps = [
+    ":rtc_base_approved",
+    "../system_wrappers",
+  ]
+}
+
 # The subset of rtc_base approved for use outside of libjingle.
 rtc_source_set("rtc_base_approved_generic") {
   visibility = [
@@ -97,13 +140,14 @@
     ":weak_ptr_unittests",
   ]
 
-  # TODO(kjellander): Remove (bugs.webrtc.org/7480)
-  # Enabling GN check triggers a cyclic dependency caused by rate_limiter.cc:
-  #   :rtc_base_approved -> ../system_wrappers -> :rtc_base_approved
-  check_includes = false
+  cflags = []
   defines = []
   libs = []
-  deps = []
+  deps = [
+    ":checks",
+    ":safe_compare",
+    ":type_traits",
+  ]
 
   sources = [
     "arraysize.h",
@@ -122,8 +166,6 @@
     "bytebuffer.cc",
     "bytebuffer.h",
     "byteorder.h",
-    "checks.cc",
-    "checks.h",
     "constructormagic.h",
     "copyonwritebuffer.cc",
     "copyonwritebuffer.h",
@@ -145,7 +187,6 @@
     "numerics/histogram_percentile_counter.h",
     "numerics/mod_ops.h",
     "numerics/moving_max_counter.h",
-    "numerics/safe_compare.h",
     "numerics/safe_conversions.h",
     "numerics/safe_conversions_impl.h",
     "numerics/safe_minmax.h",
@@ -162,8 +203,6 @@
     "race_checker.h",
     "random.cc",
     "random.h",
-    "rate_limiter.cc",
-    "rate_limiter.h",
     "rate_statistics.cc",
     "rate_statistics.h",
     "ratetracker.cc",
@@ -171,7 +210,6 @@
     "refcount.h",
     "refcountedobject.h",
     "refcounter.h",
-    "sanitizer.h",
     "scoped_ref_ptr.h",
     "string_to_number.cc",
     "string_to_number.h",
@@ -191,10 +229,13 @@
     "timeutils.cc",
     "timeutils.h",
     "trace_event.h",
-    "type_traits.h",
   ]
 
-  deps += [ "..:webrtc_common" ]
+  deps += [
+    "..:webrtc_common",
+    "../api:array_view",
+    "../api:optional",
+  ]
 
   if (is_android) {
     libs += [ "log" ]
@@ -350,6 +391,7 @@
 
 rtc_source_set("rtc_task_queue_impl") {
   deps = [
+    ":checks",
     ":rtc_base_approved",
     ":rtc_task_queue_api",
   ]
@@ -385,6 +427,7 @@
     "sequenced_task_checker_impl.h",
   ]
   deps = [
+    ":checks",
     ":rtc_base_approved",
     ":rtc_task_queue",
   ]
@@ -410,7 +453,9 @@
     "numerics/sequence_number_util.h",
   ]
   deps = [
+    ":checks",
     ":rtc_base_approved",
+    ":safe_compare",
     "../api:optional",
   ]
 }
@@ -480,6 +525,7 @@
   libs = []
   defines = []
   deps = [
+    ":checks",
     "..:webrtc_common",
     "../api:optional",
   ]
@@ -797,6 +843,7 @@
   configs += [ ":rtc_base_tests_utils_warnings_config" ]
   public_configs = [ ":rtc_base_tests_utils_exported_config" ]
   deps = [
+    ":checks",
     ":rtc_base",
     "../test:field_trial",
     "../test:test_support",
@@ -841,6 +888,7 @@
       "socketaddress_unittest.cc",
     ]
     deps = [
+      ":checks",
       ":rtc_base",
       ":rtc_base_tests_main",
       ":rtc_base_tests_utils",
@@ -900,11 +948,14 @@
       "virtualsocket_unittest.cc",
     ]
     deps = [
+      ":checks",
+      ":rate_limiter",
       ":rtc_base",
       ":rtc_base_approved",
       ":rtc_base_tests_main",
       ":rtc_base_tests_utils",
       ":rtc_task_queue",
+      ":safe_compare",
       "../api:array_view",
       "../system_wrappers:system_wrappers",
       "../test:test_support",
@@ -933,6 +984,7 @@
       "sequenced_task_checker_unittest.cc",
     ]
     deps = [
+      ":checks",
       ":rtc_base_approved",
       ":rtc_base_tests_main",
       ":rtc_task_queue",
@@ -1025,6 +1077,7 @@
       ]
     }
     deps = [
+      ":checks",
       ":rtc_base_tests_main",
       ":rtc_base_tests_utils",
       "../api:optional",
diff --git a/rtc_base/checks.cc b/rtc_base/checks.cc
index fc5c789..2b1c084 100644
--- a/rtc_base/checks.cc
+++ b/rtc_base/checks.cc
@@ -30,8 +30,15 @@
 #include <windows.h>
 #endif
 
+#if defined(WEBRTC_WIN)
+#define LAST_SYSTEM_ERROR (::GetLastError())
+#elif defined(__native_client__) && __native_client__
+#define LAST_SYSTEM_ERROR (0)
+#elif defined(WEBRTC_POSIX)
+#define LAST_SYSTEM_ERROR (errno)
+#endif  // WEBRTC_WIN
+
 #include "rtc_base/checks.h"
-#include "rtc_base/logging.h"
 
 #if defined(_MSC_VER)
 // Warning C4722: destructor never returns, potential memory leak.
@@ -115,7 +122,7 @@
           << std::endl
           << "#" << std::endl
           << "# Fatal error in " << file << ", line " << line << std::endl
-          << "# last system error: " << RTC_LAST_SYSTEM_ERROR << std::endl
+          << "# last system error: " << LAST_SYSTEM_ERROR << std::endl
           << "# ";
 }
 
diff --git a/rtc_base/event.h b/rtc_base/event.h
index bdf14a8..ce2666f 100644
--- a/rtc_base/event.h
+++ b/rtc_base/event.h
@@ -13,7 +13,7 @@
 
 #include "rtc_base/constructormagic.h"
 #if defined(WEBRTC_WIN)
-#include "rtc_base/win32.h"  // NOLINT: consider this a system header.
+#include <windows.h>
 #elif defined(WEBRTC_POSIX)
 #include <pthread.h>
 #else
diff --git a/rtc_base/file_win.cc b/rtc_base/file_win.cc
index 63edcb5..d7580aa 100644
--- a/rtc_base/file_win.cc
+++ b/rtc_base/file_win.cc
@@ -11,9 +11,9 @@
 #include "rtc_base/file.h"
 
 #include <io.h>
-#include "rtc_base/win32.h"
+#include <windows.h>
 
-#include <limits>  // NOLINT: win32.h should be considered a system header
+#include <limits>
 
 #include "rtc_base/checks.h"
 
diff --git a/rtc_base/fileutils.h b/rtc_base/fileutils.h
index a254494..6f20a20 100644
--- a/rtc_base/fileutils.h
+++ b/rtc_base/fileutils.h
@@ -13,13 +13,15 @@
 
 #include <string>
 
-#if !defined(WEBRTC_WIN)
+#if defined(WEBRTC_WIN)
+#include <windows.h>
+#else
 #include <dirent.h>
 #include <stdio.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
-#endif
+#endif  // WEBRTC_WIN
 
 #include "rtc_base/checks.h"
 #include "rtc_base/constructormagic.h"
diff --git a/rtc_base/flags.cc b/rtc_base/flags.cc
index 4f2b11a..b413798 100644
--- a/rtc_base/flags.cc
+++ b/rtc_base/flags.cc
@@ -15,9 +15,10 @@
 #include <string.h>
 
 #include "rtc_base/checks.h"
+#include "rtc_base/stringutils.h"
 
 #if defined(WEBRTC_WIN)
-#include "rtc_base/win32.h"
+#include <windows.h>
 #include <shellapi.h>
 #endif
 
diff --git a/rtc_base/logging.h b/rtc_base/logging.h
index 83bc33a..5959149 100644
--- a/rtc_base/logging.h
+++ b/rtc_base/logging.h
@@ -341,22 +341,16 @@
   RTC_LOG_GLE_EX(sev, err)
 #define RTC_LOG_ERR(sev) \
   RTC_LOG_GLE(sev)
-#define RTC_LAST_SYSTEM_ERROR \
-  (::GetLastError())
 #elif defined(__native_client__) && __native_client__
 #define RTC_LOG_ERR_EX(sev, err) \
   RTC_LOG(sev)
 #define RTC_LOG_ERR(sev) \
   RTC_LOG(sev)
-#define RTC_LAST_SYSTEM_ERROR \
-  (0)
 #elif defined(WEBRTC_POSIX)
 #define RTC_LOG_ERR_EX(sev, err) \
   RTC_LOG_ERRNO_EX(sev, err)
 #define RTC_LOG_ERR(sev) \
   RTC_LOG_ERRNO(sev)
-#define RTC_LAST_SYSTEM_ERROR \
-  (errno)
 #endif  // WEBRTC_WIN
 
 #define RTC_LOG_TAG(sev, tag)        \
diff --git a/rtc_base/pathutils.cc b/rtc_base/pathutils.cc
index 6ab8b24..b85d14f 100644
--- a/rtc_base/pathutils.cc
+++ b/rtc_base/pathutils.cc
@@ -9,7 +9,7 @@
  */
 
 #if defined(WEBRTC_WIN)
-#include "rtc_base/win32.h"
+#include <windows.h>
 #include <shellapi.h>
 #include <shlobj.h>
 #include <tchar.h>
diff --git a/rtc_base/physicalsocketserver.cc b/rtc_base/physicalsocketserver.cc
index 422171d..0d5fc52 100644
--- a/rtc_base/physicalsocketserver.cc
+++ b/rtc_base/physicalsocketserver.cc
@@ -19,7 +19,6 @@
 
 #if defined(WEBRTC_POSIX)
 #include <string.h>
-#include <errno.h>
 #include <fcntl.h>
 #if defined(WEBRTC_USE_EPOLL)
 // "poll" will be used to wait for the signal dispatcher.
@@ -40,6 +39,8 @@
 #undef SetPort
 #endif
 
+#include <errno.h>
+
 #include <algorithm>
 #include <map>
 
@@ -53,6 +54,14 @@
 #include "rtc_base/timeutils.h"
 #include "rtc_base/win32socketinit.h"
 
+#if defined(WEBRTC_WIN)
+#define LAST_SYSTEM_ERROR (::GetLastError())
+#elif defined(__native_client__) && __native_client__
+#define LAST_SYSTEM_ERROR (0)
+#elif defined(WEBRTC_POSIX)
+#define LAST_SYSTEM_ERROR (errno)
+#endif  // WEBRTC_WIN
+
 #if defined(WEBRTC_POSIX)
 #include <netinet/tcp.h>  // for TCP_NODELAY
 #define IP_MTU 14 // Until this is integrated from linux/in.h to netinet/in.h
@@ -525,7 +534,7 @@
 }
 
 void PhysicalSocket::UpdateLastError() {
-  SetError(RTC_LAST_SYSTEM_ERROR);
+  SetError(LAST_SYSTEM_ERROR);
 }
 
 void PhysicalSocket::MaybeRemapSendError() {
diff --git a/rtc_base/platform_file.cc b/rtc_base/platform_file.cc
index 871e75f..4f0222d 100644
--- a/rtc_base/platform_file.cc
+++ b/rtc_base/platform_file.cc
@@ -10,6 +10,8 @@
 
 #include "rtc_base/platform_file.h"
 
+#include "rtc_base/stringutils.h"
+
 #if defined(WEBRTC_WIN)
 #include <io.h>
 #else
diff --git a/rtc_base/platform_file.h b/rtc_base/platform_file.h
index d47e028..0e18ff2 100644
--- a/rtc_base/platform_file.h
+++ b/rtc_base/platform_file.h
@@ -15,7 +15,7 @@
 #include <string>
 
 #if defined(WEBRTC_WIN)
-#include "rtc_base/win32.h"
+#include <windows.h>
 #endif
 
 namespace rtc {
diff --git a/rtc_base/stream.cc b/rtc_base/stream.cc
index c762277..e8c385a 100644
--- a/rtc_base/stream.cc
+++ b/rtc_base/stream.cc
@@ -29,7 +29,7 @@
 #include "rtc_base/timeutils.h"
 
 #if defined(WEBRTC_WIN)
-#include "rtc_base/win32.h"
+#include <windows.h>
 #define fileno _fileno
 #endif
 
diff --git a/rtc_base/stringutils.h b/rtc_base/stringutils.h
index 95e36ee..b0898c0 100644
--- a/rtc_base/stringutils.h
+++ b/rtc_base/stringutils.h
@@ -19,6 +19,7 @@
 #if defined(WEBRTC_WIN)
 #include <malloc.h>
 #include <wchar.h>
+#include <windows.h>
 #define alloca _alloca
 #endif  // WEBRTC_WIN
 
@@ -295,6 +296,43 @@
 
 #endif  // WEBRTC_WIN
 
+///////////////////////////////////////////////////////////////////////////////
+// UTF helpers (Windows only)
+///////////////////////////////////////////////////////////////////////////////
+
+#if defined(WEBRTC_WIN)
+
+inline std::wstring ToUtf16(const char* utf8, size_t len) {
+  int len16 = ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len),
+                                    nullptr, 0);
+  wchar_t* ws = STACK_ARRAY(wchar_t, len16);
+  ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len), ws, len16);
+  return std::wstring(ws, len16);
+}
+
+inline std::wstring ToUtf16(const std::string& str) {
+  return ToUtf16(str.data(), str.length());
+}
+
+inline std::string ToUtf8(const wchar_t* wide, size_t len) {
+  int len8 = ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len),
+                                   nullptr, 0, nullptr, nullptr);
+  char* ns = STACK_ARRAY(char, len8);
+  ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len), ns, len8,
+                        nullptr, nullptr);
+  return std::string(ns, len8);
+}
+
+inline std::string ToUtf8(const wchar_t* wide) {
+  return ToUtf8(wide, wcslen(wide));
+}
+
+inline std::string ToUtf8(const std::wstring& wstr) {
+  return ToUtf8(wstr.data(), wstr.length());
+}
+
+#endif  // WEBRTC_WIN
+
 // Replaces all occurrences of "search" with "replace".
 void replace_substrs(const char *search,
                      size_t search_len,
diff --git a/rtc_base/win32.cc b/rtc_base/win32.cc
index 42c3d81..cbf6fbb 100644
--- a/rtc_base/win32.cc
+++ b/rtc_base/win32.cc
@@ -311,66 +311,6 @@
   return 1;
 }
 
-//
-// Unix time is in seconds relative to 1/1/1970.  So we compute the windows
-// FILETIME of that time/date, then we add/subtract in appropriate units to
-// convert to/from unix time.
-// The units of FILETIME are 100ns intervals, so by multiplying by or dividing
-// by 10000000, we can convert to/from seconds.
-//
-// FileTime = UnixTime*10000000 + FileTime(1970)
-// UnixTime = (FileTime-FileTime(1970))/10000000
-//
-
-void FileTimeToUnixTime(const FILETIME& ft, time_t* ut) {
-  RTC_DCHECK(nullptr != ut);
-
-  // FILETIME has an earlier date base than time_t (1/1/1970), so subtract off
-  // the difference.
-  SYSTEMTIME base_st;
-  memset(&base_st, 0, sizeof(base_st));
-  base_st.wDay = 1;
-  base_st.wMonth = 1;
-  base_st.wYear = 1970;
-
-  FILETIME base_ft;
-  SystemTimeToFileTime(&base_st, &base_ft);
-
-  ULARGE_INTEGER base_ul, current_ul;
-  memcpy(&base_ul, &base_ft, sizeof(FILETIME));
-  memcpy(&current_ul, &ft, sizeof(FILETIME));
-
-  // Divide by big number to convert to seconds, then subtract out the 1970
-  // base date value.
-  const ULONGLONG RATIO = 10000000;
-  *ut = static_cast<time_t>((current_ul.QuadPart - base_ul.QuadPart) / RATIO);
-}
-
-void UnixTimeToFileTime(const time_t& ut, FILETIME* ft) {
-  RTC_DCHECK(nullptr != ft);
-
-  // FILETIME has an earlier date base than time_t (1/1/1970), so add in
-  // the difference.
-  SYSTEMTIME base_st;
-  memset(&base_st, 0, sizeof(base_st));
-  base_st.wDay = 1;
-  base_st.wMonth = 1;
-  base_st.wYear = 1970;
-
-  FILETIME base_ft;
-  SystemTimeToFileTime(&base_st, &base_ft);
-
-  ULARGE_INTEGER base_ul;
-  memcpy(&base_ul, &base_ft, sizeof(FILETIME));
-
-  // Multiply by big number to convert to 100ns units, then add in the 1970
-  // base date value.
-  const ULONGLONG RATIO = 10000000;
-  ULARGE_INTEGER current_ul;
-  current_ul.QuadPart = base_ul.QuadPart + static_cast<int64_t>(ut) * RATIO;
-  memcpy(ft, &current_ul, sizeof(FILETIME));
-}
-
 bool Utf8ToWindowsFilename(const std::string& utf8, std::wstring* filename) {
   // TODO: Integrate into fileutils.h
   // TODO: Handle wide and non-wide cases via TCHAR?
diff --git a/rtc_base/win32.h b/rtc_base/win32.h
index 5b21429..0cbc412 100644
--- a/rtc_base/win32.h
+++ b/rtc_base/win32.h
@@ -46,50 +46,9 @@
 const char* win32_inet_ntop(int af, const void *src, char* dst, socklen_t size);
 int win32_inet_pton(int af, const char* src, void *dst);
 
-inline std::wstring ToUtf16(const char* utf8, size_t len) {
-  int len16 = ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len),
-                                    nullptr, 0);
-  wchar_t* ws = STACK_ARRAY(wchar_t, len16);
-  ::MultiByteToWideChar(CP_UTF8, 0, utf8, static_cast<int>(len), ws, len16);
-  return std::wstring(ws, len16);
-}
-
-inline std::wstring ToUtf16(const std::string& str) {
-  return ToUtf16(str.data(), str.length());
-}
-
-inline std::string ToUtf8(const wchar_t* wide, size_t len) {
-  int len8 = ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len),
-                                   nullptr, 0, nullptr, nullptr);
-  char* ns = STACK_ARRAY(char, len8);
-  ::WideCharToMultiByte(CP_UTF8, 0, wide, static_cast<int>(len), ns, len8,
-                        nullptr, nullptr);
-  return std::string(ns, len8);
-}
-
-inline std::string ToUtf8(const wchar_t* wide) {
-  return ToUtf8(wide, wcslen(wide));
-}
-
-inline std::string ToUtf8(const std::wstring& wstr) {
-  return ToUtf8(wstr.data(), wstr.length());
-}
-
-// Convert FILETIME to time_t
-void FileTimeToUnixTime(const FILETIME& ft, time_t* ut);
-
-// Convert time_t to FILETIME
-void UnixTimeToFileTime(const time_t& ut, FILETIME * ft);
-
 // Convert a Utf8 path representation to a non-length-limited Unicode pathname.
 bool Utf8ToWindowsFilename(const std::string& utf8, std::wstring* filename);
 
-// Convert a FILETIME to a UInt64
-inline uint64_t ToUInt64(const FILETIME& ft) {
-  ULARGE_INTEGER r = {{ft.dwLowDateTime, ft.dwHighDateTime}};
-  return r.QuadPart;
-}
-
 enum WindowsMajorVersions {
   kWindows2000 = 5,
   kWindowsVista = 6,
diff --git a/rtc_base/win32_unittest.cc b/rtc_base/win32_unittest.cc
index 8084540..5ee3ff4 100644
--- a/rtc_base/win32_unittest.cc
+++ b/rtc_base/win32_unittest.cc
@@ -26,15 +26,6 @@
   }
 };
 
-TEST_F(Win32Test, FileTimeToUInt64Test) {
-  FILETIME ft;
-  ft.dwHighDateTime = 0xBAADF00D;
-  ft.dwLowDateTime = 0xFEED3456;
-
-  uint64_t expected = 0xBAADF00DFEED3456;
-  EXPECT_EQ(expected, ToUInt64(ft));
-}
-
 TEST_F(Win32Test, IPv6AddressCompression) {
   IPAddress ipv6;
 
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index e986d56..84c1d9e 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -235,6 +235,7 @@
         "../modules/audio_coding:audio_network_adaptor",
         "../modules/audio_coding:neteq_tools",
         "../modules/rtp_rtcp:rtp_rtcp_format",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
         "../rtc_base:rtc_numerics",
 
@@ -340,6 +341,7 @@
       "$rtc_libyuv_dir",
       "../common_video:common_video",
       "../rtc_base",
+      "../rtc_base:checks",
       "../test:test_main",
       "//testing/gtest",
     ]
diff --git a/rtc_tools/network_tester/BUILD.gn b/rtc_tools/network_tester/BUILD.gn
index cfc116c..f612f1e 100644
--- a/rtc_tools/network_tester/BUILD.gn
+++ b/rtc_tools/network_tester/BUILD.gn
@@ -43,6 +43,7 @@
       ":network_tester_packet_proto",
       "../../api:optional",
       "../../p2p",
+      "../../rtc_base:checks",
       "../../rtc_base:protobuf_utils",
       "../../rtc_base:rtc_base_approved",
       "../../rtc_base:rtc_task_queue",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index 544c112..9161a29 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -68,6 +68,7 @@
     ]
 
     deps = [
+      "../rtc_base:checks",
       "../rtc_base:rtc_base",
     ]
     configs += [ "..:common_objc" ]
@@ -105,6 +106,7 @@
 
       deps = [
         ":common_objc",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
       ]
 
@@ -138,6 +140,7 @@
         "../api:video_frame_api_i420",
         "../common_video",
         "../media:rtc_media_base",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base",
       ]
 
@@ -195,6 +198,7 @@
         "../api:optional",
         "../common_video",
         "../media:rtc_media_base",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base",
       ]
 
@@ -259,6 +263,7 @@
         deps = [
           ":video_objc",
           "../api:video_frame_api",
+          "../rtc_base:checks",
           "../rtc_base:rtc_base_approved",
         ]
         configs += [ "..:common_objc" ]
@@ -515,6 +520,7 @@
         "../media:rtc_media_base",
         "../modules:module_api",
         "../pc:peerconnection",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base",
       ]
     }
@@ -770,6 +776,7 @@
         "$rtc_libyuv_dir",
         "../api:video_frame_api_i420",
         "../common_video",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
       ]
 
@@ -794,6 +801,7 @@
         "../common_video",
         "../modules:module_api",
         "../modules/video_coding:webrtc_h264",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
       ]
       if (!build_with_chromium && is_clang) {
@@ -829,6 +837,7 @@
         "../modules:module_api",
         "../modules/video_coding:video_coding_utility",
         "../modules/video_coding:webrtc_h264",
+        "../rtc_base:checks",
         "../rtc_base:rtc_base_approved",
         "../system_wrappers",
       ]
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 470ce1e..702ed6c 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -81,6 +81,7 @@
     ":generated_external_classes_jni",
     "../../api:libjingle_peerconnection_api",
     "../../api:optional",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:metrics_api",
@@ -231,6 +232,7 @@
     "../../modules/video_coding:video_coding_utility",
     "../../modules/video_coding:webrtc_vp8",
     "../../modules/video_coding:webrtc_vp9",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_task_queue",
@@ -395,6 +397,7 @@
     "../../modules/audio_device:audio_device",
     "../../modules/utility:utility",
     "../../pc:peerconnection",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base",
     "../../rtc_base:rtc_base_approved",
     "../../rtc_base:rtc_task_queue",
diff --git a/stats/BUILD.gn b/stats/BUILD.gn
index 11936a1..92cd1a9 100644
--- a/stats/BUILD.gn
+++ b/stats/BUILD.gn
@@ -58,6 +58,7 @@
       ":rtc_stats",
       ":rtc_stats_test_utils",
       "../api:rtc_stats_api",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_main",
       "../rtc_base:rtc_base_tests_utils",
diff --git a/system_wrappers/BUILD.gn b/system_wrappers/BUILD.gn
index e98c186..dc2baf6 100644
--- a/system_wrappers/BUILD.gn
+++ b/system_wrappers/BUILD.gn
@@ -56,6 +56,7 @@
     "..:webrtc_common",
     "../api:optional",
     "../modules:module_api_public",
+    "../rtc_base:checks",
   ]
 
   if (is_android) {
@@ -132,6 +133,7 @@
   ]
   deps = [
     "..:webrtc_common",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
 }
diff --git a/test/BUILD.gn b/test/BUILD.gn
index a746833..d48c9cd 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -67,6 +67,7 @@
     "../common_video",
     "../media:rtc_media_base",
     "../modules/video_capture:video_capture_module",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
     "../system_wrappers",
@@ -94,6 +95,7 @@
     "../api:array_view",
     "../modules/rtp_rtcp",
     "../modules/rtp_rtcp:rtp_rtcp_format",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "//testing/gtest",
   ]
@@ -230,6 +232,7 @@
       "../api:video_frame_api",
       "../api:video_frame_api_i420",
       "../common_video",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
       "//testing/gmock",
@@ -374,6 +377,7 @@
     ]
     deps = [
       "..:webrtc_common",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../sdk:common_objc",
     ]
@@ -395,6 +399,7 @@
   deps = [
     "..:webrtc_common",
     "../api:optional",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
   if (is_ios) {
@@ -458,6 +463,7 @@
     ":fileutils",
     ":test_support",
     "../api:optional",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "//testing/gmock",
     "//testing/gtest",
@@ -498,6 +504,7 @@
     "single_threaded_task_queue.h",
   ]
   deps = [
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
   ]
 }
@@ -517,6 +524,7 @@
     "../api:array_view",
     "../common_audio:common_audio",
     "../modules/audio_device:audio_device",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../system_wrappers",
   ]
@@ -595,6 +603,7 @@
     "../modules/video_coding:webrtc_h264",
     "../modules/video_coding:webrtc_vp8",
     "../modules/video_coding:webrtc_vp9",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
     "../rtc_base:sequenced_task_checker",
@@ -676,6 +685,7 @@
     "../common_video",
     "../media:rtc_media_base",
     "../modules/media_file",
+    "../rtc_base:checks",
     "../rtc_base:rtc_base_approved",
     "//testing/gtest",
   ]
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 57d5113..475aeaa 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -151,6 +151,7 @@
     "../../modules/rtp_rtcp",
     "../../modules/rtp_rtcp:fec_test_helper",
     "../../modules/rtp_rtcp:rtp_rtcp_format",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -196,6 +197,7 @@
   ]
   deps = [
     "../../modules/rtp_rtcp",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
     "../../system_wrappers:system_wrappers",
   ]
@@ -246,6 +248,7 @@
     "../../api:optional",
     "../../api/audio_codecs:audio_codecs_api",
     "../../modules/rtp_rtcp:rtp_rtcp_format",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -357,6 +360,7 @@
   ]
   deps = [
     "../../modules/audio_processing:audio_processing",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
@@ -426,6 +430,7 @@
     "../../api:optional",
     "../../modules:module_api",
     "../../modules/audio_processing",
+    "../../rtc_base:checks",
     "../../rtc_base:rtc_base_approved",
   ]
 }
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 16e9709..dcc2762 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -64,6 +64,7 @@
     "../call:rtp_interfaces",
     "../call:video_stream_api",
     "../modules/rtp_rtcp:rtp_rtcp_format",
+    "../rtc_base:checks",
     "../system_wrappers:field_trial_api",
     "../system_wrappers:metrics_api",
 
@@ -113,6 +114,7 @@
       "../modules/video_coding:webrtc_h264",
       "../modules/video_coding:webrtc_vp8",
       "../modules/video_coding:webrtc_vp9",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:rtc_task_queue",
@@ -219,6 +221,7 @@
       "../common_video",
       "../logging:rtc_event_log_api",
       "../modules/rtp_rtcp",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../system_wrappers",
       "../system_wrappers:metrics_default",
@@ -289,6 +292,8 @@
       "../modules/video_coding:webrtc_h264",
       "../modules/video_coding:webrtc_vp8",
       "../modules/video_coding:webrtc_vp9",
+      "../rtc_base:checks",
+      "../rtc_base:rate_limiter",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../rtc_base:rtc_numerics",
diff --git a/voice_engine/BUILD.gn b/voice_engine/BUILD.gn
index e0e0a81..31d95fd 100644
--- a/voice_engine/BUILD.gn
+++ b/voice_engine/BUILD.gn
@@ -76,6 +76,8 @@
     "../modules/rtp_rtcp",
     "../modules/rtp_rtcp:rtp_rtcp_format",
     "../modules/utility",
+    "../rtc_base:checks",
+    "../rtc_base:rate_limiter",
     "../rtc_base:rtc_base_approved",
     "../rtc_base:rtc_task_queue",
     "../system_wrappers",
@@ -113,6 +115,7 @@
       "../modules/rtp_rtcp:rtp_rtcp_format",
       "../modules/utility",
       "../modules/video_capture:video_capture",
+      "../rtc_base:checks",
       "../rtc_base:rtc_base_approved",
       "../rtc_base:rtc_base_tests_utils",
       "../system_wrappers",