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

import("//ios/build/config.gni")
import("//ios/features.gni")
import("//ios/web/public/js_messaging/optimize_ts.gni")

source_set("user_population_helper") {
  sources = [
    "user_population_helper.h",
    "user_population_helper.mm",
  ]
  deps = [
    "//components/prefs",
    "//components/safe_browsing/core/browser",
    "//components/safe_browsing/core/browser/sync",
    "//components/signin/public/identity_manager",
    "//components/sync/service",
    "//ios/chrome/browser/policy/model",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/signin/model",
    "//ios/chrome/browser/sync/model",
  ]
}

source_set("verdict_cache_manager_factory") {
  sources = [
    "verdict_cache_manager_factory.h",
    "verdict_cache_manager_factory.mm",
  ]
  deps = [
    "//base",
    "//components/keyed_service/core",
    "//components/keyed_service/ios",
    "//components/prefs",
    "//components/safe_browsing/core/browser:verdict_cache_manager",
    "//components/safe_browsing/core/browser/sync",
    "//components/sync/service",
    "//ios/chrome/browser/content_settings/model",
    "//ios/chrome/browser/history/model",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/profile:profile_keyed_service_factory",
    "//ios/chrome/browser/sync/model",
  ]
}

source_set("model") {
  sources = [
    "chrome_enterprise_url_lookup_service_factory.h",
    "chrome_enterprise_url_lookup_service_factory.mm",
    "chrome_password_protection_service.h",
    "chrome_password_protection_service.mm",
    "chrome_password_protection_service_factory.h",
    "chrome_password_protection_service_factory.mm",
    "hash_realtime_service_factory.h",
    "hash_realtime_service_factory.mm",
    "input_event_observer.h",
    "ohttp_key_service_factory.h",
    "ohttp_key_service_factory.mm",
    "password_protection_java_script_feature.h",
    "password_protection_java_script_feature.mm",
    "real_time_url_lookup_service_factory.h",
    "real_time_url_lookup_service_factory.mm",
    "safe_browsing_blocking_page.h",
    "safe_browsing_blocking_page.mm",
    "safe_browsing_client_factory.h",
    "safe_browsing_client_factory.mm",
    "safe_browsing_client_impl.h",
    "safe_browsing_client_impl.mm",
    "safe_browsing_helper_factory.h",
    "safe_browsing_helper_factory.mm",
    "safe_browsing_metrics_collector_factory.h",
    "safe_browsing_metrics_collector_factory.mm",
    "v5_get_hash_protocol_manager_factory.h",
    "v5_get_hash_protocol_manager_factory.mm",
    "v5_search_hashes_cache_factory.h",
    "v5_search_hashes_cache_factory.mm",
  ]

  public_deps = [
    ":user_population_helper",
    ":verdict_cache_manager_factory",
  ]

  deps = [
    ":password_protection_ts",
    "//base",
    "//components/application_locale_storage",
    "//components/enterprise/connectors/core",
    "//components/feature_engagement/public",
    "//components/feature_engagement/public:feature_constants",
    "//components/keyed_service/core",
    "//components/keyed_service/ios",
    "//components/omnibox/common",
    "//components/optimization_guide/core",
    "//components/password_manager/core/browser",
    "//components/password_manager/core/browser/password_store:password_store_interface",
    "//components/password_manager/core/browser/ui",
    "//components/prefs",
    "//components/safe_browsing/core/browser",
    "//components/safe_browsing/core/browser:safe_browsing_metrics_collector",
    "//components/safe_browsing/core/browser:verdict_cache_manager",
    "//components/safe_browsing/core/browser/db:v4_protocol_manager_util",
    "//components/safe_browsing/core/browser/db:v5_get_hash_protocol_manager",
    "//components/safe_browsing/core/browser/db:v5_search_hashes_cache",
    "//components/safe_browsing/core/browser/hashprefix_realtime:hash_realtime_service",
    "//components/safe_browsing/core/browser/password_protection:password_protection_metrics_util",
    "//components/safe_browsing/core/browser/realtime:enterprise_url_lookup_service",
    "//components/safe_browsing/core/browser/realtime:url_lookup_service",
    "//components/safe_browsing/core/browser/sync",
    "//components/safe_browsing/core/common",
    "//components/safe_browsing/core/common:features",
    "//components/safe_browsing/core/common:safe_browsing_prefs",
    "//components/safe_browsing/core/common/hashprefix_realtime:hash_realtime_utils",
    "//components/safe_browsing/core/common/phishing_classifier",
    "//components/safe_browsing/core/common/proto:client_model_proto",
    "//components/safe_browsing/core/common/proto:csd_proto",
    "//components/safe_browsing/ios/browser:allow_list",
    "//components/safe_browsing/ios/browser/password_protection",
    "//components/safe_browsing/ios/browser/web_ui",
    "//components/security_interstitials/core",
    "//components/security_interstitials/core:unsafe_resource",
    "//components/signin/public/identity_manager",
    "//components/strings",
    "//components/sync/base",
    "//components/sync/protocol",
    "//components/sync/service",
    "//components/sync_user_events",
    "//components/variations/service",
    "//ios/chrome/browser/content_settings/model",
    "//ios/chrome/browser/enterprise/connectors",
    "//ios/chrome/browser/enterprise/connectors:util",
    "//ios/chrome/browser/enterprise/connectors/reporting",
    "//ios/chrome/browser/feature_engagement/model",
    "//ios/chrome/browser/history/model",
    "//ios/chrome/browser/optimization_guide/model",
    "//ios/chrome/browser/passwords/model:store_factory",
    "//ios/chrome/browser/policy/model",
    "//ios/chrome/browser/prerender/model",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/profile:profile_keyed_service_factory",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/signin/model",
    "//ios/chrome/browser/sync/model",
    "//ios/components/security_interstitials",
    "//ios/components/security_interstitials/safe_browsing",
    "//ios/components/security_interstitials/safe_browsing:util",
    "//ios/web/public",
    "//ios/web/public/js_messaging",
    "//ios/web/public/navigation",
    "//ios/web/public/thread",
    "//services/network/public/cpp",
    "//ui/base",
    "//url",
  ]
}

