# 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("features.gni")
import("//build/buildflag_header.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")
import("//media/media_options.gni")
import("//mojo/public/tools/bindings/mojom.gni")
import("//ppapi/features/features.gni")
import("//sandbox/features.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
if (is_mac) {
  import("//build/config/mac/mac_sdk.gni")
}

# For feature flags internal to content. See content/public/common:features
# for feature flags that clients of contents need to know about.
buildflag_header("features") {
  header = "features.h"

  flags = [
    "USE_EXTERNAL_POPUP_MENU=$use_external_popup_menu",
    "ALLOW_CRITICAL_MEMORY_PRESSURE_HANDLING_IN_FOREGROUND=$allow_critical_memory_pressure_handling_in_foreground",
  ]
}

source_set("common") {
  # Targets external to content should always link to the public API.
  # In addition, targets outside of the content component (shell and tests)
  # must not link to this because it will duplicate the code in the component
  # build.
  visibility = [ "//content/*" ]

  sources = [
    "accessibility_messages.h",
    "all_messages.h",
    "android/browser_side_navigation_policy_android.cc",
    "android/gin_java_bridge_errors.cc",
    "android/gin_java_bridge_errors.h",
    "android/gin_java_bridge_value.cc",
    "android/gin_java_bridge_value.h",
    "android/hash_set.cc",
    "android/hash_set.h",
    "android/media_metadata_android.cc",
    "android/media_metadata_android.h",
    "android/resource_request_body_android.cc",
    "android/resource_request_body_android.h",
    "android/sync_compositor_messages.cc",
    "android/sync_compositor_messages.h",
    "android/sync_compositor_statics.cc",
    "android/sync_compositor_statics.h",
    "appcache_interfaces.cc",
    "appcache_interfaces.h",
    "appcache_messages.h",
    "associated_interface_provider_impl.cc",
    "associated_interface_provider_impl.h",
    "associated_interface_registry_impl.cc",
    "associated_interface_registry_impl.h",
    "ax_content_node_data.cc",
    "ax_content_node_data.h",
    "background_fetch/background_fetch_struct_traits.cc",
    "background_fetch/background_fetch_struct_traits.h",
    "background_fetch/background_fetch_types.cc",
    "background_fetch/background_fetch_types.h",
    "bluetooth/web_bluetooth_device_id.cc",
    "bluetooth/web_bluetooth_device_id.h",
    "browser_plugin/browser_plugin_constants.cc",
    "browser_plugin/browser_plugin_constants.h",
    "browser_plugin/browser_plugin_messages.h",
    "cache_storage/cache_storage_messages.h",
    "cache_storage/cache_storage_types.cc",
    "cache_storage/cache_storage_types.h",
    "child_process_host_impl.cc",
    "child_process_host_impl.h",
    "common_sandbox_support_linux.cc",
    "content_constants_internal.cc",
    "content_constants_internal.h",
    "content_export.h",
    "content_ipc_logging.cc",
    "content_message_generator.cc",
    "content_message_generator.h",
    "content_param_traits.cc",
    "content_param_traits.h",
    "content_param_traits_macros.h",
    "content_paths.cc",
    "content_security_policy/content_security_policy.cc",
    "content_security_policy/content_security_policy.h",
    "content_security_policy/csp_context.cc",
    "content_security_policy/csp_context.h",
    "content_security_policy/csp_directive.cc",
    "content_security_policy/csp_directive.h",
    "content_security_policy/csp_disposition_enum.h",
    "content_security_policy/csp_source.cc",
    "content_security_policy/csp_source.h",
    "content_security_policy/csp_source_list.cc",
    "content_security_policy/csp_source_list.h",
    "content_security_policy_header.cc",
    "content_security_policy_header.h",
    "content_switches_internal.cc",
    "content_switches_internal.h",
    "cross_site_document_classifier.cc",
    "cross_site_document_classifier.h",
    "cursors/webcursor.cc",
    "cursors/webcursor.h",
    "cursors/webcursor_android.cc",
    "cursors/webcursor_aura.cc",
    "cursors/webcursor_aurawin.cc",
    "cursors/webcursor_aurax11.cc",
    "cursors/webcursor_mac.mm",
    "cursors/webcursor_ozone.cc",
    "date_time_suggestion.h",
    "devtools_messages.h",
    "dom_storage/dom_storage_map.cc",
    "dom_storage/dom_storage_map.h",
    "dom_storage/dom_storage_messages.h",
    "dom_storage/dom_storage_types.h",
    "download/mhtml_save_status.cc",
    "download/mhtml_save_status.h",
    "drag_event_source_info.h",
    "drag_messages.h",
    "drag_traits.h",
    "dwrite_font_proxy_messages.h",
    "edit_command.h",
    "fileapi/file_system_messages.h",
    "fileapi/webblob_messages.h",
    "font_cache_dispatcher_win.cc",
    "font_cache_dispatcher_win.h",
    "font_config_ipc_linux.cc",
    "font_config_ipc_linux.h",
    "font_list.cc",
    "font_list.h",
    "font_list_android.cc",
    "font_list_fontconfig.cc",
    "font_list_mac.mm",
    "font_list_win.cc",
    "frame_message_enums.h",
    "frame_messages.h",
    "frame_messages_forward.h",
    "frame_owner_properties.cc",
    "frame_owner_properties.h",
    "frame_replication_state.cc",
    "frame_replication_state.h",
    "gin_java_bridge_messages.h",
    "in_process_child_thread_params.cc",
    "in_process_child_thread_params.h",
    "indexed_db/indexed_db_constants.h",
    "indexed_db/indexed_db_key.cc",
    "indexed_db/indexed_db_key.h",
    "indexed_db/indexed_db_key_path.cc",
    "indexed_db/indexed_db_key_path.h",
    "indexed_db/indexed_db_key_range.cc",
    "indexed_db/indexed_db_key_range.h",
    "indexed_db/indexed_db_metadata.cc",
    "indexed_db/indexed_db_metadata.h",
    "indexed_db/indexed_db_struct_traits.cc",
    "indexed_db/indexed_db_struct_traits.h",
    "input/event_with_latency_info.h",
    "input/gesture_event_stream_validator.cc",
    "input/gesture_event_stream_validator.h",
    "input/ime_text_span_conversions.cc",
    "input/ime_text_span_conversions.h",
    "input/input_event.cc",
    "input/input_event.h",
    "input/input_event_ack.cc",
    "input/input_event_ack.h",
    "input/input_event_ack_state.cc",
    "input/input_event_dispatch_type.h",
    "input/input_event_stream_validator.cc",
    "input/input_event_stream_validator.h",
    "input/input_event_struct_traits.cc",
    "input/input_event_struct_traits.h",
    "input/input_param_traits.cc",
    "input/input_param_traits.h",
    "input/synthetic_gesture_params.cc",
    "input/synthetic_gesture_params.h",
    "input/synthetic_pinch_gesture_params.cc",
    "input/synthetic_pinch_gesture_params.h",
    "input/synthetic_pointer_action_list_params.cc",
    "input/synthetic_pointer_action_list_params.h",
    "input/synthetic_pointer_action_params.cc",
    "input/synthetic_pointer_action_params.h",
    "input/synthetic_smooth_drag_gesture_params.cc",
    "input/synthetic_smooth_drag_gesture_params.h",
    "input/synthetic_smooth_scroll_gesture_params.cc",
    "input/synthetic_smooth_scroll_gesture_params.h",
    "input/synthetic_tap_gesture_params.cc",
    "input/synthetic_tap_gesture_params.h",
    "input/synthetic_web_input_event_builders.cc",
    "input/synthetic_web_input_event_builders.h",
    "input/touch_action_optional_struct_traits.cc",
    "input/touch_action_optional_struct_traits.h",
    "input/touch_event_stream_validator.cc",
    "input/touch_event_stream_validator.h",
    "input/web_touch_event_traits.cc",
    "input/web_touch_event_traits.h",
    "input_messages.h",
    "inter_process_time_ticks_converter.cc",
    "inter_process_time_ticks_converter.h",
    "layer_tree_settings_factory.cc",
    "layer_tree_settings_factory.h",
    "loader_util.cc",
    "loader_util.h",
    "mac/attributed_string_coder.h",
    "mac/attributed_string_coder.mm",
    "mac/font_loader.h",
    "mac/font_loader.mm",
    "media/aec_dump_messages.h",
    "media/audio_messages.h",
    "media/cdm_info.cc",
    "media/media_devices.cc",
    "media/media_devices.h",
    "media/media_player_delegate_messages.h",
    "media/media_player_messages_android.h",
    "media/media_stream_controls.cc",
    "media/media_stream_controls.h",
    "media/media_stream_param_traits.cc",
    "media/media_stream_param_traits.h",
    "media/media_stream_track_metrics_host_messages.h",
    "media/midi_messages.h",
    "media/peer_connection_tracker_messages.h",
    "media/surface_view_manager_messages_android.h",
    "media/video_capture.h",
    "navigation_gesture.h",
    "navigation_params.cc",
    "navigation_params.h",
    "navigation_subresource_loader_params.cc",
    "navigation_subresource_loader_params.h",
    "net/url_fetcher.cc",
    "net/url_request_service_worker_data.cc",
    "net/url_request_service_worker_data.h",
    "net/url_request_user_data.cc",
    "net/url_request_user_data.h",
    "origin_trials/trial_policy_impl.cc",
    "origin_trials/trial_policy_impl.h",
    "origin_util.cc",
    "p2p_socket_type.h",
    "page_message_enums.h",
    "page_messages.h",
    "page_state_serialization.cc",
    "page_state_serialization.h",
    "page_zoom.cc",
    "pepper_file_util.cc",
    "pepper_file_util.h",
    "pepper_plugin_list.cc",
    "pepper_plugin_list.h",
    "pepper_renderer_instance_data.cc",
    "pepper_renderer_instance_data.h",
    "platform_notification_messages.h",
    "plugin_list.cc",
    "plugin_list.h",
    "possibly_associated_interface_ptr.h",
    "possibly_associated_interface_ptr_info.h",
    "presentation/presentation_struct_traits.cc",
    "presentation/presentation_struct_traits.h",
    "process_type.cc",
    "quarantine/quarantine.cc",
    "quarantine/quarantine_constants_linux.h",
    "quarantine/quarantine_linux.cc",
    "quarantine/quarantine_mac.mm",
    "quarantine/quarantine_win.cc",
    "render_widget_surface_properties.cc",
    "render_widget_surface_properties.h",
    "resize_params.cc",
    "resize_params.h",
    "resource_messages.cc",
    "resource_messages.h",
    "sandbox_init_linux.cc",
    "sandbox_init_mac.cc",
    "sandbox_init_win.cc",
    "savable_subframe.h",
    "send_zygote_child_ping_linux.cc",
    "service_manager/service_manager_connection_impl.cc",
    "service_manager/service_manager_connection_impl.h",
    "service_worker/embedded_worker_messages.h",
    "service_worker/embedded_worker_settings.h",
    "service_worker/embedded_worker_start_params.cc",
    "service_worker/embedded_worker_start_params.h",
    "service_worker/service_worker_client_info.cc",
    "service_worker/service_worker_client_info.h",
    "service_worker/service_worker_loader_helpers.cc",
    "service_worker/service_worker_loader_helpers.h",
    "service_worker/service_worker_messages.h",
    "service_worker/service_worker_provider_host_info.cc",
    "service_worker/service_worker_provider_host_info.h",
    "service_worker/service_worker_status_code.cc",
    "service_worker/service_worker_status_code.h",
    "service_worker/service_worker_types.cc",
    "service_worker/service_worker_types.h",
    "service_worker/service_worker_utils.cc",
    "service_worker/service_worker_utils.h",
    "site_isolation_policy.cc",
    "site_isolation_policy.h",
    "speech_recognition_messages.h",
    "swapped_out_messages.cc",
    "swapped_out_messages.h",
    "task_scheduler.cc",
    "task_scheduler.h",
    "text_input_client_messages.h",
    "text_input_state.cc",
    "text_input_state.h",
    "throttling_url_loader.cc",
    "throttling_url_loader.h",
    "unique_name_helper.cc",
    "unique_name_helper.h",
    "url_loader_factory_bundle.cc",
    "url_loader_factory_bundle.h",
    "url_request_struct_traits.cc",
    "url_request_struct_traits.h",
    "url_schemes.cc",
    "url_schemes.h",
    "user_agent.cc",
    "view_message_enums.h",
    "view_messages.h",
    "zygote_commands_linux.h",
  ]

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

  public_deps = [
    ":mojo_bindings",
    "//cc",
    "//gpu/command_buffer/common",
    "//ipc",
    "//services/service_manager/sandbox",
    "//third_party/WebKit/common:blink_common",
    "//third_party/WebKit/public:blink_headers",
  ]
  deps = [
    ":features",
    "//base",
    "//base/third_party/dynamic_annotations",
    "//build/util:webkit_version",
    "//cc/ipc",
    "//components/discardable_memory/common",
    "//components/tracing",
    "//components/tracing:startup_tracing",
    "//components/viz/service",
    "//content:resources",
    "//content/app/resources",
    "//content/public/common:interfaces",
    "//content/public/common:service_names",
    "//device/base/synchronization",
    "//device/bluetooth",
    "//gpu",
    "//gpu/command_buffer/client:gles2_c_lib",
    "//gpu/command_buffer/client:gles2_cmd_helper",
    "//gpu/command_buffer/client:gles2_implementation",
    "//gpu/command_buffer/client:gles2_interface",
    "//gpu/command_buffer/common:gles2_utils",
    "//gpu/command_buffer/service",
    "//gpu/ipc/client",
    "//gpu/ipc/common",
    "//gpu/skia_bindings",
    "//ipc",
    "//media",
    "//media:shared_memory_support",
    "//media/base/ipc",
    "//media/capture",
    "//media/capture/ipc",
    "//media/gpu:features",
    "//media/gpu/ipc/client",
    "//media/gpu/ipc/common",
    "//media/midi",
    "//media/midi:mojo",
    "//mojo/common:common_base",
    "//mojo/edk/system",
    "//net",
    "//ppapi/features",
    "//sandbox",
    "//sandbox:sandbox_features",
    "//services/network/public/cpp",
    "//services/network/public/interfaces",
    "//services/resource_coordinator/public/cpp:resource_coordinator_cpp",
    "//services/service_manager",
    "//services/service_manager/embedder",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/interfaces",
    "//services/service_manager/runner/common",
    "//services/ui/public/interfaces",
    "//services/video_capture/public/interfaces",
    "//services/viz/public/interfaces",
    "//skia",
    "//storage/common",
    "//third_party/angle:angle_gpu_info_util",
    "//third_party/boringssl",
    "//third_party/icu",
    "//ui/accessibility",
    "//ui/base",
    "//ui/base/ime",
    "//ui/display",
    "//ui/events/blink",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gfx/ipc",
    "//ui/gfx/ipc/color",
    "//ui/gfx/ipc/geometry",
    "//ui/gfx/ipc/skia",
    "//ui/gl",
    "//ui/latency/ipc",
    "//ui/shell_dialogs",
    "//url",
    "//url/ipc:url_ipc",
  ]

  defines = []
  include_dirs = []
  libs = []
  ldflags = []

  allow_circular_includes_from = [
    ":mojo_bindings",
    "//content/public/common:interfaces",
  ]

  if (is_android && use_seccomp_bpf) {
    set_sources_assignment_filter([])
    sources += [
      "//services/service_manager/sandbox/linux/bpf_base_policy_linux.cc",
      "//services/service_manager/sandbox/linux/bpf_base_policy_linux.h",
    ]
    set_sources_assignment_filter(sources_assignment_filter)
  }

  if (is_mac) {
    deps += [ "//sandbox/mac:seatbelt" ]
  }

  if (is_android) {
    deps += [
      "//content/public/android:common_aidl",
      "//content/public/android:jni",
    ]

    libs += [ "android" ]
  }

  if (is_debug && !is_component_build && enable_plugins) {
    # Content depends on the PPAPI message logging stuff; if this isn't here,
    # some unit test binaries won't compile. This only worked in release mode
    # because logging is disabled there.
    deps += [ "//ppapi/proxy:ipc_sources" ]
  }

  if (enable_webrtc) {
    sources += [ "p2p_messages.h" ]
    deps += [
      "//third_party/webrtc/rtc_base:rtc_base",
      "//third_party/webrtc_overrides",
    ]
  }

  if (use_ozone) {
    deps += [ "//ui/ozone" ]
  } else {
    sources -= [ "cursors/webcursor_ozone.cc" ]
  }

  if (!use_aura) {
    sources -= [ "cursors/webcursor_aura.cc" ]
  }

  if (!use_aura || !use_x11) {
    sources -= [ "cursors/webcursor_aurax11.cc" ]
  }

  if (is_linux) {
    deps += [ "//third_party/fontconfig" ]
  }

  if (is_mac || is_win || is_android || is_fuchsia) {
    sources -= [ "font_list_fontconfig.cc" ]
  }

  if (enable_plugins) {
    deps += [
      "//ppapi/proxy:ipc",
      "//ppapi/shared_impl",
    ]
  } else {
    sources -= [
      "pepper_file_util.cc",
      "pepper_file_util.h",
      "pepper_plugin_list.cc",
      "pepper_plugin_list.h",
      "pepper_renderer_instance_data.cc",
      "pepper_renderer_instance_data.h",
      "plugin_list.cc",
      "plugin_list.h",
    ]
  }

  if (!is_win || !use_aura) {
    sources -= [ "cursors/webcursor_aurawin.cc" ]
  }

  if (!use_seccomp_bpf) {
    if (is_linux && current_cpu != "s390x" && current_cpu != "ppc64") {
      sources -= [
        "sandbox_linux/bpf_base_policy_linux.cc",
        "sandbox_linux/bpf_base_policy_linux.h",
        "sandbox_linux/bpf_cros_amd_gpu_policy_linux.cc",
        "sandbox_linux/bpf_cros_amd_gpu_policy_linux.h",
        "sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc",
        "sandbox_linux/bpf_cros_arm_gpu_policy_linux.h",
        "sandbox_linux/bpf_gpu_policy_linux.cc",
        "sandbox_linux/bpf_gpu_policy_linux.h",
        "sandbox_linux/bpf_ppapi_policy_linux.cc",
        "sandbox_linux/bpf_ppapi_policy_linux.h",
        "sandbox_linux/bpf_renderer_policy_linux.cc",
        "sandbox_linux/bpf_renderer_policy_linux.h",
        "sandbox_linux/bpf_utility_policy_linux.cc",
        "sandbox_linux/bpf_utility_policy_linux.h",
      ]
    }
  }

  if (is_mac) {
    deps += [ "//media/gpu" ]
  }

  if (enable_ipc_fuzzer) {
    configs += [ "//tools/ipc_fuzzer:ipc_fuzzer_config" ]
    sources += [
      "external_ipc_dumper.cc",
      "external_ipc_dumper.h",
    ]
  }

  if (is_fuchsia) {
    sources += [
      "font_list_fuchsia.cc",
      "sandbox_policy_fuchsia.cc",
      "sandbox_policy_fuchsia.h",
    ]
  }
}

# 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 = [
      ":common",
    ]
  }
}

