Make video_replay buildable from Chromium.

Bug: chromium:942546
Change-Id: Ic127e74b75ccb1fa65b317711d20344d0caee5fb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168280
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30467}
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 4617dd0..fee78c9 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -318,6 +318,60 @@
   ]
 }
 
+rtc_library("video_test_support") {
+  testonly = true
+
+  sources = [
+    "testsupport/frame_reader.h",
+    "testsupport/frame_writer.h",
+    "testsupport/mock/mock_frame_reader.h",
+    "testsupport/video_frame_writer.cc",
+    "testsupport/video_frame_writer.h",
+    "testsupport/y4m_frame_reader.cc",
+    "testsupport/y4m_frame_writer.cc",
+    "testsupport/yuv_frame_reader.cc",
+    "testsupport/yuv_frame_writer.cc",
+  ]
+
+  deps = [
+    ":fileutils",
+    ":frame_utils",
+    ":test_support",
+    ":video_test_common",
+    "../api:scoped_refptr",
+    "../api/video:encoded_image",
+    "../api/video:video_frame",
+    "../api/video:video_frame_i420",
+    "../api/video_codecs:video_codecs_api",
+    "../common_video",
+    "../media:rtc_media_base",
+    "../modules/video_coding:video_codec_interface",
+    "../modules/video_coding:video_coding_utility",
+    "../modules/video_coding:webrtc_h264",
+    "../modules/video_coding:webrtc_vp8",
+    "../modules/video_coding:webrtc_vp9",
+    "../rtc_base:checks",
+    "../rtc_base:criticalsection",
+    "../rtc_base:logging",
+    "../rtc_base:rtc_base_approved",
+    "../rtc_base:rtc_event",
+    "../rtc_base/synchronization:sequence_checker",
+    "../rtc_base/system:file_wrapper",
+    "//third_party/abseil-cpp/absl/types:optional",
+  ]
+
+  if (!is_ios) {
+    deps += [ "//third_party:jpeg" ]
+    sources += [ "testsupport/jpeg_frame_writer.cc" ]
+  } else {
+    sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
+  }
+
+  if (is_android) {
+    deps += [ "//base" ]
+  }
+}
+
 if (rtc_include_tests) {
   rtc_library("test_main_lib") {
     visibility = [ "*" ]
@@ -355,60 +409,6 @@
     ]
   }
 
-  rtc_library("video_test_support") {
-    testonly = true
-
-    sources = [
-      "testsupport/frame_reader.h",
-      "testsupport/frame_writer.h",
-      "testsupport/mock/mock_frame_reader.h",
-      "testsupport/video_frame_writer.cc",
-      "testsupport/video_frame_writer.h",
-      "testsupport/y4m_frame_reader.cc",
-      "testsupport/y4m_frame_writer.cc",
-      "testsupport/yuv_frame_reader.cc",
-      "testsupport/yuv_frame_writer.cc",
-    ]
-
-    deps = [
-      ":fileutils",
-      ":frame_utils",
-      ":test_support",
-      ":video_test_common",
-      "../api:scoped_refptr",
-      "../api/video:encoded_image",
-      "../api/video:video_frame",
-      "../api/video:video_frame_i420",
-      "../api/video_codecs:video_codecs_api",
-      "../common_video",
-      "../media:rtc_media_base",
-      "../modules/video_coding:video_codec_interface",
-      "../modules/video_coding:video_coding_utility",
-      "../modules/video_coding:webrtc_h264",
-      "../modules/video_coding:webrtc_vp8",
-      "../modules/video_coding:webrtc_vp9",
-      "../rtc_base:checks",
-      "../rtc_base:criticalsection",
-      "../rtc_base:logging",
-      "../rtc_base:rtc_base_approved",
-      "../rtc_base:rtc_event",
-      "../rtc_base/synchronization:sequence_checker",
-      "../rtc_base/system:file_wrapper",
-      "//third_party/abseil-cpp/absl/types:optional",
-    ]
-
-    if (!is_ios) {
-      deps += [ "//third_party:jpeg" ]
-      sources += [ "testsupport/jpeg_frame_writer.cc" ]
-    } else {
-      sources += [ "testsupport/jpeg_frame_writer_ios.cc" ]
-    }
-
-    if (is_android) {
-      deps += [ "//base" ]
-    }
-  }
-
   rtc_library("test_support_test_artifacts") {
     testonly = true
     sources = [
diff --git a/video/BUILD.gn b/video/BUILD.gn
index 1878f32..288dddb 100644
--- a/video/BUILD.gn
+++ b/video/BUILD.gn
@@ -239,6 +239,51 @@
   ]
 }
 