optimize_ts("password_protection_ts") {
  visibility = [ ":model" ]

  sources = [ "resources/password_protection.ts" ]
  deps = [ "//ios/web/public/js_messaging:util_scripts" ]
}

source_set("infobar_delegate") {
  sources = [
    "enhanced_safe_browsing_infobar_delegate.h",
    "enhanced_safe_browsing_infobar_delegate.mm",
  ]

  deps = [
    "//components/infobars/core",
    "//components/strings",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/shared/public/commands",
    "//ui/base",
  ]
}

source_set("eg2_tests") {
  configs += [ "//build/config/ios:xctest_config" ]
  testonly = true
  sources = [
    "password_protection_egtest.mm",
    "safe_browsing_egtest.mm",
  ]
  deps = [
    "//base",
    "//components/enterprise/common/proto:browser_events_proto",
    "//components/enterprise/common/proto:chrome_reporting_entity",
    "//components/enterprise/common/proto:upload_request_response",
    "//components/enterprise/connectors/core",
    "//components/enterprise/connectors/core:test_support",
    "//components/policy/core/common:common_constants",
    "//components/safe_browsing/core/common",
    "//components/safe_browsing/core/common:safe_browsing_prefs",
    "//components/strings",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/bookmarks/model:bookmark_storage_type",
    "//ios/chrome/browser/bookmarks/test:eg_test_support+eg2",
    "//ios/chrome/browser/infobars/ui_bundled/banners:public",
    "//ios/chrome/browser/metrics/model:eg_test_support+eg2",
    "//ios/chrome/browser/passwords/model:eg_test_support+eg2",
    "//ios/chrome/browser/passwords/password_breach/public",
    "//ios/chrome/browser/settings/ui_bundled/privacy:privacy_constants",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/common/ui/elements:form_input_accessory",
    "//ios/chrome/test:eg_test_support+eg2",
    "//ios/chrome/test/earl_grey:eg_test_support+eg2",
    "//ios/testing/earl_grey:eg_test_support+eg2",
    "//ios/testing/earl_grey:launch_configuration",
    "//ios/web/common:features",
    "//ios/web/public/test:element_selector",
    "//net:test_support",
    "//ui/base",
  ]
  frameworks = [ "UIKit.framework" ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "//components/safe_browsing/ios/browser/web_ui/safe_browsing_ios_ui_handler_unittest.mm",
    "chrome_enterprise_url_lookup_service_factory_unittest.mm",
    "chrome_password_protection_service_unittest.mm",
    "hash_realtime_service_factory_unittest.mm",
    "ohttp_key_service_factory_unittest.mm",
    "password_protection_java_script_feature_unittest.mm",
    "real_time_url_lookup_service_factory_unittest.mm",
    "safe_browsing_blocking_page_unittest.mm",
    "safe_browsing_client_factory_unittest.mm",
    "safe_browsing_client_impl_unittest.mm",
    "v5_get_hash_protocol_manager_factory_unittest.mm",
    "v5_search_hashes_cache_factory_unittest.mm",
    "verdict_cache_manager_factory_unittest.mm",
  ]

  deps = [
    ":model",
    "//base",
    "//base/test:test_support",
    "//components/enterprise:test_support",
    "//components/enterprise/connectors/core",
    "//components/optimization_guide/core:prediction",
    "//components/password_manager/core/browser",
    "//components/password_manager/core/browser:test_support",
    "//components/policy/core/common:common_constants",
    "//components/prefs:test_support",
    "//components/safe_browsing/core/browser",
    "//components/safe_browsing/core/browser:token_fetcher",
    "//components/safe_browsing/core/browser:verdict_cache_manager",
    "//components/safe_browsing/core/browser/db:v5_get_hash_protocol_manager",
    "//components/safe_browsing/core/browser/db:v5_search_hashes_cache",
    "//components/safe_browsing/core/browser/password_protection:password_protection_metrics_util",
    "//components/safe_browsing/core/browser/realtime:enterprise_url_lookup_service",
    "//components/safe_browsing/core/browser/realtime:url_lookup_service",
    "//components/safe_browsing/core/browser/realtime:url_lookup_service_base",
    "//components/safe_browsing/core/browser/sync",
    "//components/safe_browsing/core/common",
    "//components/safe_browsing/core/common:safe_browsing_prefs",
    "//components/safe_browsing/core/common/fbs:client_model",
    "//components/safe_browsing/core/common/hashprefix_realtime:hash_realtime_utils",
    "//components/safe_browsing/core/common/phishing_classifier",
    "//components/safe_browsing/core/common/proto:client_model_proto",
    "//components/safe_browsing/core/common/proto:realtimeapi_proto",
    "//components/safe_browsing/ios/browser:allow_list",
    "//components/safe_browsing/ios/browser/web_ui",
    "//components/security_interstitials/core",
    "//components/security_interstitials/core:unsafe_resource",
    "//components/signin/public/identity_manager",
    "//components/signin/public/identity_manager:test_support",
    "//components/strings",
    "//components/sync_user_events:test_support",
    "//components/test:safe_browsing_test_bundle_data",
    "//components/unified_consent",
    "//ios/chrome/browser/enterprise/connectors",
    "//ios/chrome/browser/history/model",
    "//ios/chrome/browser/passwords/model",
    "//ios/chrome/browser/prerender/model",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/profile/test",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/sync/model",
    "//ios/chrome/test:test_support",
    "//ios/components/security_interstitials/safe_browsing",
    "//ios/components/security_interstitials/safe_browsing:test_support",
    "//ios/web/public",
    "//ios/web/public/js_messaging",
    "//ios/web/public/test",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/base",
    "//url",
  ]
}
