GN: Refactor modules_unittests to eliminate package boundary violations.

BUG=webrtc:6954

Review-Url: https://codereview.webrtc.org/2629923002
Cr-Commit-Position: refs/heads/master@{#16166}
diff --git a/webrtc/build/webrtc.gni b/webrtc/build/webrtc.gni
index 8a460f5..45d2ec5 100644
--- a/webrtc/build/webrtc.gni
+++ b/webrtc/build/webrtc.gni
@@ -167,6 +167,9 @@
 rtc_libyuv_dir = "//third_party/libyuv"
 rtc_opus_dir = "//third_party/opus"
 
+# Desktop capturer is supported only on Windows, OSX and Linux.
+rtc_desktop_capture_supported = is_win || is_mac || is_linux
+
 ###############################################################################
 # Templates
 #
diff --git a/webrtc/modules/BUILD.gn b/webrtc/modules/BUILD.gn
index ff059ac..5accf3f 100644
--- a/webrtc/modules/BUILD.gn
+++ b/webrtc/modules/BUILD.gn
@@ -9,11 +9,6 @@
 import("../build/webrtc.gni")
 import("audio_coding/audio_coding.gni")
 
-declare_args() {
-  # Desktop capturer is supported only on Windows, OSX and Linux.
-  rtc_desktop_capture_supported = is_win || is_mac || is_linux
-}
-
 group("modules") {
   public_deps = [
     "audio_coding",
@@ -248,449 +243,36 @@
     }
   }
 
-  rtc_source_set("audio_network_adaptor_unittests") {
-    # Put sources for unittests of audio network adaptor in a separate
-    # rtc_source_set to solve name collision on bitrate_controller_unittest.cc.
+  rtc_test("modules_unittests") {
     testonly = true
+
+    deps = []
+    defines = []
     sources = [
-      "audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc",
-      "audio_coding/audio_network_adaptor/bitrate_controller_unittest.cc",
-      "audio_coding/audio_network_adaptor/channel_controller_unittest.cc",
-      "audio_coding/audio_network_adaptor/controller_manager_unittest.cc",
-      "audio_coding/audio_network_adaptor/dtx_controller_unittest.cc",
-      "audio_coding/audio_network_adaptor/fec_controller_unittest.cc",
-      "audio_coding/audio_network_adaptor/frame_length_controller_unittest.cc",
-      "audio_coding/audio_network_adaptor/mock/mock_controller.h",
-      "audio_coding/audio_network_adaptor/mock/mock_controller_manager.h",
+      "module_common_types_unittest.cc",
     ]
-    deps = [
-      "audio_coding:audio_network_adaptor",
-      "//testing/gmock",
-      "//testing/gtest",
-    ]
-    if (rtc_enable_protobuf) {
-      deps += [ "audio_coding:ana_config_proto" ]
-      defines = [ "WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP" ]
-    }
+
     if (!build_with_chromium && is_clang) {
       # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
     }
-  }
-
-  rtc_test("modules_unittests") {
-    testonly = true
-
-    defines = audio_coding_defines
-    deps = []
-    sources = [
-      "audio_coding/acm2/acm_receiver_unittest.cc",
-      "audio_coding/acm2/audio_coding_module_unittest.cc",
-      "audio_coding/acm2/call_statistics_unittest.cc",
-      "audio_coding/acm2/codec_manager_unittest.cc",
-      "audio_coding/acm2/rent_a_codec_unittest.cc",
-      "audio_coding/codecs/audio_decoder_factory_unittest.cc",
-      "audio_coding/codecs/cng/audio_encoder_cng_unittest.cc",
-      "audio_coding/codecs/cng/cng_unittest.cc",
-      "audio_coding/codecs/ilbc/ilbc_unittest.cc",
-      "audio_coding/codecs/isac/fix/source/filterbanks_unittest.cc",
-      "audio_coding/codecs/isac/fix/source/filters_unittest.cc",
-      "audio_coding/codecs/isac/fix/source/lpc_masking_model_unittest.cc",
-      "audio_coding/codecs/isac/fix/source/transform_unittest.cc",
-      "audio_coding/codecs/isac/main/source/audio_encoder_isac_unittest.cc",
-      "audio_coding/codecs/isac/main/source/isac_unittest.cc",
-      "audio_coding/codecs/isac/unittest.cc",
-      "audio_coding/codecs/legacy_encoded_audio_frame_unittest.cc",
-      "audio_coding/codecs/mock/mock_audio_encoder.cc",
-      "audio_coding/codecs/opus/audio_encoder_opus_unittest.cc",
-      "audio_coding/codecs/opus/opus_unittest.cc",
-      "audio_coding/codecs/red/audio_encoder_copy_red_unittest.cc",
-      "audio_coding/neteq/audio_multi_vector_unittest.cc",
-      "audio_coding/neteq/audio_vector_unittest.cc",
-      "audio_coding/neteq/background_noise_unittest.cc",
-      "audio_coding/neteq/buffer_level_filter_unittest.cc",
-      "audio_coding/neteq/comfort_noise_unittest.cc",
-      "audio_coding/neteq/decision_logic_unittest.cc",
-      "audio_coding/neteq/decoder_database_unittest.cc",
-      "audio_coding/neteq/delay_manager_unittest.cc",
-      "audio_coding/neteq/delay_peak_detector_unittest.cc",
-      "audio_coding/neteq/dsp_helper_unittest.cc",
-      "audio_coding/neteq/dtmf_buffer_unittest.cc",
-      "audio_coding/neteq/dtmf_tone_generator_unittest.cc",
-      "audio_coding/neteq/expand_unittest.cc",
-      "audio_coding/neteq/merge_unittest.cc",
-      "audio_coding/neteq/mock/mock_audio_decoder.h",
-      "audio_coding/neteq/mock/mock_buffer_level_filter.h",
-      "audio_coding/neteq/mock/mock_decoder_database.h",
-      "audio_coding/neteq/mock/mock_delay_manager.h",
-      "audio_coding/neteq/mock/mock_delay_peak_detector.h",
-      "audio_coding/neteq/mock/mock_dtmf_buffer.h",
-      "audio_coding/neteq/mock/mock_dtmf_tone_generator.h",
-      "audio_coding/neteq/mock/mock_expand.h",
-      "audio_coding/neteq/mock/mock_external_decoder_pcm16b.h",
-      "audio_coding/neteq/mock/mock_packet_buffer.h",
-      "audio_coding/neteq/mock/mock_red_payload_splitter.h",
-      "audio_coding/neteq/nack_tracker_unittest.cc",
-      "audio_coding/neteq/neteq_external_decoder_unittest.cc",
-      "audio_coding/neteq/neteq_impl_unittest.cc",
-      "audio_coding/neteq/neteq_network_stats_unittest.cc",
-      "audio_coding/neteq/neteq_stereo_unittest.cc",
-      "audio_coding/neteq/neteq_unittest.cc",
-      "audio_coding/neteq/normal_unittest.cc",
-      "audio_coding/neteq/packet_buffer_unittest.cc",
-      "audio_coding/neteq/post_decode_vad_unittest.cc",
-      "audio_coding/neteq/random_vector_unittest.cc",
-      "audio_coding/neteq/red_payload_splitter_unittest.cc",
-      "audio_coding/neteq/sync_buffer_unittest.cc",
-      "audio_coding/neteq/tick_timer_unittest.cc",
-      "audio_coding/neteq/time_stretch_unittest.cc",
-      "audio_coding/neteq/timestamp_scaler_unittest.cc",
-      "audio_coding/neteq/tools/input_audio_file_unittest.cc",
-      "audio_coding/neteq/tools/packet_unittest.cc",
-      "audio_conference_mixer/test/audio_conference_mixer_unittest.cc",
-      "audio_device/fine_audio_buffer_unittest.cc",
-      "audio_mixer/audio_frame_manipulator_unittest.cc",
-      "audio_mixer/audio_mixer_impl_unittest.cc",
-      "audio_processing/aec/echo_cancellation_unittest.cc",
-      "audio_processing/aec/system_delay_unittest.cc",
-      "audio_processing/agc/agc_manager_direct_unittest.cc",
-      "audio_processing/agc/loudness_histogram_unittest.cc",
-      "audio_processing/agc/mock_agc.h",
-      "audio_processing/audio_buffer_unittest.cc",
-      "audio_processing/beamformer/array_util_unittest.cc",
-      "audio_processing/beamformer/complex_matrix_unittest.cc",
-      "audio_processing/beamformer/covariance_matrix_generator_unittest.cc",
-      "audio_processing/beamformer/matrix_unittest.cc",
-      "audio_processing/beamformer/mock_nonlinear_beamformer.h",
-      "audio_processing/beamformer/nonlinear_beamformer_unittest.cc",
-      "audio_processing/config_unittest.cc",
-      "audio_processing/echo_cancellation_impl_unittest.cc",
-      "audio_processing/splitting_filter_unittest.cc",
-      "audio_processing/transient/dyadic_decimator_unittest.cc",
-      "audio_processing/transient/file_utils.cc",
-      "audio_processing/transient/file_utils.h",
-      "audio_processing/transient/file_utils_unittest.cc",
-      "audio_processing/transient/moving_moments_unittest.cc",
-      "audio_processing/transient/transient_detector_unittest.cc",
-      "audio_processing/transient/transient_suppressor_unittest.cc",
-      "audio_processing/transient/wpd_node_unittest.cc",
-      "audio_processing/transient/wpd_tree_unittest.cc",
-      "audio_processing/utility/block_mean_calculator_unittest.cc",
-      "audio_processing/utility/delay_estimator_unittest.cc",
-      "audio_processing/vad/gmm_unittest.cc",
-      "audio_processing/vad/pitch_based_vad_unittest.cc",
-      "audio_processing/vad/pitch_internal_unittest.cc",
-      "audio_processing/vad/pole_zero_filter_unittest.cc",
-      "audio_processing/vad/standalone_vad_unittest.cc",
-      "audio_processing/vad/vad_audio_proc_unittest.cc",
-      "audio_processing/vad/vad_circular_buffer_unittest.cc",
-      "audio_processing/vad/voice_activity_detector_unittest.cc",
-      "bitrate_controller/bitrate_controller_unittest.cc",
-      "bitrate_controller/send_side_bandwidth_estimation_unittest.cc",
-      "congestion_controller/congestion_controller_unittest.cc",
-      "congestion_controller/delay_based_bwe_unittest.cc",
-      "congestion_controller/delay_based_bwe_unittest_helper.cc",
-      "congestion_controller/delay_based_bwe_unittest_helper.h",
-      "congestion_controller/median_slope_estimator_unittest.cc",
-      "congestion_controller/probe_bitrate_estimator_unittest.cc",
-      "congestion_controller/probe_controller_unittest.cc",
-      "congestion_controller/probing_interval_estimator_unittest.cc",
-      "congestion_controller/transport_feedback_adapter_unittest.cc",
-      "congestion_controller/trendline_estimator_unittest.cc",
-      "media_file/media_file_unittest.cc",
-      "module_common_types_unittest.cc",
-      "pacing/alr_detector_unittest.cc",
-      "pacing/bitrate_prober_unittest.cc",
-      "pacing/paced_sender_unittest.cc",
-      "pacing/packet_router_unittest.cc",
-      "remote_bitrate_estimator/aimd_rate_control_unittest.cc",
-      "remote_bitrate_estimator/include/mock/mock_remote_bitrate_estimator.h",
-      "remote_bitrate_estimator/include/mock/mock_remote_bitrate_observer.h",
-      "remote_bitrate_estimator/inter_arrival_unittest.cc",
-      "remote_bitrate_estimator/overuse_detector_unittest.cc",
-      "remote_bitrate_estimator/remote_bitrate_estimator_abs_send_time_unittest.cc",
-      "remote_bitrate_estimator/remote_bitrate_estimator_single_stream_unittest.cc",
-      "remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.cc",
-      "remote_bitrate_estimator/remote_bitrate_estimator_unittest_helper.h",
-      "remote_bitrate_estimator/remote_estimator_proxy_unittest.cc",
-      "remote_bitrate_estimator/send_time_history_unittest.cc",
-      "remote_bitrate_estimator/test/bwe_test_framework_unittest.cc",
-      "remote_bitrate_estimator/test/bwe_unittest.cc",
-      "remote_bitrate_estimator/test/estimators/nada_unittest.cc",
-      "remote_bitrate_estimator/test/metric_recorder_unittest.cc",
-      "rtp_rtcp/mocks/mock_rtp_rtcp.h",
-      "rtp_rtcp/source/byte_io_unittest.cc",
-      "rtp_rtcp/source/fec_test_helper.cc",
-      "rtp_rtcp/source/fec_test_helper.h",
-      "rtp_rtcp/source/flexfec_header_reader_writer_unittest.cc",
-      "rtp_rtcp/source/flexfec_receiver_unittest.cc",
-      "rtp_rtcp/source/flexfec_sender_unittest.cc",
-      "rtp_rtcp/source/nack_rtx_unittest.cc",
-      "rtp_rtcp/source/packet_loss_stats_unittest.cc",
-      "rtp_rtcp/source/playout_delay_oracle_unittest.cc",
-      "rtp_rtcp/source/receive_statistics_unittest.cc",
-      "rtp_rtcp/source/remote_ntp_time_estimator_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/app_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/bye_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/common_header_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/compound_packet_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/dlrr_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/extended_jitter_report_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/extended_reports_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/fir_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/nack_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/pli_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/rapid_resync_request_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/receiver_report_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/remb_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/report_block_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/rpsi_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/rrtr_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/sdes_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/sender_report_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/sli_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/target_bitrate_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/tmmbn_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/tmmbr_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet/voip_metric_unittest.cc",
-      "rtp_rtcp/source/rtcp_packet_unittest.cc",
-      "rtp_rtcp/source/rtcp_receiver_unittest.cc",
-      "rtp_rtcp/source/rtcp_sender_unittest.cc",
-      "rtp_rtcp/source/rtcp_utility_unittest.cc",
-      "rtp_rtcp/source/rtp_fec_unittest.cc",
-      "rtp_rtcp/source/rtp_format_h264_unittest.cc",
-      "rtp_rtcp/source/rtp_format_vp8_test_helper.cc",
-      "rtp_rtcp/source/rtp_format_vp8_test_helper.h",
-      "rtp_rtcp/source/rtp_format_vp8_unittest.cc",
-      "rtp_rtcp/source/rtp_format_vp9_unittest.cc",
-      "rtp_rtcp/source/rtp_header_extension_unittest.cc",
-      "rtp_rtcp/source/rtp_packet_history_unittest.cc",
-      "rtp_rtcp/source/rtp_packet_unittest.cc",
-      "rtp_rtcp/source/rtp_payload_registry_unittest.cc",
-      "rtp_rtcp/source/rtp_rtcp_impl_unittest.cc",
-      "rtp_rtcp/source/rtp_sender_unittest.cc",
-      "rtp_rtcp/source/rtp_utility_unittest.cc",
-      "rtp_rtcp/source/time_util_unittest.cc",
-      "rtp_rtcp/source/ulpfec_generator_unittest.cc",
-      "rtp_rtcp/source/ulpfec_header_reader_writer_unittest.cc",
-      "rtp_rtcp/source/ulpfec_receiver_unittest.cc",
-      "rtp_rtcp/source/vp8_partition_aggregator_unittest.cc",
-      "rtp_rtcp/test/testAPI/test_api.cc",
-      "rtp_rtcp/test/testAPI/test_api.h",
-      "rtp_rtcp/test/testAPI/test_api_audio.cc",
-      "rtp_rtcp/test/testAPI/test_api_rtcp.cc",
-      "rtp_rtcp/test/testAPI/test_api_video.cc",
-      "utility/source/process_thread_impl_unittest.cc",
-      "video_coding/codecs/test/packet_manipulator_unittest.cc",
-      "video_coding/codecs/test/stats_unittest.cc",
-      "video_coding/codecs/test/videoprocessor_unittest.cc",
-      "video_coding/codecs/vp8/default_temporal_layers_unittest.cc",
-      "video_coding/codecs/vp8/reference_picture_selection_unittest.cc",
-      "video_coding/codecs/vp8/screenshare_layers_unittest.cc",
-      "video_coding/codecs/vp8/simulcast_encoder_adapter_unittest.cc",
-      "video_coding/codecs/vp8/simulcast_unittest.cc",
-      "video_coding/codecs/vp8/simulcast_unittest.h",
-      "video_coding/decoding_state_unittest.cc",
-      "video_coding/frame_buffer2_unittest.cc",
-      "video_coding/h264_sprop_parameter_sets_unittest.cc",
-      "video_coding/h264_sps_pps_tracker_unittest.cc",
-      "video_coding/histogram_unittest.cc",
-      "video_coding/include/mock/mock_vcm_callbacks.h",
-      "video_coding/jitter_buffer_unittest.cc",
-      "video_coding/jitter_estimator_tests.cc",
-      "video_coding/nack_module_unittest.cc",
-      "video_coding/protection_bitrate_calculator_unittest.cc",
-      "video_coding/receiver_unittest.cc",
-      "video_coding/rtp_frame_reference_finder_unittest.cc",
-      "video_coding/sequence_number_util_unittest.cc",
-      "video_coding/session_info_unittest.cc",
-      "video_coding/test/stream_generator.cc",
-      "video_coding/test/stream_generator.h",
-      "video_coding/timing_unittest.cc",
-      "video_coding/utility/default_video_bitrate_allocator_unittest.cc",
-      "video_coding/utility/frame_dropper_unittest.cc",
-      "video_coding/utility/ivf_file_writer_unittest.cc",
-      "video_coding/utility/moving_average_unittest.cc",
-      "video_coding/utility/quality_scaler_unittest.cc",
-      "video_coding/utility/simulcast_rate_allocator_unittest.cc",
-      "video_coding/video_coding_robustness_unittest.cc",
-      "video_coding/video_packet_buffer_unittest.cc",
-      "video_coding/video_receiver_unittest.cc",
-      "video_coding/video_sender_unittest.cc",
-      "video_processing/test/denoiser_test.cc",
-    ]
-
-    if (apm_debug_dump) {
-      defines += [ "WEBRTC_APM_DEBUG_DUMP=1" ]
-    } else {
-      defines += [ "WEBRTC_APM_DEBUG_DUMP=0" ]
-    }
-
-    if (rtc_enable_intelligibility_enhancer) {
-      defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=1" ]
-      sources += [
-        "audio_processing/intelligibility/intelligibility_enhancer_unittest.cc",
-        "audio_processing/intelligibility/intelligibility_utils_unittest.cc",
-      ]
-    } else {
-      defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=0" ]
-    }
-
-    if (rtc_libvpx_build_vp9) {
-      sources +=
-          [ "video_coding/codecs/vp9/vp9_screenshare_layers_unittest.cc" ]
-    }
-
-    if (rtc_use_h264) {
-      sources += [ "video_coding/codecs/h264/h264_encoder_impl_unittest.cc" ]
-    }
-
-    if (rtc_desktop_capture_supported || is_android) {
-      deps += [ "desktop_capture" ]
-      sources += [
-        "desktop_capture/desktop_region_unittest.cc",
-        "desktop_capture/differ_block_unittest.cc",
-      ]
-    }
-
-    if (rtc_desktop_capture_supported) {
-      deps += [ "desktop_capture:desktop_capture_mock" ]
-      sources += [
-        "desktop_capture/desktop_and_cursor_composer_unittest.cc",
-        "desktop_capture/desktop_capturer_differ_wrapper_unittest.cc",
-        "desktop_capture/desktop_frame_rotation_unittest.cc",
-        "desktop_capture/mouse_cursor_monitor_unittest.cc",
-        "desktop_capture/rgba_color_unittest.cc",
-        "desktop_capture/screen_capturer_helper_unittest.cc",
-        "desktop_capture/screen_capturer_mac_unittest.cc",
-        "desktop_capture/screen_capturer_mock_objects.h",
-        "desktop_capture/screen_capturer_unittest.cc",
-        "desktop_capture/test_utils.cc",
-        "desktop_capture/test_utils.h",
-        "desktop_capture/test_utils_unittest.cc",
-        "desktop_capture/win/cursor_unittest.cc",
-        "desktop_capture/win/cursor_unittest_resources.h",
-        "desktop_capture/win/cursor_unittest_resources.rc",
-        "desktop_capture/window_capturer_unittest.cc",
-      ]
-    }
-
-    if (rtc_prefer_fixed_point) {
-      defines += [ "WEBRTC_AUDIOPROC_FIXED_PROFILE" ]
-    } else {
-      defines += [ "WEBRTC_AUDIOPROC_FLOAT_PROFILE" ]
-    }
-
-    if (rtc_enable_protobuf) {
-      defines += [
-        "WEBRTC_AUDIOPROC_DEBUG_DUMP",
-        "WEBRTC_NETEQ_UNITTEST_BITEXACT",
-      ]
-      deps += [
-        "audio_coding:neteq_unittest_proto",
-        "audio_processing:audioproc_protobuf_utils",
-        "audio_processing:audioproc_unittest_proto",
-      ]
-      sources += [
-        "audio_processing/aec3/block_framer_unittest.cc",
-        "audio_processing/aec3/block_processor_unittest.cc",
-        "audio_processing/aec3/cascaded_biquad_filter_unittest.cc",
-        "audio_processing/aec3/echo_canceller3_unittest.cc",
-        "audio_processing/aec3/frame_blocker_unittest.cc",
-        "audio_processing/aec3/mock/mock_block_processor.h",
-        "audio_processing/audio_processing_impl_locking_unittest.cc",
-        "audio_processing/audio_processing_impl_unittest.cc",
-        "audio_processing/audio_processing_unittest.cc",
-        "audio_processing/echo_cancellation_bit_exact_unittest.cc",
-        "audio_processing/echo_control_mobile_unittest.cc",
-        "audio_processing/echo_detector/circular_buffer_unittest.cc",
-        "audio_processing/echo_detector/mean_variance_estimator_unittest.cc",
-        "audio_processing/echo_detector/moving_max_unittest.cc",
-        "audio_processing/echo_detector/normalized_covariance_estimator_unittest.cc",
-        "audio_processing/gain_control_unittest.cc",
-        "audio_processing/level_controller/level_controller_unittest.cc",
-        "audio_processing/level_estimator_unittest.cc",
-        "audio_processing/low_cut_filter_unittest.cc",
-        "audio_processing/noise_suppression_unittest.cc",
-        "audio_processing/residual_echo_detector_unittest.cc",
-        "audio_processing/rms_level_unittest.cc",
-        "audio_processing/test/bitexactness_tools.cc",
-        "audio_processing/test/bitexactness_tools.h",
-        "audio_processing/test/debug_dump_replayer.cc",
-        "audio_processing/test/debug_dump_replayer.h",
-        "audio_processing/test/debug_dump_test.cc",
-        "audio_processing/test/test_utils.h",
-        "audio_processing/voice_detection_unittest.cc",
-      ]
-    }
-
-    if (rtc_build_libvpx) {
-      deps += [ rtc_libvpx_dir ]
-    }
-
-    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
-    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
-
-    if ((!build_with_chromium || is_win) && is_clang) {
-      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
-      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
-    }
-
-    if (is_win) {
-      cflags = [
-        # TODO(kjellander): bugs.webrtc.org/261: Fix this warning.
-        "/wd4373",  # virtual function override.
-      ]
-    }
 
     deps += [
-      ":audio_network_adaptor_unittests",
-      "..:webrtc_common",
-      "../api:transport_api",
-      "../base:rtc_base",  # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
-      "../base:rtc_base_tests_utils",
-      "../common_audio",
-      "../common_video",
-      "../system_wrappers",
-      "../system_wrappers:metrics_default",
-      "../test:rtp_test_utils",
-      "../test:test_common",
       "../test:test_main",
-      "../test:video_test_common",
-      "audio_coding",
-      "audio_coding:acm_receive_test",
-      "audio_coding:acm_send_test",
-      "audio_coding:builtin_audio_decoder_factory",
-      "audio_coding:cng",
-      "audio_coding:isac_fix",
-      "audio_coding:neteq",
-      "audio_coding:neteq_test_support",
-      "audio_coding:neteq_unittest_tools",
-      "audio_coding:pcm16b",
-      "audio_coding:red",
-      "audio_coding:webrtc_opus",
-      "audio_conference_mixer",
-      "audio_device",
-      "audio_mixer",
-      "audio_processing",
-      "audio_processing:audioproc_test_utils",
-      "bitrate_controller",
-      "media_file",
-      "pacing",
-      "remote_bitrate_estimator",
-      "remote_bitrate_estimator:bwe_simulator_lib",
-      "rtp_rtcp",
-      "utility",
-      "video_capture",
-      "video_coding",
-      "video_coding:video_codecs_test_framework",
-      "video_coding:webrtc_vp8",
-      "video_coding:webrtc_vp9",
-      "video_processing",
-      "//testing/gmock",
-      "//testing/gtest",
-      "//third_party/gflags",
+      "audio_coding:audio_coding_unittests",
+      "audio_device:audio_device_unittests",
+      "audio_mixer:audio_mixer_unittests",
+      "audio_processing:audio_processing_unittests",
+      "bitrate_controller:bitrate_controller_unittests",
+      "congestion_controller:congestion_controller_unittests",
+      "desktop_capture:desktop_capture_unittests",
+      "media_file:media_file_unittests",
+      "pacing:pacing_unittests",
+      "remote_bitrate_estimator:remote_bitrate_estimator_unittests",
+      "rtp_rtcp:rtp_rtcp_unittests",
+      "utility:utility_unittests",
+      "video_coding:video_coding_unittests",
+      "video_processing:video_processing_unittests",
     ]
 
     data = modules_unittests_resources
@@ -700,34 +282,12 @@
         "//testing/android/native_test:native_test_support",
         "//webrtc/sdk/android:libjingle_peerconnection_java",
       ]
-
-      # Need to disable error due to the line in
-      # base/android/jni_android.h triggering it:
-      # const BASE_EXPORT jobject GetApplicationContext()
-      # error: type qualifiers ignored on function return type
-      cflags = [ "-Wno-ignored-qualifiers" ]
-      sources += [
-        "audio_device/android/audio_device_unittest.cc",
-        "audio_device/android/audio_manager_unittest.cc",
-        "audio_device/android/ensure_initialized.cc",
-        "audio_device/android/ensure_initialized.h",
-      ]
       shard_timeout = 900
     }
     if (is_ios) {
       info_plist = "//webrtc/test/ios/Info.plist"
       deps += [ ":modules_unittests_bundle_data" ]
-      configs += [
-        "..:common_objc",
-        "//build/config/compiler:enable_arc",
-      ]
-
-      sources += [ "audio_device/ios/objc/RTCAudioSessionTest.mm" ]
-
-      if (target_cpu != "x64") {
-        sources += [ "audio_device/ios/audio_device_unittest_ios.cc" ]
-      }
-
+      configs += [ "..:common_objc" ]
       ldflags = [ "-ObjC" ]
     }
   }
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index 3b852d3..2cfd159 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -1457,8 +1457,6 @@
       "neteq/tools/input_audio_file.cc",
       "neteq/tools/input_audio_file.h",
       "neteq/tools/neteq_input.h",
