# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/chromecast_build.gni")
import("//build/config/features.gni")
import("//build/config/jumbo.gni")
import("//build/config/ui.gni")
import("//build/split_static_library.gni")
import("//content/common/features.gni")
import("//media/media_options.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
import("//third_party/webrtc/webrtc.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")

if (is_component_build) {
  link_target_type = "jumbo_source_set"
} else {
  link_target_type = "jumbo_split_static_library"
}

target(link_target_type, "renderer") {
  # These files a big and can quickly triggers OOO conditions with jumbo
  jumbo_file_merge_limit = 4

  # Only the public target should depend on this. All other targets (even
  # internal content ones) should depend on the public one.
  visibility = [
    ":for_content_tests",
    "//content/app:*",
    "//content/public/renderer:renderer_sources",
    "//content/renderer:audio_decoder_fuzzer",
  ]

  sources = [
    "accessibility/aom_content_ax_tree.cc",
    "accessibility/aom_content_ax_tree.h",
    "accessibility/blink_ax_enum_conversion.cc",
    "accessibility/blink_ax_enum_conversion.h",
    "accessibility/blink_ax_tree_source.cc",
    "accessibility/blink_ax_tree_source.h",
    "accessibility/render_accessibility_impl.cc",
    "accessibility/render_accessibility_impl.h",
    "android/disambiguation_popup_helper.cc",
    "android/disambiguation_popup_helper.h",
    "android/renderer_date_time_picker.cc",
    "android/renderer_date_time_picker.h",
    "android/synchronous_compositor_proxy.cc",
    "android/synchronous_compositor_proxy.h",
    "android/synchronous_compositor_registry.h",
    "android/synchronous_layer_tree_frame_sink.cc",
    "android/synchronous_layer_tree_frame_sink.h",
    "appcache/appcache_backend_proxy.cc",
    "appcache/appcache_backend_proxy.h",
    "appcache/appcache_dispatcher.cc",
    "appcache/appcache_dispatcher.h",
    "appcache/appcache_frontend_impl.cc",
    "appcache/appcache_frontend_impl.h",
    "appcache/web_application_cache_host_impl.cc",
    "appcache/web_application_cache_host_impl.h",
    "blob_storage/webblobregistry_impl.cc",
    "blob_storage/webblobregistry_impl.h",
    "browser_plugin/browser_plugin.cc",
    "browser_plugin/browser_plugin.h",
    "browser_plugin/browser_plugin_manager.cc",
    "browser_plugin/browser_plugin_manager.h",
    "categorized_worker_pool.cc",
    "categorized_worker_pool.h",
    "child_frame_compositing_helper.cc",
    "child_frame_compositing_helper.h",
    "child_frame_compositor.h",
    "content_security_policy_util.cc",
    "content_security_policy_util.h",
    "context_menu_params_builder.cc",
    "context_menu_params_builder.h",
    "crash_helpers.cc",
    "crash_helpers.h",
    "cursor_utils.cc",
    "cursor_utils.h",
    "devtools/render_widget_screen_metrics_emulator.cc",
    "devtools/render_widget_screen_metrics_emulator.h",
    "devtools/render_widget_screen_metrics_emulator_delegate.h",
    "dom_automation_controller.cc",
    "dom_automation_controller.h",
    "dom_storage/dom_storage_cached_area.cc",
    "dom_storage/dom_storage_cached_area.h",
    "dom_storage/dom_storage_dispatcher.cc",
    "dom_storage/dom_storage_dispatcher.h",
    "dom_storage/dom_storage_proxy.h",
    "dom_storage/local_storage_area.cc",
    "dom_storage/local_storage_area.h",
    "dom_storage/local_storage_cached_area.cc",
    "dom_storage/local_storage_cached_area.h",
    "dom_storage/local_storage_cached_areas.cc",
    "dom_storage/local_storage_cached_areas.h",
    "dom_storage/local_storage_namespace.cc",
    "dom_storage/local_storage_namespace.h",
    "dom_storage/session_web_storage_namespace_impl.cc",
    "dom_storage/session_web_storage_namespace_impl.h",
    "dom_storage/webstoragearea_impl.cc",
    "dom_storage/webstoragearea_impl.h",
    "dom_storage/webstoragenamespace_impl.cc",
    "dom_storage/webstoragenamespace_impl.h",
    "drop_data_builder.cc",
    "drop_data_builder.h",
    "effective_connection_type_helper.cc",
    "effective_connection_type_helper.h",
    "fetchers/associated_resource_fetcher_impl.cc",
    "fetchers/associated_resource_fetcher_impl.h",
    "fetchers/manifest_fetcher.cc",
    "fetchers/manifest_fetcher.h",
    "fetchers/multi_resolution_image_resource_fetcher.cc",
    "fetchers/multi_resolution_image_resource_fetcher.h",
    "fetchers/resource_fetcher_impl.cc",
    "fetchers/resource_fetcher_impl.h",
    "file_info_util.cc",
    "file_info_util.h",
    "fileapi/file_system_dispatcher.cc",
    "fileapi/file_system_dispatcher.h",
    "fileapi/webfilesystem_impl.cc",
    "fileapi/webfilesystem_impl.h",
    "fileapi/webfilewriter_base.cc",
    "fileapi/webfilewriter_base.h",
    "fileapi/webfilewriter_impl.cc",
    "fileapi/webfilewriter_impl.h",
    "frame_blame_context.cc",
    "frame_blame_context.h",
    "frame_owner_properties.cc",
    "frame_owner_properties.h",
    "gpu/actions_parser.cc",
    "gpu/actions_parser.h",
    "gpu/compositor_dependencies.h",
    "gpu/frame_swap_message_queue.cc",
    "gpu/frame_swap_message_queue.h",
    "gpu/gpu_benchmarking_extension.cc",
    "gpu/gpu_benchmarking_extension.h",
    "gpu/layer_tree_view.cc",
    "gpu/layer_tree_view.h",
    "gpu/layer_tree_view_delegate.h",
    "gpu/queue_message_swap_promise.cc",
    "gpu/queue_message_swap_promise.h",
    "gpu/stream_texture_host_android.cc",
    "gpu/stream_texture_host_android.h",
    "history_entry.cc",
    "history_entry.h",
    "history_serialization.cc",
    "history_serialization.h",
    "idle_user_detector.cc",
    "idle_user_detector.h",
    "image_downloader/image_downloader_base.cc",
    "image_downloader/image_downloader_base.h",
    "image_downloader/image_downloader_impl.cc",
    "image_downloader/image_downloader_impl.h",
    "image_downloader/single_image_downloader.cc",
    "image_downloader/single_image_downloader.h",
    "ime_event_guard.cc",
    "ime_event_guard.h",
    "in_process_renderer_thread.cc",
    "in_process_renderer_thread.h",
    "indexed_db/indexed_db_callbacks_impl.cc",
    "indexed_db/indexed_db_callbacks_impl.h",
    "indexed_db/indexed_db_database_callbacks_impl.cc",
    "indexed_db/indexed_db_database_callbacks_impl.h",
    "indexed_db/indexed_db_dispatcher.cc",
    "indexed_db/indexed_db_dispatcher.h",
    "indexed_db/indexed_db_key_builders.cc",
    "indexed_db/indexed_db_key_builders.h",
    "indexed_db/webidbcursor_impl.cc",
    "indexed_db/webidbcursor_impl.h",
    "indexed_db/webidbdatabase_impl.cc",
    "indexed_db/webidbdatabase_impl.h",
    "indexed_db/webidbfactory_impl.cc",
    "indexed_db/webidbfactory_impl.h",
    "input/frame_input_handler_impl.cc",
    "input/frame_input_handler_impl.h",
    "input/input_event_prediction.cc",
    "input/input_event_prediction.h",
    "input/input_target_client_impl.cc",
    "input/input_target_client_impl.h",
    "input/main_thread_event_queue.cc",
    "input/main_thread_event_queue.h",
    "input/main_thread_event_queue_task.h",
    "input/main_thread_event_queue_task_list.cc",
    "input/main_thread_event_queue_task_list.h",
    "input/render_widget_input_handler.cc",
    "input/render_widget_input_handler.h",
    "input/render_widget_input_handler_delegate.h",
    "input/scoped_web_input_event_with_latency_info.cc",
    "input/scoped_web_input_event_with_latency_info.h",
    "input/widget_input_handler_impl.cc",
    "input/widget_input_handler_impl.h",
    "input/widget_input_handler_manager.cc",
    "input/widget_input_handler_manager.h",
    "installedapp/related_apps_fetcher.cc",
    "installedapp/related_apps_fetcher.h",
    "internal_document_state_data.cc",
    "internal_document_state_data.h",
    "java/gin_java_bridge_dispatcher.cc",
    "java/gin_java_bridge_dispatcher.h",
    "java/gin_java_bridge_object.cc",
    "java/gin_java_bridge_object.h",
    "java/gin_java_bridge_value_converter.cc",
    "java/gin_java_bridge_value_converter.h",
    "java/gin_java_function_invocation_helper.cc",
    "java/gin_java_function_invocation_helper.h",
    "layout_test_dependencies.cc",
    "layout_test_dependencies.h",
    "loader/child_url_loader_factory_bundle.cc",
    "loader/child_url_loader_factory_bundle.h",
    "loader/ftp_directory_listing_response_delegate.cc",
    "loader/ftp_directory_listing_response_delegate.h",
    "loader/navigation_response_override_parameters.cc",
    "loader/navigation_response_override_parameters.h",
    "loader/request_extra_data.cc",
    "loader/request_extra_data.h",
    "loader/resource_dispatcher.cc",
    "loader/resource_dispatcher.h",
    "loader/shared_memory_data_consumer_handle.cc",
    "loader/shared_memory_data_consumer_handle.h",
    "loader/sync_load_context.cc",
    "loader/sync_load_context.h",
    "loader/sync_load_response.cc",
    "loader/sync_load_response.h",
    "loader/tracked_child_url_loader_factory_bundle.cc",
    "loader/tracked_child_url_loader_factory_bundle.h",
    "loader/url_loader_client_impl.cc",
    "loader/url_loader_client_impl.h",
    "loader/url_response_body_consumer.cc",
    "loader/url_response_body_consumer.h",
    "loader/web_data_consumer_handle_impl.cc",
    "loader/web_data_consumer_handle_impl.h",
    "loader/web_url_loader_impl.cc",
    "loader/web_url_loader_impl.h",
    "loader/web_url_request_util.cc",
    "loader/web_url_request_util.h",
    "loader/web_worker_fetch_context_impl.cc",
    "loader/web_worker_fetch_context_impl.h",
    "loader/weburlresponse_extradata_impl.cc",
    "loader/weburlresponse_extradata_impl.h",
    "low_memory_mode_controller.cc",
    "low_memory_mode_controller.h",
    "manifest/manifest_change_notifier.cc",
    "manifest/manifest_change_notifier.h",
    "manifest/manifest_manager.cc",
    "manifest/manifest_manager.h",
    "manifest/manifest_parser.cc",
    "manifest/manifest_parser.h",
    "manifest/manifest_uma_util.cc",
    "manifest/manifest_uma_util.h",
    "media/android/media_player_renderer_client.cc",
    "media/android/media_player_renderer_client.h",
    "media/android/media_player_renderer_client_factory.cc",
    "media/android/media_player_renderer_client_factory.h",
    "media/android/renderer_media_player_manager.cc",
    "media/android/renderer_media_player_manager.h",
    "media/android/stream_texture_factory.cc",
    "media/android/stream_texture_factory.h",
    "media/android/stream_texture_wrapper_impl.cc",
    "media/android/stream_texture_wrapper_impl.h",
    "media/audio/audio_device_factory.cc",
    "media/audio/audio_device_factory.h",
    "media/audio/audio_input_ipc_factory.cc",
    "media/audio/audio_input_ipc_factory.h",
    "media/audio/audio_output_ipc_factory.cc",
    "media/audio/audio_output_ipc_factory.h",
    "media/audio/audio_renderer_mixer_manager.cc",
    "media/audio/audio_renderer_mixer_manager.h",
    "media/audio/audio_renderer_sink_cache.h",
    "media/audio/audio_renderer_sink_cache_impl.cc",
    "media/audio/audio_renderer_sink_cache_impl.h",
    "media/audio/mojo_audio_input_ipc.cc",
    "media/audio/mojo_audio_input_ipc.h",
    "media/audio/mojo_audio_output_ipc.cc",
    "media/audio/mojo_audio_output_ipc.h",
    "media/audio_decoder.cc",
    "media/audio_decoder.h",
    "media/gpu/gpu_video_accelerator_factories_impl.cc",
    "media/gpu/gpu_video_accelerator_factories_impl.h",
    "media/media_factory.cc",
    "media/media_factory.h",
    "media/media_permission_dispatcher.cc",
    "media/media_permission_dispatcher.h",
    "media/midi/midi_message_filter.cc",
    "media/midi/midi_message_filter.h",
    "media/midi/renderer_webmidiaccessor_impl.cc",
    "media/midi/renderer_webmidiaccessor_impl.h",
    "media/render_media_client.cc",
    "media/render_media_client.h",
    "media/render_media_log.cc",
    "media/render_media_log.h",
    "media/renderer_webaudiodevice_impl.cc",
    "media/renderer_webaudiodevice_impl.h",
    "media/renderer_webmediaplayer_delegate.cc",
    "media/renderer_webmediaplayer_delegate.h",
    "media/video_capture_impl.cc",
    "media/video_capture_impl.h",
    "media/video_capture_impl_manager.cc",
    "media/video_capture_impl_manager.h",
    "media/web_media_element_source_utils.cc",
    "media/web_media_element_source_utils.h",
    "menu_item_builder.cc",
    "menu_item_builder.h",
    "message_delivery_policy.h",
    "mojo/blink_interface_provider_impl.cc",
    "mojo/blink_interface_provider_impl.h",
    "mojo/blink_interface_registry_impl.cc",
    "mojo/blink_interface_registry_impl.h",
    "mouse_lock_dispatcher.cc",
    "mouse_lock_dispatcher.h",
    "navigation_client.cc",
    "navigation_client.h",
    "navigation_state_impl.cc",
    "navigation_state_impl.h",
    "net_info_helper.cc",
    "net_info_helper.h",
    "notifications/notification_data_conversions.cc",
    "notifications/notification_data_conversions.h",
    "pepper/fullscreen_container.h",
    "peripheral_content_heuristic.cc",
    "peripheral_content_heuristic.h",
    "push_messaging/push_messaging_client.cc",
    "push_messaging/push_messaging_client.h",
    "push_messaging/push_provider.cc",
    "push_messaging/push_provider.h",
    "render_frame_impl.cc",
    "render_frame_impl.h",
    "render_frame_metadata_observer_impl.cc",
    "render_frame_metadata_observer_impl.h",
    "render_frame_proxy.cc",
    "render_frame_proxy.h",
    "render_process.cc",
    "render_process.h",
    "render_process_impl.cc",
    "render_process_impl.h",
    "render_thread_impl.cc",
    "render_thread_impl.h",
    "render_view_impl.cc",
    "render_view_impl.h",
    "render_view_impl_android.cc",
    "render_view_linux.cc",
    "render_view_win.cc",
    "render_widget.cc",
    "render_widget.h",
    "render_widget_mouse_lock_dispatcher.cc",
    "render_widget_mouse_lock_dispatcher.h",
    "render_widget_owner_delegate.h",
    "renderer_blink_platform_impl.cc",
    "renderer_blink_platform_impl.h",
    "renderer_main.cc",
    "renderer_main_platform_delegate.h",
    "renderer_main_platform_delegate_android.cc",
    "renderer_main_platform_delegate_linux.cc",
    "renderer_main_platform_delegate_mac.mm",
    "renderer_main_platform_delegate_win.cc",
    "renderer_webapplicationcachehost_impl.cc",
    "renderer_webapplicationcachehost_impl.h",
    "renderer_webcookiejar_impl.cc",
    "renderer_webcookiejar_impl.h",
    "resizing_mode_selector.cc",
    "resizing_mode_selector.h",
    "resource_timing_info_conversions.cc",
    "resource_timing_info_conversions.h",
    "sad_plugin.cc",
    "sad_plugin.h",
    "savable_resources.cc",
    "savable_resources.h",
    "seccomp_sandbox_status_android.cc",
    "seccomp_sandbox_status_android.h",
    "service_worker/controller_service_worker_connector.cc",
    "service_worker/controller_service_worker_connector.h",
    "service_worker/controller_service_worker_impl.cc",
    "service_worker/controller_service_worker_impl.h",
    "service_worker/embedded_worker_instance_client_impl.cc",
    "service_worker/embedded_worker_instance_client_impl.h",
    "service_worker/service_worker_context_client.cc",
    "service_worker/service_worker_context_client.h",
    "service_worker/service_worker_fetch_context_impl.cc",
    "service_worker/service_worker_fetch_context_impl.h",
    "service_worker/service_worker_network_provider.cc",
    "service_worker/service_worker_network_provider.h",
    "service_worker/service_worker_provider_context.cc",
    "service_worker/service_worker_provider_context.h",
    "service_worker/service_worker_subresource_loader.cc",
    "service_worker/service_worker_subresource_loader.h",
    "service_worker/service_worker_timeout_timer.cc",
    "service_worker/service_worker_timeout_timer.h",
    "service_worker/service_worker_type_converters.cc",
    "service_worker/service_worker_type_converters.h",
    "service_worker/service_worker_type_util.cc",
    "service_worker/service_worker_type_util.h",
    "service_worker/thread_safe_script_container.cc",
    "service_worker/thread_safe_script_container.h",
    "service_worker/web_service_worker_impl.cc",
    "service_worker/web_service_worker_impl.h",
    "service_worker/web_service_worker_installed_scripts_manager_impl.cc",
    "service_worker/web_service_worker_installed_scripts_manager_impl.h",
    "service_worker/web_service_worker_provider_impl.cc",
    "service_worker/web_service_worker_provider_impl.h",
    "service_worker/web_service_worker_registration_impl.cc",
    "service_worker/web_service_worker_registration_impl.h",
    "shared_worker/embedded_shared_worker_stub.cc",
    "shared_worker/embedded_shared_worker_stub.h",
    "shared_worker/shared_worker_client_impl.cc",
    "shared_worker/shared_worker_client_impl.h",
    "shared_worker/shared_worker_factory_impl.cc",
    "shared_worker/shared_worker_factory_impl.h",
    "shared_worker/shared_worker_repository.cc",
    "shared_worker/shared_worker_repository.h",
    "skia_benchmarking_extension.cc",
    "skia_benchmarking_extension.h",
    "stats_collection_controller.cc",
    "stats_collection_controller.h",
    "stats_collection_observer.cc",
    "stats_collection_observer.h",
    "storage_util.cc",
    "storage_util.h",
    "text_input_client_observer.cc",
    "text_input_client_observer.h",
    "theme_helper_mac.h",
    "theme_helper_mac.mm",
    "top_level_blame_context.cc",
    "top_level_blame_context.h",
    "v8_value_converter_impl.cc",
    "v8_value_converter_impl.h",
    "web_database_observer_impl.cc",
    "web_database_observer_impl.h",
    "web_ui_extension.cc",
    "web_ui_extension.h",
    "web_ui_extension_data.cc",
    "web_ui_extension_data.h",
    "webgraphicscontext3d_provider_impl.cc",
    "webgraphicscontext3d_provider_impl.h",
    "worker_thread_registry.cc",
    "worker_thread_registry.h",
  ]

  if (!is_component_build) {
    if (is_win && is_official_build) {
      split_count = 2  # In certain configurations a full renderer.lib can
                       # be 2+ GB which breaks some Windows tools.
    } else {
      split_count = 1
    }
  }

  configs += [
    "//content:content_implementation",
    "//build/config/compiler:no_size_t_to_int_warning",
  ]
  defines = []

  public_deps = [
    "//content/public/common:common_sources",
    "//ipc",
  ]

  deps = [
    "//base:i18n",
    "//cc",
    "//cc/animation",
    "//cc/mojo_embedder",
    "//cc/paint",
    "//components/discardable_memory/client",
    "//components/metrics",
    "//components/metrics:single_sample_metrics",
    "//components/services/leveldb/public/cpp",
    "//components/url_formatter",
    "//components/viz/client",
    "//components/viz/common",
    "//components/viz/service",
    "//content:resources",
    "//content/child",
    "//content/common",
    "//content/common:buildflags",
    "//content/gpu:gpu_sources",
    "//content/public/child:child_sources",
    "//content/public/common:buildflags",
    "//content/public/common:feature_h264_with_openh264_ffmpeg",
    "//content/public/common:service_names",
    "//crypto:platform",
    "//device/base/synchronization",
    "//device/gamepad/public/cpp:shared_with_blink",
    "//device/gamepad/public/mojom",
    "//device/usb/public/mojom",
    "//gin",
    "//gpu",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:raster_interface",
    "//media",
    "//media:media_buildflags",
    "//media/blink",
    "//media/capture",
    "//media/gpu",
    "//media/gpu/ipc/client",
    "//media/gpu/ipc/common",
    "//media/midi",
    "//media/midi:mojo",
    "//media/mojo:buildflags",
    "//media/mojo/clients",
    "//media/mojo/interfaces",
    "//media/mojo/interfaces:remoting",
    "//mojo/public/cpp/bindings",
    "//net",
    "//ppapi/buildflags",
    "//printing/buildflags",
    "//sandbox",
    "//services/device/public/cpp/generic_sensor",
    "//services/device/public/mojom",
    "//services/device/public/mojom:constants",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/network:network_service",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//services/ui/public/cpp/gpu",
    "//skia",
    "//storage/common",
    "//third_party/blink/public:blink",
    "//third_party/blink/public:buildflags",
    "//third_party/blink/public:media_devices_mojo_bindings",
    "//third_party/blink/public:mojo_bindings",
    "//third_party/blink/public/common",
    "//third_party/boringssl",
    "//third_party/icu",
    "//third_party/libyuv",
    "//third_party/widevine/cdm:headers",
    "//ui/accessibility",
    "//ui/base",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events:dom_keycode_converter",
    "//ui/events:events_base",
    "//ui/events/blink",
    "//ui/gfx/geometry/mojo",
    "//ui/gl",
    "//ui/latency",
    "//ui/native_theme",
    "//ui/surface",
    "//v8",
  ]
  allow_circular_includes_from = []

  if (use_aura && !use_qt) {
    public_deps += [ "//content/renderer/mus" ]
    allow_circular_includes_from += [ "//content/renderer/mus" ]
    deps += [ "//services/ui/public/cpp" ]
  }

  if (use_external_popup_menu) {
    sources += [
      "external_popup_menu.cc",
      "external_popup_menu.h",
    ]
  }

  if (is_android) {
    # Add back the Linux file which Android shares.
    set_sources_assignment_filter([])
    sources += [ "render_view_linux.cc" ]

    deps += [
      "//third_party/android_tools:cpu_features",
      "//third_party/libphonenumber",
    ]
  } else {
    sources -= [
      "java/gin_java_bridge_dispatcher.cc",
      "java/gin_java_bridge_dispatcher.h",
      "java/gin_java_bridge_object.cc",
      "java/gin_java_bridge_object.h",
      "java/gin_java_bridge_value_converter.cc",
      "java/gin_java_bridge_value_converter.h",
      "java/gin_java_function_invocation_helper.cc",
      "java/gin_java_function_invocation_helper.h",
    ]
  }

  if (is_linux) {
    deps += [
      "//components/services/font/public/cpp",
      "//services/service_manager/zygote",
    ]
  }

  if (is_fuchsia) {
    sources += [
      "render_view_fuchsia.cc",
      "renderer_main_platform_delegate_fuchsia.cc",
    ]
  }

  if (enable_media_remoting) {
    deps += [ "//media/remoting" ]
  }

  if (enable_webrtc) {
    # WebRTC plugin-related stuff goes in a different section below.
    sources += [
      "image_capture/image_capture_frame_grabber.cc",
      "image_capture/image_capture_frame_grabber.h",
      "media/stream/aec_dump_message_filter.cc",
      "media/stream/aec_dump_message_filter.h",
      "media/stream/apply_constraints_processor.cc",
      "media/stream/apply_constraints_processor.h",
      "media/stream/external_media_stream_audio_source.cc",
      "media/stream/external_media_stream_audio_source.h",
      "media/stream/local_media_stream_audio_source.cc",
      "media/stream/local_media_stream_audio_source.h",
      "media/stream/media_stream_audio_deliverer.h",
      "media/stream/media_stream_audio_level_calculator.cc",
      "media/stream/media_stream_audio_level_calculator.h",
      "media/stream/media_stream_audio_processor.cc",
      "media/stream/media_stream_audio_processor.h",
      "media/stream/media_stream_audio_processor_options.cc",
      "media/stream/media_stream_audio_processor_options.h",
      "media/stream/media_stream_audio_source.cc",
      "media/stream/media_stream_audio_source.h",
      "media/stream/media_stream_audio_track.cc",
      "media/stream/media_stream_audio_track.h",
      "media/stream/media_stream_center.cc",
      "media/stream/media_stream_center.h",
      "media/stream/media_stream_constraints_util.cc",
      "media/stream/media_stream_constraints_util.h",
      "media/stream/media_stream_constraints_util_audio.cc",
      "media/stream/media_stream_constraints_util_audio.h",
      "media/stream/media_stream_constraints_util_sets.cc",
      "media/stream/media_stream_constraints_util_sets.h",
      "media/stream/media_stream_constraints_util_video_content.cc",
      "media/stream/media_stream_constraints_util_video_content.h",
      "media/stream/media_stream_constraints_util_video_device.cc",
      "media/stream/media_stream_constraints_util_video_device.h",
      "media/stream/media_stream_device_observer.cc",
      "media/stream/media_stream_device_observer.h",
      "media/stream/media_stream_dispatcher_eventhandler.h",
      "media/stream/media_stream_registry_interface.h",
      "media/stream/media_stream_renderer_factory_impl.cc",
      "media/stream/media_stream_renderer_factory_impl.h",
      "media/stream/media_stream_source.cc",
      "media/stream/media_stream_source.h",
      "media/stream/media_stream_track.cc",
      "media/stream/media_stream_track.h",
      "media/stream/media_stream_video_capturer_source.cc",
      "media/stream/media_stream_video_capturer_source.h",
      "media/stream/media_stream_video_renderer_sink.cc",
      "media/stream/media_stream_video_renderer_sink.h",
      "media/stream/media_stream_video_source.cc",
      "media/stream/media_stream_video_source.h",
      "media/stream/media_stream_video_track.cc",
      "media/stream/media_stream_video_track.h",
      "media/stream/processed_local_audio_source.cc",
      "media/stream/processed_local_audio_source.h",
      "media/stream/remote_media_stream_track_adapter.cc",
      "media/stream/remote_media_stream_track_adapter.h",
      "media/stream/secure_display_link_tracker.h",
      "media/stream/track_audio_renderer.cc",
      "media/stream/track_audio_renderer.h",
      "media/stream/user_media_client_impl.cc",
      "media/stream/user_media_client_impl.h",
      "media/stream/user_media_processor.cc",
      "media/stream/user_media_processor.h",
      "media/stream/video_track_adapter.cc",
      "media/stream/video_track_adapter.h",
      "media/stream/webaudio_media_stream_source.cc",
      "media/stream/webaudio_media_stream_source.h",
      "media/stream/webmediaplayer_ms.cc",
      "media/stream/webmediaplayer_ms.h",
      "media/stream/webmediaplayer_ms_compositor.cc",
      "media/stream/webmediaplayer_ms_compositor.h",
      "media/webrtc/audio_codec_factory.cc",
      "media/webrtc/audio_codec_factory.h",
      "media/webrtc/media_stream_remote_video_source.cc",
      "media/webrtc/media_stream_remote_video_source.h",
      "media/webrtc/media_stream_track_metrics.cc",
      "media/webrtc/media_stream_track_metrics.h",
      "media/webrtc/media_stream_video_webrtc_sink.cc",
      "media/webrtc/media_stream_video_webrtc_sink.h",
      "media/webrtc/peer_connection_dependency_factory.cc",
      "media/webrtc/peer_connection_dependency_factory.h",
      "media/webrtc/peer_connection_remote_audio_source.cc",
      "media/webrtc/peer_connection_remote_audio_source.h",
      "media/webrtc/peer_connection_tracker.cc",
      "media/webrtc/peer_connection_tracker.h",
      "media/webrtc/rtc_certificate.cc",
      "media/webrtc/rtc_certificate.h",
      "media/webrtc/rtc_certificate_generator.cc",
      "media/webrtc/rtc_certificate_generator.h",
      "media/webrtc/rtc_data_channel_handler.cc",
      "media/webrtc/rtc_data_channel_handler.h",
      "media/webrtc/rtc_dtmf_sender_handler.cc",
      "media/webrtc/rtc_dtmf_sender_handler.h",
      "media/webrtc/rtc_event_log_output_sink.h",
      "media/webrtc/rtc_event_log_output_sink_proxy.cc",
      "media/webrtc/rtc_event_log_output_sink_proxy.h",
      "media/webrtc/rtc_peer_connection_handler.cc",
      "media/webrtc/rtc_peer_connection_handler.h",
      "media/webrtc/rtc_rtp_contributing_source.cc",
      "media/webrtc/rtc_rtp_contributing_source.h",
      "media/webrtc/rtc_rtp_receiver.cc",
      "media/webrtc/rtc_rtp_receiver.h",
      "media/webrtc/rtc_rtp_sender.cc",
      "media/webrtc/rtc_rtp_sender.h",
      "media/webrtc/rtc_rtp_transceiver.cc",
      "media/webrtc/rtc_rtp_transceiver.h",
      "media/webrtc/rtc_stats.cc",
      "media/webrtc/rtc_stats.h",
      "media/webrtc/rtc_video_decoder.cc",
      "media/webrtc/rtc_video_decoder.h",
      "media/webrtc/rtc_video_decoder_factory.cc",
      "media/webrtc/rtc_video_decoder_factory.h",
      "media/webrtc/rtc_video_encoder.cc",
      "media/webrtc/rtc_video_encoder.h",
      "media/webrtc/rtc_video_encoder_factory.cc",
      "media/webrtc/rtc_video_encoder_factory.h",
      "media/webrtc/stun_field_trial.cc",
      "media/webrtc/stun_field_trial.h",
      "media/webrtc/track_observer.cc",
      "media/webrtc/track_observer.h",
      "media/webrtc/transceiver_state_surfacer.cc",
      "media/webrtc/transceiver_state_surfacer.h",
      "media/webrtc/two_keys_adapter_map.h",
      "media/webrtc/webrtc_audio_device_impl.cc",
      "media/webrtc/webrtc_audio_device_impl.h",
      "media/webrtc/webrtc_audio_device_not_impl.cc",
      "media/webrtc/webrtc_audio_device_not_impl.h",
      "media/webrtc/webrtc_audio_renderer.cc",
      "media/webrtc/webrtc_audio_renderer.h",
      "media/webrtc/webrtc_audio_sink.cc",
      "media/webrtc/webrtc_audio_sink.h",
      "media/webrtc/webrtc_media_stream_track_adapter.cc",
      "media/webrtc/webrtc_media_stream_track_adapter.h",
      "media/webrtc/webrtc_media_stream_track_adapter_map.cc",
      "media/webrtc/webrtc_media_stream_track_adapter_map.h",
      "media/webrtc/webrtc_set_description_observer.cc",
      "media/webrtc/webrtc_set_description_observer.h",
      "media/webrtc/webrtc_uma_histograms.cc",
      "media/webrtc/webrtc_uma_histograms.h",
      "media/webrtc/webrtc_video_capturer_adapter.cc",
      "media/webrtc/webrtc_video_capturer_adapter.h",
      "media/webrtc/webrtc_video_frame_adapter.cc",
      "media/webrtc/webrtc_video_frame_adapter.h",
      "media/webrtc_local_audio_source_provider.cc",
      "media/webrtc_local_audio_source_provider.h",
      "media/webrtc_logging.cc",
      "media/webrtc_logging.h",
      "media_capture_from_element/canvas_capture_handler.cc",
      "media_capture_from_element/canvas_capture_handler.h",
      "media_capture_from_element/html_audio_element_capturer_source.cc",
      "media_capture_from_element/html_audio_element_capturer_source.h",
      "media_capture_from_element/html_video_element_capturer_source.cc",
      "media_capture_from_element/html_video_element_capturer_source.h",
      "media_recorder/audio_track_encoder.cc",
      "media_recorder/audio_track_encoder.h",
      "media_recorder/audio_track_opus_encoder.cc",
      "media_recorder/audio_track_opus_encoder.h",
      "media_recorder/audio_track_pcm_encoder.cc",
      "media_recorder/audio_track_pcm_encoder.h",
      "media_recorder/audio_track_recorder.cc",
      "media_recorder/audio_track_recorder.h",
      "media_recorder/media_recorder_handler.cc",
      "media_recorder/media_recorder_handler.h",
      "media_recorder/vea_encoder.cc",
      "media_recorder/vea_encoder.h",
      "media_recorder/video_track_recorder.cc",
      "media_recorder/video_track_recorder.h",
      "media_recorder/vpx_encoder.cc",
      "media_recorder/vpx_encoder.h",
      "p2p/empty_network_manager.cc",
      "p2p/empty_network_manager.h",
      "p2p/filtering_network_manager.cc",
      "p2p/filtering_network_manager.h",
      "p2p/host_address_request.cc",
      "p2p/host_address_request.h",
      "p2p/ipc_network_manager.cc",
      "p2p/ipc_network_manager.h",
      "p2p/ipc_socket_factory.cc",
      "p2p/ipc_socket_factory.h",
      "p2p/network_list_manager.h",
      "p2p/network_list_observer.h",
      "p2p/network_manager_uma.cc",
      "p2p/network_manager_uma.h",
      "p2p/port_allocator.cc",
      "p2p/port_allocator.h",
      "p2p/socket_client.h",
      "p2p/socket_client_delegate.h",
      "p2p/socket_client_impl.cc",
      "p2p/socket_client_impl.h",
      "p2p/socket_dispatcher.cc",
      "p2p/socket_dispatcher.h",
    ]

    if (enable_plugins) {
      sources += [
        "media/pepper/pepper_to_video_track_adapter.cc",
        "media/pepper/pepper_to_video_track_adapter.h",
        "media/pepper/video_track_to_pepper_adapter.cc",
        "media/pepper/video_track_to_pepper_adapter.h",
        "pepper/pepper_media_stream_audio_track_host.cc",
        "pepper/pepper_media_stream_audio_track_host.h",
        "pepper/pepper_media_stream_track_host_base.cc",
        "pepper/pepper_media_stream_track_host_base.h",
        "pepper/pepper_media_stream_video_track_host.cc",
        "pepper/pepper_media_stream_video_track_host.h",
        "pepper/pepper_video_destination_host.cc",
        "pepper/pepper_video_destination_host.h",
        "pepper/pepper_video_source_host.cc",
        "pepper/pepper_video_source_host.h",
      ]
    }

    deps += [
      "//crypto",
      "//jingle:jingle_glue",
      "//third_party/libvpx",
      "//third_party/opus",
      "//third_party/webrtc/api:libjingle_logging_api",
      "//third_party/webrtc/api:libjingle_peerconnection_api",
      "//third_party/webrtc/api:rtc_stats_api",
      "//third_party/webrtc/api/audio:aec3_factory",
      "//third_party/webrtc/api/audio_codecs:audio_codecs_api",
      "//third_party/webrtc/api/audio_codecs/L16:audio_decoder_L16",
      "//third_party/webrtc/api/audio_codecs/L16:audio_encoder_L16",
      "//third_party/webrtc/api/audio_codecs/g711:audio_decoder_g711",
      "//third_party/webrtc/api/audio_codecs/g711:audio_encoder_g711",
      "//third_party/webrtc/api/audio_codecs/g722:audio_decoder_g722",
      "//third_party/webrtc/api/audio_codecs/g722:audio_encoder_g722",
      "//third_party/webrtc/api/audio_codecs/isac:audio_decoder_isac",
      "//third_party/webrtc/api/audio_codecs/isac:audio_encoder_isac",
      "//third_party/webrtc/api/audio_codecs/opus:audio_decoder_opus",
      "//third_party/webrtc/api/audio_codecs/opus:audio_encoder_opus",
      "//third_party/webrtc/api/video:video_bitrate_allocation",
      "//third_party/webrtc/api/video:video_frame",
      "//third_party/webrtc/api/video:video_frame_i420",
      "//third_party/webrtc/api/video_codecs:video_codecs_api",
      "//third_party/webrtc/common_video:common_video",
      "//third_party/webrtc/media:rtc_internal_video_codecs",
      "//third_party/webrtc/media:rtc_media",
      "//third_party/webrtc/media:rtc_media_base",
      "//third_party/webrtc/modules/audio_device",
      "//third_party/webrtc/modules/audio_processing",
      "//third_party/webrtc/modules/audio_processing:audio_processing_statistics",
      "//third_party/webrtc/modules/audio_processing/aec_dump",
      "//third_party/webrtc/modules/video_coding:video_codec_interface",
      "//third_party/webrtc/modules/video_coding:webrtc_h264",
      "//third_party/webrtc/p2p:libstunprober",
      "//third_party/webrtc/p2p:rtc_p2p",
      "//third_party/webrtc/pc:libjingle_peerconnection",
      "//third_party/webrtc/pc:peerconnection",
      "//third_party/webrtc/pc:rtc_pc",
      "//third_party/webrtc/pc:rtc_pc_base",
      "//third_party/webrtc/rtc_base:rtc_base",
      "//third_party/webrtc/rtc_base:rtc_task_queue",
      "//third_party/webrtc/stats",
      "//third_party/webrtc/system_wrappers",
      "//third_party/webrtc_overrides:init_webrtc",
    ]
    if (rtc_use_h264) {
      sources += [
        "media_recorder/h264_encoder.cc",
        "media_recorder/h264_encoder.h",
      ]
      deps += [ "//third_party/openh264:encoder" ]
    }
  } else {
    sources += [
      "media/webrtc_logging.h",
      "media/webrtc_logging_noop.cc",
    ]
  }

  if (enable_plugins) {
    sources += [
      "pepper/audio_helper.cc",
      "pepper/audio_helper.h",
      "pepper/content_renderer_pepper_host_factory.cc",
      "pepper/content_renderer_pepper_host_factory.h",
      "pepper/event_conversion.cc",
      "pepper/event_conversion.h",
      "pepper/fullscreen_container.h",
      "pepper/gfx_conversion.h",
      "pepper/host_array_buffer_var.cc",
      "pepper/host_array_buffer_var.h",
      "pepper/host_dispatcher_wrapper.cc",
      "pepper/host_dispatcher_wrapper.h",
      "pepper/host_globals.cc",
      "pepper/host_globals.h",
      "pepper/host_resource_var.cc",
      "pepper/host_resource_var.h",
      "pepper/host_var_tracker.cc",
      "pepper/host_var_tracker.h",
      "pepper/message_channel.cc",
      "pepper/message_channel.h",
      "pepper/pepper_audio_controller.cc",
      "pepper/pepper_audio_controller.h",
      "pepper/pepper_audio_encoder_host.cc",
      "pepper/pepper_audio_encoder_host.h",
      "pepper/pepper_audio_input_host.cc",
      "pepper/pepper_audio_input_host.h",
      "pepper/pepper_audio_output_host.cc",
      "pepper/pepper_audio_output_host.h",
      "pepper/pepper_broker.cc",
      "pepper/pepper_broker.h",
      "pepper/pepper_browser_connection.cc",
      "pepper/pepper_browser_connection.h",
      "pepper/pepper_camera_device_host.cc",
      "pepper/pepper_camera_device_host.h",
      "pepper/pepper_compositor_host.cc",
      "pepper/pepper_compositor_host.h",
      "pepper/pepper_device_enumeration_host_helper.cc",
      "pepper/pepper_device_enumeration_host_helper.h",
      "pepper/pepper_file_chooser_host.cc",
      "pepper/pepper_file_chooser_host.h",
      "pepper/pepper_file_ref_renderer_host.cc",
      "pepper/pepper_file_ref_renderer_host.h",
      "pepper/pepper_file_system_host.cc",
      "pepper/pepper_file_system_host.h",
      "pepper/pepper_graphics_2d_host.cc",
      "pepper/pepper_graphics_2d_host.h",
      "pepper/pepper_hung_plugin_filter.cc",
      "pepper/pepper_hung_plugin_filter.h",
      "pepper/pepper_in_process_resource_creation.cc",
      "pepper/pepper_in_process_resource_creation.h",
      "pepper/pepper_in_process_router.cc",
      "pepper/pepper_in_process_router.h",
      "pepper/pepper_media_device_manager.cc",
      "pepper/pepper_media_device_manager.h",
      "pepper/pepper_platform_audio_input.cc",
      "pepper/pepper_platform_audio_input.h",
      "pepper/pepper_platform_audio_output.cc",
      "pepper/pepper_platform_audio_output.h",
      "pepper/pepper_platform_audio_output_dev.cc",
      "pepper/pepper_platform_audio_output_dev.h",
      "pepper/pepper_platform_camera_device.cc",
      "pepper/pepper_platform_camera_device.h",
      "pepper/pepper_platform_video_capture.cc",
      "pepper/pepper_platform_video_capture.h",
      "pepper/pepper_plugin_instance_impl.cc",
      "pepper/pepper_plugin_instance_impl.h",
      "pepper/pepper_plugin_instance_metrics.cc",
      "pepper/pepper_plugin_instance_metrics.h",
      "pepper/pepper_plugin_registry.cc",
      "pepper/pepper_plugin_registry.h",
      "pepper/pepper_proxy_channel_delegate_impl.cc",
      "pepper/pepper_proxy_channel_delegate_impl.h",
      "pepper/pepper_try_catch.cc",
      "pepper/pepper_try_catch.h",
      "pepper/pepper_url_loader_host.cc",
      "pepper/pepper_url_loader_host.h",
      "pepper/pepper_video_capture_host.cc",
      "pepper/pepper_video_capture_host.h",
      "pepper/pepper_video_decoder_host.cc",
      "pepper/pepper_video_decoder_host.h",
      "pepper/pepper_video_encoder_host.cc",
      "pepper/pepper_video_encoder_host.h",
      "pepper/pepper_webplugin_impl.cc",
      "pepper/pepper_webplugin_impl.h",
      "pepper/pepper_websocket_host.cc",
      "pepper/pepper_websocket_host.h",
      "pepper/plugin_instance_throttler_impl.cc",
      "pepper/plugin_instance_throttler_impl.h",
      "pepper/plugin_module.cc",
      "pepper/plugin_module.h",
      "pepper/plugin_object.cc",
      "pepper/plugin_object.h",
      "pepper/plugin_power_saver_helper.cc",
      "pepper/plugin_power_saver_helper.h",
      "pepper/ppapi_preferences_builder.cc",
      "pepper/ppapi_preferences_builder.h",
      "pepper/ppb_audio_impl.cc",
      "pepper/ppb_audio_impl.h",
      "pepper/ppb_broker_impl.cc",
      "pepper/ppb_broker_impl.h",
      "pepper/ppb_buffer_impl.cc",
      "pepper/ppb_buffer_impl.h",
      "pepper/ppb_flash_message_loop_impl.cc",
      "pepper/ppb_flash_message_loop_impl.h",
      "pepper/ppb_graphics_3d_impl.cc",
      "pepper/ppb_graphics_3d_impl.h",
      "pepper/ppb_image_data_impl.cc",
      "pepper/ppb_image_data_impl.h",
      "pepper/ppb_proxy_impl.cc",
      "pepper/ppb_proxy_impl.h",
      "pepper/ppb_var_deprecated_impl.cc",
      "pepper/ppb_var_deprecated_impl.h",
      "pepper/ppb_video_decoder_impl.cc",
      "pepper/ppb_video_decoder_impl.h",
      "pepper/renderer_ppapi_host_impl.cc",
      "pepper/renderer_ppapi_host_impl.h",
      "pepper/renderer_restrict_dispatch_group.h",
      "pepper/resource_converter.cc",
      "pepper/resource_converter.h",
      "pepper/resource_creation_impl.cc",
      "pepper/resource_creation_impl.h",
      "pepper/url_request_info_util.cc",
      "pepper/url_request_info_util.h",
      "pepper/url_response_info_util.cc",
      "pepper/url_response_info_util.h",
      "pepper/v8_var_converter.cc",
      "pepper/v8_var_converter.h",
      "pepper/v8object_var.cc",
      "pepper/v8object_var.h",
      "pepper/video_decoder_shim.cc",
      "pepper/video_decoder_shim.h",
      "pepper/video_encoder_shim.cc",
      "pepper/video_encoder_shim.h",
      "render_widget_fullscreen_pepper.cc",
      "render_widget_fullscreen_pepper.h",
    ]

    deps += [
      "//components/nacl/common:buildflags",
      "//ppapi/host",
      "//ppapi/proxy",
      "//ppapi/shared_impl",
      "//third_party/libvpx",
      "//third_party/opus",
    ]
  }

  if (enable_basic_printing) {
    deps += [ "//printing" ]
  }

  if (enable_mojo_media) {
    sources += [
      "media/media_interface_factory.cc",
      "media/media_interface_factory.h",
    ]
  }

  if (is_linux || is_android) {
    deps += [ "//sandbox:sandbox_buildflags" ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  }

  if (enable_ipc_fuzzer) {
    configs += [ "//tools/ipc_fuzzer:ipc_fuzzer_config" ]
  }

  if (is_chromecast) {
    defines += [ "MEDIA_EVENT_LOG_UTILITY=LOG(INFO)" ]
  }
}

# See comment at the top of //content/BUILD.gn for how this works.
group("for_content_tests") {
  visibility = [ "//content/test/*" ]

  if (!is_component_build) {
    public_deps = [
      ":renderer",
    ]
  }
}

fuzzer_test("audio_decoder_fuzzer") {
  sources = [
    "media/audio_decoder_fuzzer.cpp",
  ]
  deps = [
    "//content/public/renderer:renderer_sources",
    "//content/renderer:renderer",
    "//content/test:test_support",
  ]
  seed_corpus = "//media/test/data"
}
