# 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("container_mediator") {
  sources = [
    "gemini_container_mediator.h",
    "gemini_container_mediator.mm",
    "gemini_container_mediator_event_handler.h",
  ]
  public_deps = [
    "//ios/chrome/browser/assistant/coordinator:commands",
    "//ios/chrome/browser/assistant/ui:detent",
    "//ios/chrome/browser/intelligence/bwg/model",
    "//ios/chrome/browser/intelligence/bwg/model:gateway_manager",
    "//ios/chrome/browser/intelligence/bwg/ui",
  ]
  deps = [
    "//base",
    "//components/feature_engagement/public",
    "//components/prefs",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/assistant/ui",
    "//ios/chrome/browser/feature_engagement/model",
    "//ios/chrome/browser/intelligence/actor/model",
    "//ios/chrome/browser/intelligence/bwg/metrics",
    "//ios/chrome/browser/intelligence/bwg/model:config",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service_factory",
    "//ios/chrome/browser/intelligence/bwg/model:page_context",
    "//ios/chrome/browser/intelligence/bwg/model:tab_helper",
    "//ios/chrome/browser/intelligence/bwg/utils:constants",
    "//ios/chrome/browser/intelligence/bwg/utils:feature_availability",
    "//ios/chrome/browser/intelligence/bwg/utils:prefs",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/intelligence/zero_state_suggestions",
    "//ios/chrome/browser/intelligence/zero_state_suggestions/ui",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/browser",
    "//ios/chrome/browser/shared/model/prefs:pref_names",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/web_state_list",
    "//ios/chrome/browser/shared/public/commands",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/signin/model:authentication_service",
    "//ios/chrome/browser/signin/model:authentication_service_factory",
    "//ios/chrome/browser/url_loading/model",
    "//ios/public/provider/chrome/browser/bwg:gemini_api",
    "//ios/web/public",
    "//ui/base",
  ]
}

source_set("coordinator") {
  sources = [
    "gemini_container_coordinator.h",
    "gemini_container_coordinator.mm",
    "gemini_entry_flow_coordinator.h",
    "gemini_entry_flow_coordinator.mm",
    "gemini_first_run_coordinator.h",
    "gemini_first_run_coordinator.mm",
    "gemini_first_run_mediator.h",
    "gemini_first_run_mediator.mm",
    "gemini_first_run_mediator_delegate.h",
  ]
  deps = [
    ":container_mediator",
    "//base",
    "//components/feature_engagement/public",
    "//components/prefs",
    "//components/signin/public/base",
    "//components/variations/service",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/assistant/coordinator:commands",
    "//ios/chrome/browser/assistant/ui",
    "//ios/chrome/browser/assistant/ui:detent",
    "//ios/chrome/browser/authentication/account_menu/coordinator",
    "//ios/chrome/browser/authentication/account_menu/public",
    "//ios/chrome/browser/authentication/ui_bundled:continuation",
    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_headers",
    "//ios/chrome/browser/feature_engagement/model",
    "//ios/chrome/browser/fullscreen/ui_bundled",
    "//ios/chrome/browser/intelligence/bwg/metrics",
    "//ios/chrome/browser/intelligence/bwg/model",
    "//ios/chrome/browser/intelligence/bwg/model:browser_agent",
    "//ios/chrome/browser/intelligence/bwg/model:config",
    "//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/bwg/ui",
    "//ios/chrome/browser/intelligence/bwg/utils:availability",
    "//ios/chrome/browser/intelligence/bwg/utils:constants",
    "//ios/chrome/browser/intelligence/bwg/utils:feature_availability",
    "//ios/chrome/browser/intelligence/bwg/utils:prefs",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/intelligence/proto_wrappers",
    "//ios/chrome/browser/intelligence/zero_state_suggestions",
    "//ios/chrome/browser/intelligence/zero_state_suggestions/ui",
    "//ios/chrome/browser/promos_manager/coordinator:promos",
    "//ios/chrome/browser/promos_manager/model",
    "//ios/chrome/browser/promos_manager/model:constants",
    "//ios/chrome/browser/shared/coordinator/chrome_coordinator",
    "//ios/chrome/browser/shared/coordinator/scene:observing_scene_agent",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/browser",
    "//ios/chrome/browser/shared/model/prefs:pref_names",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/public/commands",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/shared/public/snackbar",
    "//ios/chrome/browser/signin/model",
    "//ios/chrome/browser/signin/model:authentication_service",
    "//ios/chrome/browser/signin/model:authentication_service_factory",
    "//ios/public/provider/chrome/browser/bwg:gemini_api",
    "//ios/web/public",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "gemini_container_mediator_unittest.mm",
    "gemini_first_run_coordinator_unittest.mm",
  ]

  deps = [
    ":container_mediator",
    ":coordinator",
    "//base/test:test_support",
    "//components/autofill/core/common",
    "//components/feature_engagement/public",
    "//components/feature_engagement/test:test_support",
    "//components/prefs",
    "//components/prefs:test_support",
    "//components/signin/public/identity_manager:test_support",
    "//components/sync:test_support",
    "//components/sync_preferences:test_support",
    "//ios/chrome/app:app_internal",
    "//ios/chrome/app/application_delegate:app_state",
    "//ios/chrome/app/application_delegate:test_support",
    "//ios/chrome/browser/feature_engagement/model",
    "//ios/chrome/browser/fullscreen/ui_bundled/test",
    "//ios/chrome/browser/intelligence/bwg/metrics",
    "//ios/chrome/browser/intelligence/bwg/model",
    "//ios/chrome/browser/intelligence/bwg/model:browser_agent",
    "//ios/chrome/browser/intelligence/bwg/model:config",
    "//ios/chrome/browser/intelligence/bwg/model:gemini_service_factory",
    "//ios/chrome/browser/intelligence/bwg/model:tab_helper",
    "//ios/chrome/browser/intelligence/bwg/ui",
    "//ios/chrome/browser/intelligence/bwg/utils:constants",
    "//ios/chrome/browser/intelligence/bwg/utils:test_support",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/optimization_guide/model",
    "//ios/chrome/browser/optimization_guide/model:unit_tests",
    "//ios/chrome/browser/promos_manager/model:constants",
    "//ios/chrome/browser/promos_manager/model:test_support",
    "//ios/chrome/browser/shared/coordinator/scene:scene_state_header",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/browser",
    "//ios/chrome/browser/shared/model/browser/test:test_support",
    "//ios/chrome/browser/shared/model/prefs:browser_prefs",
    "//ios/chrome/browser/shared/model/prefs:pref_names",
    "//ios/chrome/browser/shared/model/profile/test",
    "//ios/chrome/browser/shared/public/commands",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/signin/model",
    "//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/public/provider/chrome/browser/bwg:gemini_api",
    "//ios/web/public/test",
    "//third_party/ocmock",
  ]
}