-      "neteq/tools/neteq_packet_source_input.cc",
-      "neteq/tools/neteq_packet_source_input.h",
       "neteq/tools/neteq_replacement_input.cc",
       "neteq/tools/neteq_replacement_input.h",
       "neteq/tools/output_audio_file.h",
@@ -1498,6 +1496,10 @@
     ]
 
     if (rtc_enable_protobuf) {
+      sources += [
+        "neteq/tools/neteq_packet_source_input.cc",
+        "neteq/tools/neteq_packet_source_input.h",
+      ]
       deps += [ ":rtc_event_log_source" ]
     }
   }
@@ -1918,4 +1920,137 @@
       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
     }
   }
+
+  rtc_source_set("audio_coding_unittests") {
+    testonly = true
+
+    sources = [
+      "acm2/acm_receiver_unittest.cc",
+      "acm2/audio_coding_module_unittest.cc",
+      "acm2/call_statistics_unittest.cc",
+      "acm2/codec_manager_unittest.cc",
+      "acm2/rent_a_codec_unittest.cc",
+      "audio_network_adaptor/audio_network_adaptor_impl_unittest.cc",
+      "audio_network_adaptor/bitrate_controller_unittest.cc",
+      "audio_network_adaptor/channel_controller_unittest.cc",
+      "audio_network_adaptor/controller_manager_unittest.cc",
+      "audio_network_adaptor/dtx_controller_unittest.cc",
+      "audio_network_adaptor/fec_controller_unittest.cc",
+      "audio_network_adaptor/frame_length_controller_unittest.cc",
+      "audio_network_adaptor/mock/mock_controller.h",
+      "audio_network_adaptor/mock/mock_controller_manager.h",
+      "codecs/audio_decoder_factory_unittest.cc",
+      "codecs/cng/audio_encoder_cng_unittest.cc",
+      "codecs/cng/cng_unittest.cc",
+      "codecs/ilbc/ilbc_unittest.cc",
+      "codecs/isac/fix/source/filterbanks_unittest.cc",
+      "codecs/isac/fix/source/filters_unittest.cc",
+      "codecs/isac/fix/source/lpc_masking_model_unittest.cc",
+      "codecs/isac/fix/source/transform_unittest.cc",
+      "codecs/isac/main/source/audio_encoder_isac_unittest.cc",
+      "codecs/isac/main/source/isac_unittest.cc",
+      "codecs/isac/unittest.cc",
+      "codecs/legacy_encoded_audio_frame_unittest.cc",
+      "codecs/mock/mock_audio_encoder.cc",
+      "codecs/opus/audio_encoder_opus_unittest.cc",
+      "codecs/opus/opus_unittest.cc",
+      "codecs/red/audio_encoder_copy_red_unittest.cc",
+      "neteq/audio_multi_vector_unittest.cc",
+      "neteq/audio_vector_unittest.cc",
+      "neteq/background_noise_unittest.cc",
+      "neteq/buffer_level_filter_unittest.cc",
+      "neteq/comfort_noise_unittest.cc",
+      "neteq/decision_logic_unittest.cc",
+      "neteq/decoder_database_unittest.cc",
+      "neteq/delay_manager_unittest.cc",
+      "neteq/delay_peak_detector_unittest.cc",
+      "neteq/dsp_helper_unittest.cc",
+      "neteq/dtmf_buffer_unittest.cc",
+      "neteq/dtmf_tone_generator_unittest.cc",
+      "neteq/expand_unittest.cc",
+      "neteq/merge_unittest.cc",
+      "neteq/mock/mock_audio_decoder.h",
+      "neteq/mock/mock_buffer_level_filter.h",
+      "neteq/mock/mock_decoder_database.h",
+      "neteq/mock/mock_delay_manager.h",
+      "neteq/mock/mock_delay_peak_detector.h",
+      "neteq/mock/mock_dtmf_buffer.h",
+      "neteq/mock/mock_dtmf_tone_generator.h",
+      "neteq/mock/mock_expand.h",
+      "neteq/mock/mock_external_decoder_pcm16b.h",
+      "neteq/mock/mock_packet_buffer.h",
+      "neteq/mock/mock_red_payload_splitter.h",
+      "neteq/nack_tracker_unittest.cc",
+      "neteq/neteq_external_decoder_unittest.cc",
+      "neteq/neteq_impl_unittest.cc",
+      "neteq/neteq_network_stats_unittest.cc",
+      "neteq/neteq_stereo_unittest.cc",
+      "neteq/neteq_unittest.cc",
+      "neteq/normal_unittest.cc",
+      "neteq/packet_buffer_unittest.cc",
+      "neteq/post_decode_vad_unittest.cc",
+      "neteq/random_vector_unittest.cc",
+      "neteq/red_payload_splitter_unittest.cc",
+      "neteq/sync_buffer_unittest.cc",
+      "neteq/tick_timer_unittest.cc",
+      "neteq/time_stretch_unittest.cc",
+      "neteq/timestamp_scaler_unittest.cc",
+      "neteq/tools/input_audio_file_unittest.cc",
+      "neteq/tools/packet_unittest.cc",
+    ]
+
+    deps = [
+      ":acm_receive_test",
+      ":acm_send_test",
+      ":audio_coding",
+      ":audio_decoder_interface",
+      ":audio_encoder_interface",
+      ":audio_format_conversion",
+      ":audio_network_adaptor",
+      ":builtin_audio_decoder_factory",
+      ":cng",
+      ":g711",
+      ":ilbc",
+      ":isac_c",
+      ":isac_fix",
+      ":neteq",
+      ":neteq_test_support",
+      ":neteq_unittest_tools",
+      ":pcm16b",
+      ":red",
+      ":rent_a_codec",
+      ":webrtc_opus",
+      "../..:webrtc_common",
+      "../../base:rtc_base",
+      "../../base:rtc_base_approved",
+      "../../base:rtc_base_tests_utils",
+      "../../common_audio",
+      "../../system_wrappers:system_wrappers",
+      "../../test:field_trial",
+      "../../test:rtp_test_utils",
+      "../../test:test_common",
+      "../../test:test_support",
+      "//testing/gmock",
+      "//testing/gtest",
+      "//third_party/gflags",
+    ]
+
+    defines = audio_coding_defines
+
+    if (rtc_enable_protobuf) {
+      defines += [
+        "WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP",
+        "WEBRTC_NETEQ_UNITTEST_BITEXACT",
+      ]
+      deps += [
+        ":ana_config_proto",
+        ":neteq_unittest_proto",
+      ]
+    }
+
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
 }