mojom("mojo_bindings") {
  # This interface is internal to content.
  visibility = [ "//content/*" ]

  # indexed_db.mojom uses a native typemap that is not available in Java.
  cpp_only = true

  sources = [
    "appcache.mojom",
    "associated_interfaces.mojom",
    "child.mojom",
    "child_control.mojom",
    "child_memory_coordinator.mojom",
    "clipboard.mojom",
    "devtools.mojom",
    "field_trial_recorder.mojom",
    "file_utilities.mojom",
    "frame.mojom",
    "frame_sink_provider.mojom",
    "histogram_fetcher.mojom",
    "host_zoom.mojom",
    "image_downloader/image_downloader.mojom",
    "indexed_db/indexed_db.mojom",
    "input/input_handler.mojom",
    "input/input_injector.mojom",
    "leveldb_wrapper.mojom",
    "manifest_observer.mojom",
    "media/media_stream.mojom",
    "media/renderer_audio_output_stream_factory.mojom",
    "memory_coordinator.mojom",
    "native_types.mojom",
    "navigation_params.mojom",
    "page_state.mojom",
    "push_messaging.mojom",
    "quota_dispatcher_host.mojom",
    "render_frame_message_filter.mojom",
    "render_message_filter.mojom",
    "render_widget_window_tree_client_factory.mojom",
    "renderer.mojom",
    "renderer_host.mojom",
    "service_worker/controller_service_worker.mojom",
    "service_worker/embedded_worker.mojom",
    "service_worker/service_worker.mojom",
    "service_worker/service_worker_container.mojom",
    "service_worker/service_worker_event_dispatcher.mojom",
    "service_worker/service_worker_fetch_response_callback.mojom",
    "service_worker/service_worker_provider.mojom",
    "shared_worker/shared_worker.mojom",
    "shared_worker/shared_worker_client.mojom",
    "shared_worker/shared_worker_connector.mojom",
    "shared_worker/shared_worker_factory.mojom",
    "shared_worker/shared_worker_host.mojom",
    "shared_worker/shared_worker_info.mojom",
    "storage_partition_service.mojom",
    "url_loader_factory_bundle.mojom",
    "video_capture.mojom",
    "widget.mojom",
  ]

  if (is_win) {
    sources += [ "font_cache_win.mojom" ]
  }

  import_dirs = [ "//mojo/services" ]

  public_deps = [
    "//components/leveldb/public/interfaces",
    "//content/public/common:interfaces",
    "//ipc:mojom_constants",
    "//media/capture/mojo:capture_types",
    "//media/mojo/interfaces",
    "//mojo/common:common_custom_types",
    "//services/network/public/interfaces",
    "//services/service_manager/public/interfaces",
    "//services/ui/public/interfaces",
    "//services/video_capture/public/interfaces",
    "//services/viz/public/interfaces",
    "//skia/public/interfaces",
    "//storage/common:mojo_bindings",
    "//third_party/WebKit/public:mojo_bindings",
    "//ui/base/mojo:mojo_bindings",
    "//ui/gfx/geometry/mojo",
    "//ui/gfx/mojo",
    "//url/mojo:url_mojom_gurl",
    "//url/mojo:url_mojom_origin",
  ]

  component_output_prefix = "content_common_mojo_bindings"
  export_class_attribute = "CONTENT_EXPORT"
  export_define = "CONTENT_IMPLEMENTATION=1"
  export_header = "content/common/content_export.h"
}
