# Copyright 2025 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("constants") {
  sources = [
    "gemini_constants.h",
    "gemini_constants.mm",
    "gemini_entry_flow_result.h",
  ]
}

source_set("prefs") {
  sources = [
    "gemini_prefs.h",
    "gemini_prefs.mm",
  ]
  deps = [
    "//base",
    "//components/pref_registry",
    "//components/prefs",
    "//ios/chrome/browser/intelligence/bwg/utils:constants",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/shared/model/prefs:pref_names",
  ]
}

source_set("feature_availability") {
  sources = [
    "gemini_feature_availability.h",
    "gemini_feature_availability.mm",
  ]
  deps = [
    "//components/signin/public/identity_manager",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/signin/model",
  ]
}

source_set("availability") {
  sources = [
    "gemini_availability.h",
    "gemini_availability.mm",
  ]
  public_deps = [ "//ios/chrome/browser/intelligence/bwg/metrics" ]
  deps = [
    ":constants",
    ":feature_availability",
    ":prefs",
    "//components/country_codes",
    "//components/prefs",
    "//components/regional_capabilities",
    "//components/variations/service",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service_factory",
    "//ios/chrome/browser/intelligence/bwg/model:tab_helper",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/signin/model:authentication_service",
    "//ios/web/public",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "gemini_test_utils.h",
    "gemini_test_utils.mm",
  ]
  public_deps = [ "//components/signin/public/identity_manager" ]
  deps = [
    "//base",
    "//components/signin/public/base",
    "//components/signin/public/identity_manager:test_support",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/signin/model",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "gemini_availability_unittest.mm",
    "gemini_feature_availability_unittest.mm",
    "gemini_prefs_unittest.mm",
  ]
  deps = [
    ":availability",
    ":feature_availability",
    ":prefs",
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//components/signin/public/identity_manager",
    "//components/signin/public/identity_manager:test_support",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service_factory",
    "//ios/chrome/browser/intelligence/bwg/model:tab_helper",
    "//ios/chrome/browser/intelligence/bwg/model:test_support",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/shared/model/profile/test",
    "//ios/chrome/browser/signin/model",
    "//ios/chrome/browser/signin/model:authentication_service",
    "//ios/chrome/browser/signin/model:authentication_service_factory",
    "//ios/chrome/browser/signin/model:test_support",
    "//ios/chrome/browser/sync/model",
    "//ios/chrome/browser/sync/model:test_support",
    "//ios/chrome/test:test_support",
    "//ios/web/public/test",
    "//testing/gtest",
  ]
}
