# Copyright 2014 The Chromium Authors
# 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/chromeos/ui_mode.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//content/common/features.gni")
import("//media/media_options.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/webrtc/webrtc.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")

if (is_component_build) {
  link_target_type = "source_set"
} else {
  link_target_type = "static_library"
}

target(link_target_type, "renderer") {
  # 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",
    "//chromecast/media/audio:*",
    "//content/app:*",
    "//content/public/renderer:renderer_sources",
    "//content/renderer:audio_decoder_fuzzer",
    "//content/renderer:content_security_policy_util_fuzzer",
  ]

  sources = [
    "accessibility/aom_content_ax_tree.cc",
    "accessibility/aom_content_ax_tree.h",
    "accessibility/ax_action_target_factory.cc",
    "accessibility/ax_action_target_factory.h",
    "accessibility/ax_image_annotator.cc",
    "accessibility/ax_image_annotator.h",
    "accessibility/ax_image_stopwords.cc",
    "accessibility/ax_image_stopwords.h",
    "accessibility/ax_tree_snapshotter_impl.cc",
    "accessibility/ax_tree_snapshotter_impl.h",
    "accessibility/blink_ax_action_target.cc",
    "accessibility/blink_ax_action_target.h",
    "accessibility/render_accessibility_impl.cc",
    "accessibility/render_accessibility_impl.h",
    "accessibility/render_accessibility_manager.cc",
    "accessibility/render_accessibility_manager.h",
    "agent_scheduling_group.cc",
    "agent_scheduling_group.h",
    "browser_exposed_renderer_interfaces.cc",
    "browser_exposed_renderer_interfaces.h",
    "content_security_policy_util.cc",
    "content_security_policy_util.h",
    "discardable_memory_utils.cc",
    "discardable_memory_utils.h",
    "document_state.cc",
    "document_state.h",
    "dom_automation_controller.cc",
    "dom_automation_controller.h",
    "effective_connection_type_helper.cc",
    "effective_connection_type_helper.h",
    "frame_owner_properties_converter.cc",
    "frame_owner_properties_converter.h",
    "gpu_benchmarking_extension.cc",
    "gpu_benchmarking_extension.h",
    "in_process_renderer_thread.cc",
    "in_process_renderer_thread.h",
    "media/audio_decoder.cc",
    "media/audio_decoder.h",
    "media/batching_media_log.cc",
    "media/batching_media_log.h",
    "media/codec_factory.cc",
    "media/codec_factory.h",
    "media/codec_factory_mojo.cc",
    "media/codec_factory_mojo.h",
    "media/gpu/gpu_video_accelerator_factories_impl.cc",
    "media/gpu/gpu_video_accelerator_factories_impl.h",
    "media/inspector_media_event_handler.cc",
    "media/inspector_media_event_handler.h",
    "media/media_factory.cc",
    "media/media_factory.h",
    "media/media_interface_factory.cc",
    "media/media_interface_factory.h",
    "media/media_permission_dispatcher.cc",
    "media/media_permission_dispatcher.h",
    "media/render_media_client.cc",
    "media/render_media_client.h",
    "media/render_media_event_handler.cc",
    "media/render_media_event_handler.h",
    "media/renderer_webaudiodevice_impl.cc",
    "media/renderer_webaudiodevice_impl.h",
    "media/renderer_webmediaplayer_delegate.cc",
    "media/renderer_webmediaplayer_delegate.h",
    "mhtml_handle_writer.cc",
    "mhtml_handle_writer.h",
    "mojo/blink_interface_registry_impl.cc",
    "mojo/blink_interface_registry_impl.h",
    "navigation_client.cc",
    "navigation_client.h",
    "navigation_state.cc",
    "navigation_state.h",
    "net_info_helper.cc",
    "net_info_helper.h",
    "policy_container_util.cc",
    "policy_container_util.h",
    "render_frame_impl.cc",
    "render_frame_impl.h",
    "render_process.cc",
    "render_process.h",
    "render_process_impl.cc",
    "render_process_impl.h",
    "render_thread_impl.cc",
    "render_thread_impl.h",
    "renderer_blink_platform_impl.cc",
    "renderer_blink_platform_impl.h",
    "renderer_main.cc",
    "renderer_main_platform_delegate.h",
    "sad_plugin.cc",
    "sad_plugin.h",
    "service_worker/controller_service_worker_connector.cc",
    "service_worker/controller_service_worker_connector.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_network_provider_for_frame.cc",
    "service_worker/service_worker_network_provider_for_frame.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_type_converters.cc",
    "service_worker/service_worker_type_converters.h",
    "service_worker/web_service_worker_provider_impl.cc",
    "service_worker/web_service_worker_provider_impl.h",
    "skia_benchmarking_extension.cc",
    "skia_benchmarking_extension.h",
    "stats_collection_controller.cc",
    "stats_collection_controller.h",
    "v8_value_converter_impl.cc",
    "v8_value_converter_impl.h",
    "variations_render_thread_observer.cc",
    "variations_render_thread_observer.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/dedicated_worker_host_factory_client.cc",
    "worker/dedicated_worker_host_factory_client.h",
    "worker/embedded_shared_worker_stub.cc",
    "worker/embedded_shared_worker_stub.h",
    "worker/fetch_client_settings_object_helpers.cc",
    "worker/fetch_client_settings_object_helpers.h",
    "worker/shared_worker_factory_impl.cc",
    "worker/shared_worker_factory_impl.h",
    "worker/worker_thread_registry.cc",
    "worker/worker_thread_registry.h",
  ]

  if (is_android) {
    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",
      "media/android/flinging_renderer_client.cc",
      "media/android/flinging_renderer_client.h",
      "media/android/flinging_renderer_client_factory.cc",
      "media/android/flinging_renderer_client_factory.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/stream_texture_factory.cc",
      "media/android/stream_texture_factory.h",
      "media/android/stream_texture_wrapper_impl.cc",
      "media/android/stream_texture_wrapper_impl.h",
      "renderer_main_platform_delegate_android.cc",
      "seccomp_sandbox_status_android.cc",
      "seccomp_sandbox_status_android.h",
      "stream_texture_host_android.cc",
      "stream_texture_host_android.h",
    ]
  }

  if (is_linux || is_chromeos) {
    sources += [
      "renderer_main_platform_delegate_linux.cc",
      "renderer_thread_type_handler.cc",
      "renderer_thread_type_handler.h",
    ]
  }

  if (is_mac) {
    sources += [
      "renderer_main_platform_delegate_mac.mm",
      "theme_helper_mac.h",
      "theme_helper_mac.mm",
    ]
  }

  if (is_win) {
    sources += [ "renderer_main_platform_delegate_win.cc" ]
  }

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

  configs += [ "//content:content_implementation" ]
  defines = []

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

  deps = [
    "//base",
    "//base:i18n",
    "//build:chromecast_buildflags",
    "//build:chromeos_buildflags",
    "//cc",
    "//cc/animation",
    "//cc/mojo_embedder",
    "//cc/mojom",
    "//cc/paint",
    "//components/discardable_memory/client",
    "//components/metrics",
    "//components/metrics:single_sample_metrics",
    "//components/url_formatter",
    "//components/variations:variations_mojom",
    "//components/variations/net",
    "//components/viz/client",
    "//components/viz/common",
    "//content:content_resources",
    "//content:dev_ui_content_resources",
    "//content/child",
    "//content/common",
    "//content/common:buildflags",
    "//content/common:main_frame_counter",
    "//content/gpu:gpu_sources",
    "//content/public/child:child_sources",
    "//content/services/auction_worklet:auction_worklet",
    "//content/services/shared_storage_worklet",
    "//crypto",
    "//device/base/synchronization",
    "//device/gamepad/public/cpp:shared_with_blink",
    "//device/gamepad/public/mojom",
    "//gin",
    "//gpu",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/client:raster_interface",
    "//gpu/command_buffer/client:webgpu_interface",
    "//media",
    "//media:media_buildflags",
    "//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/mojom",
    "//media/webrtc",
    "//mojo/public/cpp/bindings",
    "//net",
    "//ppapi/buildflags",
    "//printing/buildflags",
    "//sandbox",
    "//services/audio/public/mojom",
    "//services/device/public/cpp/generic_sensor",
    "//services/device/public/mojom",
    "//services/device/public/mojom:usb",
    "//services/image_annotation/public/cpp:cpp",
    "//services/image_annotation/public/mojom:mojom",
    "//services/metrics/public/cpp:metrics_cpp",
    "//services/metrics/public/cpp:ukm_builders",
    "//services/network:network_service",
    "//services/network/public/mojom",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//services/tracing/public/cpp",
    "//services/viz/public/cpp/gpu",
    "//skia",
    "//storage/common",
    "//third_party/blink/public:blink",
    "//third_party/blink/public:buildflags",
    "//third_party/blink/public/common",
    "//third_party/blink/public/platform/media",
    "//third_party/blink/public/strings:accessibility_strings",
    "//third_party/boringssl",
    "//third_party/icu",
    "//third_party/libyuv",
    "//third_party/sqlite",
    "//third_party/widevine/cdm:headers",
    "//ui/accessibility",
    "//ui/base",
    "//ui/base/clipboard",
    "//ui/base/dragdrop/mojom:mojom_shared",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events:dom_keycode_converter",
    "//ui/events:events_base",
    "//ui/events/blink",
    "//ui/gfx/geometry/mojom",
    "//ui/gl",
    "//ui/latency",
    "//ui/native_theme",
    "//ui/surface",
    "//url",
    "//v8",
  ]
  allow_circular_includes_from = []

  if (is_android) {
    deps += [
      "//components/power_scheduler",

      # Used by Android WebView only.
      "//components/viz/service",
      "//third_party/android_ndk:cpu_features",
      "//third_party/ashmem",
      "//third_party/libphonenumber",
    ]
  }

  if (is_linux || is_chromeos) {
    deps += [ "//components/services/font/public/cpp" ]
  }

  if (is_fuchsia) {
    sources += [
      "media/codec_factory_fuchsia.cc",
      "media/codec_factory_fuchsia.h",
      "renderer_main_platform_delegate_fuchsia.cc",
    ]
    public_deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.mediacodec" ]

    deps += [
      "//media/fuchsia/cdm/client",
      "//media/fuchsia/video",
      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
    ]
  }

  if (enable_cast_receiver) {
    deps += [
      "//components/cast_streaming/public",
      "//components/cast_streaming/renderer:resource_provider",
      "//components/cast_streaming/renderer:wrapping_renderer_factory_selector",
    ]
  }

  # TODO(crbug.com/1293520): Remove this dependency on cast devices.
  if (enable_media_remoting || is_castos || is_cast_android) {
    deps += [ "//media/mojo/mojom:remoting" ]

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

    if (is_castos || is_cast_android) {
      if (enable_cast_audio_renderer) {
        sources += [
          "media/cast_renderer_factory.cc",
          "media/cast_renderer_factory.h",
        ]

        deps += [ "//chromecast/media/audio:audio_renderer" ]
      }

      deps += [
        "//media/remoting:remoting_constants",
        "//media/remoting:remoting_renderer",
      ]
    }
  }

  if (enable_ppapi) {
    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/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_input_host.cc",
      "pepper/pepper_audio_input_host.h",
      "pepper/pepper_audio_output_host.cc",
      "pepper/pepper_audio_output_host.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_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_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_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_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_module.cc",
      "pepper/plugin_module.h",
      "pepper/plugin_object.cc",
      "pepper/plugin_object.h",
      "pepper/ppapi_preferences_builder.cc",
      "pepper/ppapi_preferences_builder.h",
      "pepper/ppb_audio_impl.cc",
      "pepper/ppb_audio_impl.h",
      "pepper/ppb_buffer_impl.cc",
      "pepper/ppb_buffer_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",
    ]

    deps += [
      "//components/nacl/common:buildflags",
      "//ppapi/host",
      "//ppapi/proxy",
      "//ppapi/shared_impl",
      "//printing/mojom",
      "//third_party/libvpx",
      "//third_party/opus",
      "//ui/base/cursor",
      "//ui/base/cursor/mojom:cursor_type",
    ]
  }

  if (is_win) {
    sources += [
      "media/win/dcomp_texture_factory.cc",
      "media/win/dcomp_texture_factory.h",
      "media/win/dcomp_texture_host.cc",
      "media/win/dcomp_texture_host.h",
      "media/win/dcomp_texture_wrapper_impl.cc",
      "media/win/dcomp_texture_wrapper_impl.h",
      "media/win/overlay_state_observer_impl.cc",
      "media/win/overlay_state_observer_impl.h",
      "media/win/overlay_state_service_provider.cc",
      "media/win/overlay_state_service_provider.h",
    ]
  }

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

  if (is_chromeos) {
    deps += [ "//chromeos/system:system" ]
  }
  if (is_chromeos_ash) {
    deps += [ "//chromeos:chromeos_export" ]
    if (target_cpu == "x64") {
      deps += [ "//chromeos/ash/components/memory/userspace_swap" ]
    }
  }

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

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

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

  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"
}

fuzzer_test("content_security_policy_util_fuzzer") {
  sources = [ "content_security_policy_util_fuzzer.cc" ]
  deps = [
    "//base",
    "//content/public/renderer:renderer_sources",
    "//content/renderer:renderer",
    "//content/test:test_support",
    "//services/network:network_service",
    "//services/network/public/cpp",
    "//services/network/public/mojom",
  ]
  dict = "//testing/libfuzzer/fuzzers/dicts/content_security_policy.dict"
  seed_corpus = "//testing/libfuzzer/fuzzers/content_security_policy_corpus"
}
