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

source_set("utils") {
  sources = [ "ios_promos_utils.h" ]

  deps = [
    "//base",
    "//chrome/browser/desktop_to_mobile_promos:utils",
    "//components/desktop_to_mobile_promos",
    "//components/sync_device_info",
  ]
}

if (!is_android) {
  source_set("impl") {
    sources = [ "ios_promos_utils.cc" ]

    deps = [
      ":utils",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/feature_engagement",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/segmentation_platform",
      "//chrome/browser/sync",
      "//chrome/browser/ui",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/views/frame:toolbar_button_provider",
      "//chrome/browser/ui/views/location_bar",
      "//chrome/browser/ui/views/promos",
      "//chrome/browser/ui/views/toolbar",
      "//components/desktop_to_mobile_promos",
      "//components/feature_engagement/public",
      "//components/segmentation_platform/embedder/default_model",
      "//components/segmentation_platform/public",
      "//components/sync/service",
      "//components/sync_preferences/cross_device_pref_tracker",
      "//components/sync_preferences/cross_device_pref_tracker:timestamped_pref_value",
      "//components/sync_preferences/cross_device_pref_tracker/prefs",
    ]
  }

  source_set("controller") {
    sources = [
      "ios_promo_controller.cc",
      "ios_promo_controller.h",
    ]

    deps = [
      ":service",
      ":utils",
      "//chrome/browser:browser_process",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/user_education",
      "//chrome/browser/ui/views/frame",
      "//chrome/browser/ui/views/tabs/groups",
      "//chrome/common:constants",
      "//components/desktop_to_mobile_promos",
      "//components/prefs",
      "//components/sync_device_info",
      "//ui/base/unowned_user_data",
      "//ui/views",
    ]

    public_deps = [ "//chrome/browser:browser_public_dependencies" ]
  }

  source_set("service") {
    sources = [
      "ios_promo_trigger_service.cc",
      "ios_promo_trigger_service.h",
      "ios_promo_trigger_service_factory.cc",
      "ios_promo_trigger_service_factory.h",
    ]

    deps = [
      "//base",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/sharing",
      "//chrome/browser/sync",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/tabs:tab_strip",
      "//components/desktop_to_mobile_promos",
      "//components/keyed_service/core",
      "//components/prefs",
      "//components/sharing_message",
      "//components/sync_device_info",
      "//ui/base",
    ]
  }

  source_set("unit_tests") {
    testonly = true
    sources = [
      "ios_promo_trigger_service_unittest.cc",
      "ios_promos_utils_unittest.cc",
    ]
    deps = [
      ":controller",
      ":impl",
      ":service",
      ":utils",
      "//base/test:test_support",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/sharing",
      "//chrome/browser/sync",
      "//chrome/browser/ui/user_education",
      "//chrome/test:test_support",
      "//components/desktop_to_mobile_promos",
      "//components/segmentation_platform/public",
      "//components/send_tab_to_self",
      "//components/sharing_message",
      "//components/sharing_message:unit_tests",
      "//components/sync/base",
      "//components/sync/protocol",
      "//components/sync_device_info",
      "//components/sync_device_info:test_support",
      "//components/sync_preferences",
      "//components/sync_preferences:features",
      "//components/sync_preferences:test_support",
      "//components/sync_preferences/cross_device_pref_tracker",
      "//components/sync_preferences/cross_device_pref_tracker/prefs",
      "//testing/gtest",
    ]
  }

  source_set("browser_tests") {
    testonly = true
    defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
    sources = [ "ios_promo_controller_browsertest.cc" ]
    deps = [
      ":controller",
      ":service",
      "//base",
      "//base/test:test_support",
      "//chrome/browser:browser_process",
      "//chrome/browser/desktop_to_mobile_promos:utils",
      "//chrome/browser/feature_engagement",
      "//chrome/browser/profiles:profile",
      "//chrome/browser/sync",
      "//chrome/browser/ui",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/views",
      "//chrome/common:constants",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//chrome/test/user_education:impl",
      "//components/desktop_to_mobile_promos",
      "//components/feature_engagement/public",
      "//components/keyed_service/content",
      "//components/prefs",
      "//components/sync:test_support",
      "//components/sync_device_info",
      "//components/sync_device_info:test_support",
      "//components/sync_preferences",
      "//components/sync_preferences:features",
      "//content/test:test_support",
      "//testing/gmock",
      "//testing/gtest",
      "//ui/base",
      "//ui/views",
      "//ui/views:test_support",
    ]
  }
}