+if (!is_component_build) {
+  # This target can be built from Chromium but it doesn't support
+  # is_component_build=true because it depends on WebRTC testonly code
+  # which is not part of //third_party/webrtc_overrides:webrtc_component.
+  rtc_executable("video_replay") {
+    testonly = true
+    sources = [ "video_replay.cc" ]
+    deps = [
+      "../api/rtc_event_log",
+      "../api/task_queue:default_task_queue_factory",
+      "../api/test/video:function_video_factory",
+      "../api/transport:field_trial_based_config",
+      "../api/video_codecs:video_codecs_api",
+      "../call",
+      "../call:call_interfaces",
+      "../common_video",
+      "../media:rtc_internal_video_codecs",
+      "../rtc_base:checks",
+      "../rtc_base:rtc_json",
+      "../rtc_base:stringutils",
+      "../rtc_base:timeutils",
+      "../system_wrappers",
+      "../test:call_config_utils",
+      "../test:encoder_settings",
+      "../test:fake_video_codecs",
+      "../test:null_transport",
+      "../test:rtp_test_utils",
+      "../test:run_test",
+      "../test:run_test_interface",
+      "../test:test_common",
+      "../test:test_renderer",
+      "../test:test_support",
+      "../test:video_test_common",
+      "../test:video_test_support",
+      "//third_party/abseil-cpp/absl/flags:flag",
+      "//third_party/abseil-cpp/absl/flags:parse",
+    ]
+    if (build_with_chromium) {
+      # When building from Chromium, WebRTC's metrics and field trial
+      # implementations need to be replaced by the Chromium ones.
+      deps += [ "//third_party/webrtc_overrides:webrtc_component" ]
+    }
+  }
+}
+
 if (rtc_include_tests) {
   rtc_library("video_mocks") {
     testonly = true
@@ -467,41 +512,6 @@
     ]
   }
 
-  rtc_executable("video_replay") {
-    testonly = true
-    sources = [ "video_replay.cc" ]
-    deps = [
-      "../api/rtc_event_log",
-      "../api/task_queue:default_task_queue_factory",
-      "../api/test/video:function_video_factory",
-      "../api/transport:field_trial_based_config",
-      "../api/video_codecs:video_codecs_api",
-      "../call",
-      "../call:call_interfaces",
-      "../common_video",
-      "../media:rtc_internal_video_codecs",
-      "../rtc_base:checks",
-      "../rtc_base:rtc_json",
-      "../rtc_base:stringutils",
-      "../rtc_base:timeutils",
-      "../system_wrappers",
-      "../test:call_config_utils",
-      "../test:encoder_settings",
-      "../test:fake_video_codecs",
-      "../test:null_transport",
-      "../test:rtp_test_utils",
-      "../test:run_test",
-      "../test:run_test_interface",
-      "../test:test_common",
-      "../test:test_renderer",
-      "../test:test_support",
-      "../test:video_test_common",
-      "../test:video_test_support",
-      "//third_party/abseil-cpp/absl/flags:flag",
-      "//third_party/abseil-cpp/absl/flags:parse",
-    ]
-  }
-
   # TODO(pbos): Rename test suite.
   rtc_library("video_tests") {
     testonly = true