# Copyright 2017 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/buildflag_header.gni")
import("//build/config/ios/ios_sdk.gni")
import("//ios/build/config.gni")
import("//ios/features.gni")

source_set("ui") {
  public_deps = [ ":web_controller_header" ]
  deps = [
    ":crw_context_menu_controller",
    ":crw_web_view_navigation_proxy",
    ":web_view_handler",
    "//base",
    "//build:branding_buildflags",
    "//build/config/ios:buildflags",
    "//ios/net",
    "//ios/third_party/webkit",
    "//ios/web:core",
    "//ios/web/annotations",
    "//ios/web/browsing_data",
    "//ios/web/common",
    "//ios/web/common:crw_web_view_resizing_type",
    "//ios/web/download",
    "//ios/web/favicon",
    "//ios/web/find_in_page",
    "//ios/web/js_features/context_menu",
    "//ios/web/js_features/scroll_helper",
    "//ios/web/js_messaging",
    "//ios/web/js_messaging:java_script_feature_util",
    "//ios/web/js_messaging:web_view_js_utils",
    "//ios/web/navigation",
    "//ios/web/navigation:core",
    "//ios/web/navigation:navigation_manager_util",
    "//ios/web/navigation:wk_navigation_util",
    "//ios/web/net",
    "//ios/web/public",
    "//ios/web/public/annotations",
    "//ios/web/public/download",
    "//ios/web/public/find_in_page",
    "//ios/web/public/js_messaging",
    "//ios/web/public/permissions",
    "//ios/web/public/security",
    "//ios/web/public/webui",
    "//ios/web/security",
    "//ios/web/session",
    "//ios/web/util",
    "//ios/web/web_state:data_controls",
    "//ios/web/web_state:user_interaction",
    "//ios/web/web_state:web_state_impl_header",
    "//ios/web/web_state:web_view_internal_creation_util",
    "//ios/web/web_state:web_view_pass_key",
    "//ios/web/web_state/ui:wk_web_view_configuration_provider",
    "//ios/web/webui",
    "//net",
    "//services/metrics/public/cpp:ukm_builders",
    "//ui/base",
    "//url",
  ]

  if (!ios_is_app_extension) {
    deps += [ "//ios/web/common:uikit" ]
  }

  sources = [
    "crw_content_view.h",
    "crw_media_capture_permission_request.h",
    "crw_media_capture_permission_request.mm",
    "crw_touch_tracking_recognizer.mm",
    "crw_viewport_insets_animator.h",
    "crw_viewport_insets_animator.mm",
    "crw_web_controller.mm",
    "crw_web_controller_container_view.h",
    "crw_web_controller_container_view.mm",
    "crw_web_request_controller.h",
    "crw_web_request_controller.mm",
    "crw_web_view_content_view.h",
    "crw_web_view_content_view.mm",
    "crw_web_view_proxy_impl.h",
    "crw_web_view_proxy_impl.mm",
    "crw_web_view_scroll_view_delegate_proxy.h",
    "crw_web_view_scroll_view_delegate_proxy.mm",
    "crw_web_view_scroll_view_proxy+internal.h",
    "crw_web_view_scroll_view_proxy.mm",
    "crw_wk_ui_handler.h",
    "crw_wk_ui_handler.mm",
    "crw_wk_ui_handler_delegate.h",
  ]
}

source_set("web_controller_header") {
  sources = [
    "crw_touch_tracking_recognizer.h",
    "crw_web_controller.h",
  ]

  deps = [
    ":crw_web_view_navigation_proxy",
    "//ios/web/web_state:web_view_pass_key",
  ]

  public_deps = [ "//base" ]
}

source_set("web_view_handler") {
  sources = [
    "crw_web_view_handler.h",
    "crw_web_view_handler.mm",
    "crw_web_view_handler_delegate.h",
  ]
}

source_set("crw_web_view_navigation_proxy") {
  sources = [ "crw_web_view_navigation_proxy.h" ]

  deps = [ "//ios/third_party/webkit" ]
}

source_set("crw_context_menu_controller") {
  deps = [
    ":buildflags",
    ":wk_web_view_configuration_provider",
    "//base",
    "//ios/web/common",
    "//ios/web/js_features/context_menu",
    "//ios/web/js_messaging",
    "//ios/web/public",
    "//ios/web/public/js_messaging",
    "//ios/web/web_state:web_state_impl_header",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]

  sources = [
    "crw_context_menu_controller.h",
    "crw_context_menu_controller.mm",
    "crw_context_menu_element_fetcher.h",
    "crw_context_menu_element_fetcher.mm",
    "crw_html_element_fetch_request.h",
    "crw_html_element_fetch_request.mm",
  ]
}

buildflag_header("buildflags") {
  header = "buildflags.h"
  flags = [ "IOS_USE_BE_DEFERRED_CONTEXT_MENU=$use_be_deferred_context_menu" ]
}

source_set("wk_web_view_configuration_provider_header") {
  deps = [ "//base" ]
  sources = [ "wk_web_view_configuration_provider.h" ]
}

source_set("wk_web_view_configuration_provider") {
  public_deps = [ ":wk_web_view_configuration_provider_header" ]
  deps = [
    "//base",
    "//components/safe_browsing/core/common",
    "//ios/components/security_interstitials/https_only_mode:feature",
    "//ios/public/provider/web:cobalt",
    "//ios/third_party/webkit",
    "//ios/web/common",
    "//ios/web/js_features/window_error",
    "//ios/web/js_messaging",
    "//ios/web/js_messaging:java_script_feature",
    "//ios/web/js_messaging:java_script_feature_util",
    "//ios/web/public",
    "//ios/web/webui",
  ]

  sources = [
    "wk_content_rule_list_provider.h",
    "wk_content_rule_list_provider.mm",
    "wk_content_rule_list_util.h",
    "wk_content_rule_list_util.mm",
    "wk_web_view_configuration_provider.mm",
  ]
}