diff --git a/webrtc/modules/audio_conference_mixer/BUILD.gn b/webrtc/modules/audio_conference_mixer/BUILD.gn
index 2792a65..3c6f3d3 100644
--- a/webrtc/modules/audio_conference_mixer/BUILD.gn
+++ b/webrtc/modules/audio_conference_mixer/BUILD.gn
@@ -46,3 +46,21 @@
     "../audio_processing",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("audio_conference_mixer_unittests") {
+    testonly = true
+    sources = [
+      "test/audio_conference_mixer_unittest.cc",
+    ]
+    deps = [
+      ":audio_conference_mixer",
+      "../../test:test_support",
+      "//testing/gmock",
+    ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index ab9406e..e2b510c 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -265,6 +265,50 @@
 }
 
 if (rtc_include_tests) {
+  rtc_source_set("audio_device_unittests") {
+    testonly = true
+    sources = [
+      "fine_audio_buffer_unittest.cc",
+    ]
+    deps = [
+      ":audio_device",
+      ":mock_audio_device",
+      "../../base:rtc_base_approved",
+      "../../system_wrappers:system_wrappers",
+      "../../test:test_support",
+      "../utility:utility",
+      "//testing/gmock",
+    ]
+    if (is_android) {
+      # Need to disable error due to the line in
+      # base/android/jni_android.h triggering it:
+      # const BASE_EXPORT jobject GetApplicationContext()
+      # error: type qualifiers ignored on function return type
+      cflags = [ "-Wno-ignored-qualifiers" ]
+      sources += [
+        "android/audio_device_unittest.cc",
+        "android/audio_manager_unittest.cc",
+        "android/ensure_initialized.cc",
+        "android/ensure_initialized.h",
+      ]
+      deps += [
+        "../../../base",
+        "//webrtc/sdk/android:libjingle_peerconnection_java",
+      ]
+    }
+    if (is_ios) {
+      sources += [ "ios/objc/RTCAudioSessionTest.mm" ]
+      configs += [ "//build/config/compiler:enable_arc" ]
+      if (target_cpu != "x64") {
+        sources += [ "ios/audio_device_unittest_ios.cc" ]
+      }
+    }
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+
   rtc_source_set("mock_audio_device") {
     testonly = true
     sources = [
@@ -277,28 +321,28 @@
     ]
     all_dependent_configs = [ ":mock_audio_device_config" ]
   }
-}
 
-# These tests do not work on ios, see
-# https://bugs.chromium.org/p/webrtc/issues/detail?id=4755
-if (rtc_include_tests && !is_ios) {
-  rtc_executable("audio_device_tests") {
-    testonly = true
-    sources = [
-      "test/audio_device_test_api.cc",
-      "test/audio_device_test_defines.h",
-    ]
-    deps = [
-      ":audio_device",
-      "../..:webrtc_common",
-      "../../system_wrappers",
-      "../../test:test_main",
-      "../../test:test_support",
-      "../rtp_rtcp",
-      "../utility",
-      "//testing/gtest",
-    ]
-    public_configs = [ ":audio_device_config" ]
+  if (!is_ios) {
+    # These tests do not work on ios, see
+    # https://bugs.chromium.org/p/webrtc/issues/detail?id=4755
+    rtc_executable("audio_device_tests") {
+      testonly = true
+      sources = [
+        "test/audio_device_test_api.cc",
+        "test/audio_device_test_defines.h",
+      ]
+      deps = [
+        ":audio_device",
+        "../..:webrtc_common",
+        "../../system_wrappers",
+        "../../test:test_main",
+        "../../test:test_support",
+        "../rtp_rtcp",
+        "../utility",
+        "//testing/gtest",
+      ]
+      public_configs = [ ":audio_device_config" ]
+    }
   }
 }
 
diff --git a/webrtc/modules/audio_mixer/BUILD.gn b/webrtc/modules/audio_mixer/BUILD.gn
index b4c900d..25c782b 100644
--- a/webrtc/modules/audio_mixer/BUILD.gn
+++ b/webrtc/modules/audio_mixer/BUILD.gn
@@ -58,3 +58,33 @@
     "../../base:rtc_base_approved",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("audio_mixer_unittests") {
+    # When enabled, fails with error audio_mixer_impl_unittest.cc includes a
+    # private header. Fie default_output_rate_calculator.h is private to the
+    # target :audio_mixer_impl
+    check_includes = false
+    testonly = true
+    sources = [
+      "audio_frame_manipulator_unittest.cc",
+      "audio_mixer_impl_unittest.cc",
+    ]
+    deps = [
+      ":audio_frame_manipulator",
+      ":audio_mixer_impl",
+      "../../api:audio_mixer_api",
+      "../../base:rtc_base",
+      "../../base:rtc_base_approved",
+      "../../test:test_support",
+      "//testing/gmock",
+    ]
+
+    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
+    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/audio_processing/BUILD.gn b/webrtc/modules/audio_processing/BUILD.gn
index 4178a08..d787997 100644
--- a/webrtc/modules/audio_processing/BUILD.gn
+++ b/webrtc/modules/audio_processing/BUILD.gn
@@ -415,6 +415,130 @@
     }
   }
 
+  rtc_source_set("audio_processing_unittests") {
+    testonly = true
+    sources = [
+      "aec/echo_cancellation_unittest.cc",
+      "aec/system_delay_unittest.cc",
+      "agc/agc_manager_direct_unittest.cc",
+      "agc/loudness_histogram_unittest.cc",
+      "agc/mock_agc.h",
+      "audio_buffer_unittest.cc",
+      "beamformer/array_util_unittest.cc",
+      "beamformer/complex_matrix_unittest.cc",
+      "beamformer/covariance_matrix_generator_unittest.cc",
+      "beamformer/matrix_unittest.cc",
+      "beamformer/mock_nonlinear_beamformer.h",
+      "beamformer/nonlinear_beamformer_unittest.cc",
+      "config_unittest.cc",
+      "echo_cancellation_impl_unittest.cc",
+      "splitting_filter_unittest.cc",
+      "transient/dyadic_decimator_unittest.cc",
+      "transient/file_utils.cc",
+      "transient/file_utils.h",
+      "transient/file_utils_unittest.cc",
+      "transient/moving_moments_unittest.cc",
+      "transient/transient_detector_unittest.cc",
+      "transient/transient_suppressor_unittest.cc",
+      "transient/wpd_node_unittest.cc",
+      "transient/wpd_tree_unittest.cc",
+      "utility/block_mean_calculator_unittest.cc",
+      "utility/delay_estimator_unittest.cc",
+      "vad/gmm_unittest.cc",
+      "vad/pitch_based_vad_unittest.cc",
+      "vad/pitch_internal_unittest.cc",
+      "vad/pole_zero_filter_unittest.cc",
+      "vad/standalone_vad_unittest.cc",
+      "vad/vad_audio_proc_unittest.cc",
+      "vad/vad_circular_buffer_unittest.cc",
+      "vad/voice_activity_detector_unittest.cc",
+    ]
+
+    deps = [
+      ":audio_processing",
+      ":audioproc_debug_proto",
+      ":audioproc_test_utils",
+      "../..:webrtc_common",
+      "../../base:gtest_prod",
+      "../../base:rtc_base",
+      "../../base:rtc_base_approved",
+      "../../common_audio:common_audio",
+      "../../system_wrappers:system_wrappers",
+      "../../test:test_support",
+      "../audio_coding:neteq_unittest_tools",
+      "//testing/gmock",
+      "//testing/gtest",
+    ]
+
+    defines = []
+
+    if (apm_debug_dump) {
+      defines += [ "WEBRTC_APM_DEBUG_DUMP=1" ]
+    } else {
+      defines += [ "WEBRTC_APM_DEBUG_DUMP=0" ]
+    }
+
+    if (rtc_enable_intelligibility_enhancer) {
+      defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=1" ]
+      sources += [
+        "intelligibility/intelligibility_enhancer_unittest.cc",
+        "intelligibility/intelligibility_utils_unittest.cc",
+      ]
+    } else {
+      defines += [ "WEBRTC_INTELLIGIBILITY_ENHANCER=0" ]
+    }
+
+    if (rtc_prefer_fixed_point) {
+      defines += [ "WEBRTC_AUDIOPROC_FIXED_PROFILE" ]
+    } else {
+      defines += [ "WEBRTC_AUDIOPROC_FLOAT_PROFILE" ]
+    }
+
+    if (rtc_enable_protobuf) {
+      defines += [ "WEBRTC_AUDIOPROC_DEBUG_DUMP" ]
+      deps += [
+        ":audioproc_protobuf_utils",
+        ":audioproc_unittest_proto",
+      ]
+      sources += [
+        "aec3/block_framer_unittest.cc",
+        "aec3/block_processor_unittest.cc",
+        "aec3/cascaded_biquad_filter_unittest.cc",
+        "aec3/echo_canceller3_unittest.cc",
+        "aec3/frame_blocker_unittest.cc",
+        "aec3/mock/mock_block_processor.h",
+        "audio_processing_impl_locking_unittest.cc",
+        "audio_processing_impl_unittest.cc",
+        "audio_processing_unittest.cc",
+        "echo_cancellation_bit_exact_unittest.cc",
+        "echo_control_mobile_unittest.cc",
+        "echo_detector/circular_buffer_unittest.cc",
+        "echo_detector/mean_variance_estimator_unittest.cc",
+        "echo_detector/moving_max_unittest.cc",
+        "echo_detector/normalized_covariance_estimator_unittest.cc",
+        "gain_control_unittest.cc",
+        "level_controller/level_controller_unittest.cc",
+        "level_estimator_unittest.cc",
+        "low_cut_filter_unittest.cc",
+        "noise_suppression_unittest.cc",
+        "residual_echo_detector_unittest.cc",
+        "rms_level_unittest.cc",
+        "test/bitexactness_tools.cc",
+        "test/bitexactness_tools.h",
+        "test/debug_dump_replayer.cc",
+        "test/debug_dump_replayer.h",
+        "test/debug_dump_test.cc",
+        "test/test_utils.h",
+        "voice_detection_unittest.cc",
+      ]
+    }
+
+    if ((!build_with_chromium || is_win) && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+
   rtc_source_set("audio_processing_perf_tests") {
     # Has problems with autogenerated targets on Android and iOS
     # Dependency chain (there may also be others):
diff --git a/webrtc/modules/bitrate_controller/BUILD.gn b/webrtc/modules/bitrate_controller/BUILD.gn
index 1bc8cc4..b2747db 100644
--- a/webrtc/modules/bitrate_controller/BUILD.gn
+++ b/webrtc/modules/bitrate_controller/BUILD.gn
@@ -42,3 +42,24 @@
     "../rtp_rtcp",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("bitrate_controller_unittests") {
+    testonly = true
+    sources = [
+      "bitrate_controller_unittest.cc",
+      "send_side_bandwidth_estimation_unittest.cc",
+    ]
+    deps = [
+      ":bitrate_controller",
+      "../../test:field_trial",
+      "../../test:test_support",
+      "../remote_bitrate_estimator:remote_bitrate_estimator",
+      "//testing/gmock",
+    ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/congestion_controller/BUILD.gn b/webrtc/modules/congestion_controller/BUILD.gn
index 16794a1..03e0d5c 100644
--- a/webrtc/modules/congestion_controller/BUILD.gn
+++ b/webrtc/modules/congestion_controller/BUILD.gn
@@ -55,3 +55,38 @@
     "../utility",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("congestion_controller_unittests") {
+    testonly = true
+    sources = [
+      "congestion_controller_unittest.cc",
+      "delay_based_bwe_unittest.cc",
+      "delay_based_bwe_unittest_helper.cc",
+      "delay_based_bwe_unittest_helper.h",
+      "median_slope_estimator_unittest.cc",
+      "probe_bitrate_estimator_unittest.cc",
+      "probe_controller_unittest.cc",
+      "probing_interval_estimator_unittest.cc",
+      "transport_feedback_adapter_unittest.cc",
+      "trendline_estimator_unittest.cc",
+    ]
+    deps = [
+      ":congestion_controller",
+      "../../base:rtc_base_approved",
+      "../../system_wrappers:system_wrappers",
+      "../../test:field_trial",
+      "../../test:test_support",
+      "../bitrate_controller:bitrate_controller",
+      "../pacing:pacing",
+      "../remote_bitrate_estimator:remote_bitrate_estimator",
+      "../remote_bitrate_estimator:remote_bitrate_estimator_unittests",
+      "../rtp_rtcp:rtp_rtcp",
+      "//testing/gmock",
+    ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/desktop_capture/BUILD.gn b/webrtc/modules/desktop_capture/BUILD.gn
index 4920611..67ec8ce 100644
--- a/webrtc/modules/desktop_capture/BUILD.gn
+++ b/webrtc/modules/desktop_capture/BUILD.gn
@@ -33,6 +33,51 @@
 }
 
 if (rtc_include_tests) {
+  rtc_source_set("desktop_capture_unittests") {
+    testonly = true
+    sources = []
+    deps = []
+    if (rtc_desktop_capture_supported || is_android) {
+      deps += [
+        ":desktop_capture",
+        ":primitives",
+        "../..:webrtc_common",
+        "../../base:rtc_base_approved",
+        "../../system_wrappers:system_wrappers",
+        "../../test:test_support",
+        "//testing/gmock",
+      ]
+      sources += [
+        "desktop_region_unittest.cc",
+        "differ_block_unittest.cc",
+      ]
+    }
+    if (rtc_desktop_capture_supported) {
+      sources += [
+        "desktop_and_cursor_composer_unittest.cc",
+        "desktop_capturer_differ_wrapper_unittest.cc",
+        "desktop_frame_rotation_unittest.cc",
+        "mouse_cursor_monitor_unittest.cc",
+        "rgba_color_unittest.cc",
+        "screen_capturer_helper_unittest.cc",
+        "screen_capturer_mac_unittest.cc",
+        "screen_capturer_unittest.cc",
+        "test_utils.cc",
+        "test_utils.h",
+        "test_utils_unittest.cc",
+        "win/cursor_unittest.cc",
+        "win/cursor_unittest_resources.h",
+        "win/cursor_unittest_resources.rc",
+        "window_capturer_unittest.cc",
+      ]
+      deps += [ ":desktop_capture_mock" ]
+    }
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+
   source_set("rgba_color") {
     testonly = true
 
diff --git a/webrtc/modules/media_file/BUILD.gn b/webrtc/modules/media_file/BUILD.gn
index f4e93c9..8003cd8 100644
--- a/webrtc/modules/media_file/BUILD.gn
+++ b/webrtc/modules/media_file/BUILD.gn
@@ -39,3 +39,27 @@
     "../../system_wrappers",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("media_file_unittests") {
+    testonly = true
+    sources = [
+      "media_file_unittest.cc",
+    ]
+    deps = [
+      ":media_file",
+      "../../system_wrappers:system_wrappers",
+      "../../test:test_support",
+    ]
+    if (is_win) {
+      cflags = [
+        # TODO(kjellander): bugs.webrtc.org/261: Fix this warning.
+        "/wd4373",  # virtual function override.
+      ]
+    }
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/pacing/BUILD.gn b/webrtc/modules/pacing/BUILD.gn
index 09b856b..0a357c0 100644
--- a/webrtc/modules/pacing/BUILD.gn
+++ b/webrtc/modules/pacing/BUILD.gn
@@ -32,3 +32,31 @@
     "../rtp_rtcp",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("pacing_unittests") {
+    testonly = true
+    sources = [
+      "alr_detector_unittest.cc",
+      "bitrate_prober_unittest.cc",
+      "paced_sender_unittest.cc",
+      "packet_router_unittest.cc",
+    ]
+    deps = [
+      ":pacing",
+      "../../base:rtc_base_approved",
+      "../../system_wrappers:system_wrappers",
+      "../../test:test_support",
+      "../rtp_rtcp",
+      "../rtp_rtcp:rtp_rtcp_unittests",
+      "//testing/gmock",
+    ]
+
+    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
+    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/modules/remote_bitrate_estimator/BUILD.gn b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
index 7ddb0bb..81028f6 100644
--- a/webrtc/modules/remote_bitrate_estimator/BUILD.gn
+++ b/webrtc/modules/remote_bitrate_estimator/BUILD.gn
@@ -141,4 +141,48 @@
       suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
     }
   }
+
+  rtc_source_set("remote_bitrate_estimator_unittests") {
+    testonly = true
+    sources = [
+      "aimd_rate_control_unittest.cc",
+      "include/mock/mock_remote_bitrate_estimator.h",
+      "include/mock/mock_remote_bitrate_observer.h",
+      "inter_arrival_unittest.cc",
+      "overuse_detector_unittest.cc",
+      "remote_bitrate_estimator_abs_send_time_unittest.cc",
+      "remote_bitrate_estimator_single_stream_unittest.cc",
+      "remote_bitrate_estimator_unittest_helper.cc",
+      "remote_bitrate_estimator_unittest_helper.h",
+      "remote_estimator_proxy_unittest.cc",
+      "send_time_history_unittest.cc",
+      "test/bwe_test_framework_unittest.cc",
+      "test/bwe_unittest.cc",
+      "test/estimators/nada_unittest.cc",
+      "test/metric_recorder_unittest.cc",
+    ]
+    deps = [
+      ":bwe_simulator_lib",
+      ":remote_bitrate_estimator",
+      "../..:webrtc_common",
+      "../../base:rtc_base",
+      "../../base:rtc_base_approved",
+      "../../system_wrappers:system_wrappers",
+      "../../test:field_trial",
+      "../../test:test_support",
+      "../pacing:pacing",
+      "../rtp_rtcp:rtp_rtcp",
+      "//testing/gmock",
+    ]
+    if (is_win) {
+      cflags = [
+        # TODO(kjellander): bugs.webrtc.org/261: Fix this warning.
+        "/wd4373",  # virtual function override.
+      ]
+    }
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
 }
diff --git a/webrtc/modules/rtp_rtcp/BUILD.gn b/webrtc/modules/rtp_rtcp/BUILD.gn
index e806f07..9b23621 100644
--- a/webrtc/modules/rtp_rtcp/BUILD.gn
+++ b/webrtc/modules/rtp_rtcp/BUILD.gn
@@ -210,4 +210,93 @@
       "//webrtc/test:test_main",
     ]
   }  # test_packet_masks_metrics
+
+  rtc_source_set("rtp_rtcp_unittests") {
+    testonly = true
+    sources = [
+      "mocks/mock_rtp_rtcp.h",
+      "source/byte_io_unittest.cc",
+      "source/fec_test_helper.cc",
+      "source/fec_test_helper.h",
+      "source/flexfec_header_reader_writer_unittest.cc",
+      "source/flexfec_receiver_unittest.cc",
+      "source/flexfec_sender_unittest.cc",
+      "source/nack_rtx_unittest.cc",
+      "source/packet_loss_stats_unittest.cc",
+      "source/playout_delay_oracle_unittest.cc",
+      "source/receive_statistics_unittest.cc",
+      "source/remote_ntp_time_estimator_unittest.cc",
+      "source/rtcp_packet/app_unittest.cc",
+      "source/rtcp_packet/bye_unittest.cc",
+      "source/rtcp_packet/common_header_unittest.cc",
+      "source/rtcp_packet/compound_packet_unittest.cc",
+      "source/rtcp_packet/dlrr_unittest.cc",
+      "source/rtcp_packet/extended_jitter_report_unittest.cc",
+      "source/rtcp_packet/extended_reports_unittest.cc",
+      "source/rtcp_packet/fir_unittest.cc",
+      "source/rtcp_packet/nack_unittest.cc",
+      "source/rtcp_packet/pli_unittest.cc",
+      "source/rtcp_packet/rapid_resync_request_unittest.cc",
+      "source/rtcp_packet/receiver_report_unittest.cc",
+      "source/rtcp_packet/remb_unittest.cc",
+      "source/rtcp_packet/report_block_unittest.cc",
+      "source/rtcp_packet/rpsi_unittest.cc",
+      "source/rtcp_packet/rrtr_unittest.cc",
+      "source/rtcp_packet/sdes_unittest.cc",
+      "source/rtcp_packet/sender_report_unittest.cc",
+      "source/rtcp_packet/sli_unittest.cc",
+      "source/rtcp_packet/target_bitrate_unittest.cc",
+      "source/rtcp_packet/tmmbn_unittest.cc",
+      "source/rtcp_packet/tmmbr_unittest.cc",
+      "source/rtcp_packet/transport_feedback_unittest.cc",
+      "source/rtcp_packet/voip_metric_unittest.cc",
+      "source/rtcp_packet_unittest.cc",
+      "source/rtcp_receiver_unittest.cc",
+      "source/rtcp_sender_unittest.cc",
+      "source/rtcp_utility_unittest.cc",
+      "source/rtp_fec_unittest.cc",
+      "source/rtp_format_h264_unittest.cc",
+      "source/rtp_format_vp8_test_helper.cc",
+      "source/rtp_format_vp8_test_helper.h",
+      "source/rtp_format_vp8_unittest.cc",
+      "source/rtp_format_vp9_unittest.cc",
+      "source/rtp_header_extension_unittest.cc",
+      "source/rtp_packet_history_unittest.cc",
+      "source/rtp_packet_unittest.cc",
+      "source/rtp_payload_registry_unittest.cc",
+      "source/rtp_rtcp_impl_unittest.cc",
+      "source/rtp_sender_unittest.cc",
+      "source/rtp_utility_unittest.cc",
+      "source/time_util_unittest.cc",
+      "source/ulpfec_generator_unittest.cc",
+      "source/ulpfec_header_reader_writer_unittest.cc",
+      "source/ulpfec_receiver_unittest.cc",
+      "source/vp8_partition_aggregator_unittest.cc",
+      "test/testAPI/test_api.cc",
+      "test/testAPI/test_api.h",
+      "test/testAPI/test_api_audio.cc",
+      "test/testAPI/test_api_rtcp.cc",
+      "test/testAPI/test_api_video.cc",
+    ]
+    deps = [
+      ":rtp_rtcp",
+      "../..:webrtc_common",
+      "../../api:transport_api",
+      "../../base:rtc_base_approved",
+      "../../common_video:common_video",
+      "../../system_wrappers:system_wrappers",
+      "../../test:field_trial",
+      "../../test:rtp_test_utils",
+      "../../test:test_common",
+      "../../test:test_support",
+      "//testing/gmock",
+    ]
+
+    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
+    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
 }
diff --git a/webrtc/modules/utility/BUILD.gn b/webrtc/modules/utility/BUILD.gn
index 48cbf79..5b6a232 100644
--- a/webrtc/modules/utility/BUILD.gn
+++ b/webrtc/modules/utility/BUILD.gn
@@ -42,3 +42,18 @@
     "../media_file",
   ]
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("utility_unittests") {
+    testonly = true
+    sources = [
+      "source/process_thread_impl_unittest.cc",
+    ]
+    deps = [
+      ":utility",
+      "../../base:rtc_task_queue",
+      "../../test:test_support",
+      "//testing/gmock",
+    ]
+  }
+}
diff --git a/webrtc/modules/video_coding/BUILD.gn b/webrtc/modules/video_coding/BUILD.gn
index f70a314..f84936a 100644
--- a/webrtc/modules/video_coding/BUILD.gn
+++ b/webrtc/modules/video_coding/BUILD.gn
@@ -310,4 +310,88 @@
       "../../test:test_support",
     ]
   }
+  rtc_source_set("video_coding_unittests") {
+    testonly = true
+    sources = [
+      "codecs/test/packet_manipulator_unittest.cc",
+      "codecs/test/stats_unittest.cc",
+      "codecs/test/videoprocessor_unittest.cc",
+      "codecs/vp8/default_temporal_layers_unittest.cc",
+      "codecs/vp8/reference_picture_selection_unittest.cc",
+      "codecs/vp8/screenshare_layers_unittest.cc",
+      "codecs/vp8/simulcast_encoder_adapter_unittest.cc",
+      "codecs/vp8/simulcast_unittest.cc",
+      "codecs/vp8/simulcast_unittest.h",
+      "decoding_state_unittest.cc",
+      "frame_buffer2_unittest.cc",
+      "h264_sprop_parameter_sets_unittest.cc",
+      "h264_sps_pps_tracker_unittest.cc",
+      "histogram_unittest.cc",
+      "include/mock/mock_vcm_callbacks.h",
+      "jitter_buffer_unittest.cc",
+      "jitter_estimator_tests.cc",
+      "nack_module_unittest.cc",
+      "protection_bitrate_calculator_unittest.cc",
+      "receiver_unittest.cc",
+      "rtp_frame_reference_finder_unittest.cc",
+      "sequence_number_util_unittest.cc",
+      "session_info_unittest.cc",
+      "test/stream_generator.cc",
+      "test/stream_generator.h",
+      "timing_unittest.cc",
+      "utility/default_video_bitrate_allocator_unittest.cc",
+      "utility/frame_dropper_unittest.cc",
+      "utility/ivf_file_writer_unittest.cc",
+      "utility/moving_average_unittest.cc",
+      "utility/quality_scaler_unittest.cc",
+      "utility/simulcast_rate_allocator_unittest.cc",
+      "video_coding_robustness_unittest.cc",
+      "video_packet_buffer_unittest.cc",
+      "video_receiver_unittest.cc",
+      "video_sender_unittest.cc",
+    ]
+    if (rtc_libvpx_build_vp9) {
+      sources += [ "codecs/vp9/vp9_screenshare_layers_unittest.cc" ]
+    }
+    if (rtc_use_h264) {
+      sources += [ "codecs/h264/h264_encoder_impl_unittest.cc" ]
+    }
+    deps = [
+      ":video_codecs_test_framework",
+      ":video_coding",
+      ":video_coding_utility",
+      ":webrtc_h264",
+      ":webrtc_vp8",
+      ":webrtc_vp9",
+      "../..:webrtc_common",
+      "../../api:video_frame_api",
+      "../../base:rtc_base",
+      "../../base:rtc_base_approved",
+      "../../base:rtc_task_queue",
+      "../../common_video:common_video",
+      "../../system_wrappers:metrics_default",
+      "../../system_wrappers:system_wrappers",
+      "../../test:field_trial",
+      "../../test:test_support",
+      "../../test:video_test_common",
+      "../rtp_rtcp:rtp_rtcp",
+      "//testing/gmock",
+    ]
+    if (rtc_build_libvpx) {
+      deps += [ rtc_libvpx_dir ]
+    }
+    if (is_win) {
+      cflags = [
+        # TODO(kjellander): bugs.webrtc.org/261: Fix this warning.
+        "/wd4373",  # virtual function override.
+      ]
+    }
+
+    # TODO(jschuh): bugs.webrtc.org/1348: fix this warning.
+    configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
 }
diff --git a/webrtc/modules/video_processing/BUILD.gn b/webrtc/modules/video_processing/BUILD.gn
index 5ab3f45..5da0ae8 100644
--- a/webrtc/modules/video_processing/BUILD.gn
+++ b/webrtc/modules/video_processing/BUILD.gn
@@ -89,3 +89,22 @@
     }
   }
 }
+
+if (rtc_include_tests) {
+  rtc_source_set("video_processing_unittests") {
+    testonly = true
+    sources = [
+      "test/denoiser_test.cc",
+    ]
+    deps = [
+      ":video_processing",
+      "../../common_video:common_video",
+      "../../test:test_support",
+      "../../test:video_test_common",
+    ]
+    if (!build_with_chromium && is_clang) {
+      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
+      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
+    }
+  }
+}
diff --git a/webrtc/test/BUILD.gn b/webrtc/test/BUILD.gn
index e8ad02d..5ad85fc 100644
--- a/webrtc/test/BUILD.gn
+++ b/webrtc/test/BUILD.gn
@@ -140,6 +140,7 @@
     "testsupport/perf_test.h",
     "testsupport/trace_to_stderr.cc",
     "testsupport/trace_to_stderr.h",
+    "testsupport/unittest_utils.h",
   ]
 
   deps = [
@@ -221,7 +222,6 @@
     "testsupport/metrics/video_metrics_unittest.cc",
     "testsupport/packet_reader_unittest.cc",
     "testsupport/perf_test_unittest.cc",
-    "testsupport/unittest_utils.h",
   ]
 
   # TODO(jschuh): Bug 1348: fix this warning.
@@ -333,6 +333,7 @@
     "../modules/audio_mixer:audio_mixer_impl",
     "../modules/audio_processing",
     "../modules/media_file",
+    "../modules/video_capture:video_capture",
     "../modules/video_capture:video_capture_module",
     "../video",
     "//testing/gmock",