# Copyright 2023 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("scene_state_observer") {
  sources = [ "scene_state_observer.h" ]
  deps = [ ":scene_activation_level" ]
  frameworks = [ "UIKit.framework" ]
}

source_set("observing_scene_agent") {
  sources = [
    "observing_scene_state_agent.h",
    "observing_scene_state_agent.mm",
  ]

  frameworks = [ "UIKit.framework" ]

  public_deps = [
    ":scene_state_header",
    ":scene_state_observer",
  ]
}

source_set("scene_activation_level") {
  sources = [ "scene_activation_level.h" ]
}

source_set("scene_state_header") {
  sources = [
    "connection_information.h",
    "scene_agent.h",
    "scene_controller.h",
    "scene_delegate.h",
    "scene_state.h",
    "scene_state_animator.h",
    "scene_state_prefs.h",
    "scene_ui_provider.h",
  ]
  public_deps = [
    ":scene_activation_level",
    ":scene_state_observer",
    ":url_context",
    "//ios/chrome/app/application_delegate:tab_opening",
    "//ios/chrome/browser/scoped_ui_blocker/ui_bundled:protocols",
    "//ios/chrome/browser/shared/model/web_state_list",
    "//ios/chrome/browser/shared/public/commands",
    "//ios/chrome/browser/window_activities/model",
  ]
}

source_set("scene_state_header_for_otr_profile_deletion") {
  visibility = [
    ":scene",
    "//ios/chrome/app/profile:otr_profile_destroyer_profile_agent",
  ]
  sources = [ "scene_controller+OTRProfileDeletion.h" ]
  deps = [ ":scene_state_header" ]
}

source_set("scene_testing") {
  sources = [ "scene_controller_testing.h" ]
  frameworks = [ "UIKit.framework" ]
  deps = [ ":scene_state_header" ]
}

source_set("task_updater_scene_agent") {
  sources = [
    "task_updater_scene_agent.h",
    "task_updater_scene_agent.mm",
  ]
  deps = [
    ":observing_scene_agent",
    "//ios/chrome/app:tasks_handling_header",
    "//ios/chrome/app/application_delegate:app_state",
    "//ios/chrome/app/profile",
    "//ios/chrome/browser/shared/coordinator/scene:scene_state_header",
    "//ios/chrome/browser/shared/coordinator/scene/state",
    "//ios/chrome/browser/signin/model",
    "//ios/chrome/browser/signin/model:authentication_service",
    "//ios/chrome/browser/signin/model:authentication_service_factory",
  ]
}

source_set("scene") {
  sources = [
    "scene_controller.mm",
    "scene_delegate.mm",
    "scene_state.mm",
    "scene_state_prefs.mm",
  ]

  deps = [
    ":scene_state_header_for_otr_profile_deletion",
    ":scene_testing",
    ":tab_activity_utils",
    ":task_updater_scene_agent",
    "//base",
    "//components/autofill/core/browser",
    "//components/breadcrumbs/core",
    "//components/breadcrumbs/core:status",
    "//components/data_sharing/public",
    "//components/enterprise/idle",
    "//components/feature_engagement/public",
    "//components/infobars/core",
    "//components/policy/core/common",
    "//components/prefs",
    "//components/prefs/ios",
    "//components/previous_session_info",
    "//components/signin/public/base",
    "//components/signin/public/base:signin_switches",
    "//components/signin/public/identity_manager",
    "//components/signin/public/identity_manager/objc",
    "//components/supervised_user/core/browser",
    "//components/supervised_user/core/browser:fetcher",
    "//components/supervised_user/core/browser/proto",
    "//components/url_formatter",
    "//components/version_info",
    "//components/web_resource",
    "//ios/chrome/app",
    "//ios/chrome/app:blocking_scene_commands",
    "//ios/chrome/app:change_profile_commands",
    "//ios/chrome/app:mode",
    "//ios/chrome/app:tasks_handling_header",
    "//ios/chrome/app:tests_hook",
    "//ios/chrome/app/application_delegate:app_state",
    "//ios/chrome/app/application_delegate:startup_information",
    "//ios/chrome/app/application_delegate:tab_opening",
    "//ios/chrome/app/application_delegate:url_opener",
    "//ios/chrome/app/application_delegate:url_opener_params",
    "//ios/chrome/app/profile",
    "//ios/chrome/app/startup",
    "//ios/chrome/app/strings",
    "//ios/chrome/browser/app_store_rating/model",
    "//ios/chrome/browser/app_store_rating/model:features",
    "//ios/chrome/browser/appearance/ui_bundled",
    "//ios/chrome/browser/authentication/age_mismatch_signout/coordinator:scene_agent",
    "//ios/chrome/browser/authentication/signin/fullscreen_promo/model",
    "//ios/chrome/browser/authentication/ui_bundled",
    "//ios/chrome/browser/authentication/ui_bundled:continuation",
    "//ios/chrome/browser/authentication/ui_bundled/change_profile",
    "//ios/chrome/browser/authentication/ui_bundled/enterprise:enterprise_utils",
    "//ios/chrome/browser/authentication/ui_bundled/signin",
    "//ios/chrome/browser/authentication/ui_bundled/signin:features",
    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_screen_provider",
    "//ios/chrome/browser/authentication/ui_bundled/signin/deeplink_signin",
    "//ios/chrome/browser/blocking_overlay/ui_bundled",
    "//ios/chrome/browser/browser_view/ui_bundled",
    "//ios/chrome/browser/browsing_data/model",
    "//ios/chrome/browser/crash_report/model/breadcrumbs",
    "//ios/chrome/browser/credential_provider_promo/ui_bundled:coordinator",
    "//ios/chrome/browser/data_sharing/model",
    "//ios/chrome/browser/default_browser/model",
    "//ios/chrome/browser/default_browser/model:default_browser_interest_signals",
    "//ios/chrome/browser/default_browser/promo/public:features",
    "//ios/chrome/browser/docking_promo/model",
    "//ios/chrome/browser/enterprise/data_protection/coordinator",
    "//ios/chrome/browser/enterprise/model/idle",
    "//ios/chrome/browser/feature_engagement/model",
    "//ios/chrome/browser/first_run/coordinator",
    "//ios/chrome/browser/first_run/model",
    "//ios/chrome/browser/geolocation/model",
    "//ios/chrome/browser/google_one/shared:deep_link",
    "//ios/chrome/browser/incognito_reauth/ui_bundled:incognito_reauth_scene_agent",
    "//ios/chrome/browser/infobars/model",
    "//ios/chrome/browser/intelligence/bwg/coordinator",
    "//ios/chrome/browser/intelligence/bwg/model:tab_helper",
    "//ios/chrome/browser/intelligence/bwg/utils:constants",
    "//ios/chrome/browser/intelligence/bwg/utils:prefs",
    "//ios/chrome/browser/intelligence/features",
    "//ios/chrome/browser/intents/model:user_activity_browser_agent",
    "//ios/chrome/browser/intents/model:user_activity_compatibility_util",
    "//ios/chrome/browser/lens/ui_bundled:lens_entrypoint",
    "//ios/chrome/browser/lens_overlay/model",
    "//ios/chrome/browser/level_up/model",
    "//ios/chrome/browser/main/ui_bundled",
    "//ios/chrome/browser/main/ui_bundled:default_browser_scene_agent",
    "//ios/chrome/browser/main/ui_bundled:incognito_blocker_scene_agent",
    "//ios/chrome/browser/main/ui_bundled:scene",
    "//ios/chrome/browser/metrics/model:tab_usage_recorder_browser_agent",
    "//ios/chrome/browser/ntp/model",
    "//ios/chrome/browser/picture_in_picture/model:scene_agent",
    "//ios/chrome/browser/policy/model",
    "//ios/chrome/browser/policy/model:browser_agent",
    "//ios/chrome/browser/policy/model:policy_util",
    "//ios/chrome/browser/policy/ui_bundled:user_policy_scene_agent",
    "//ios/chrome/browser/policy/ui_bundled/idle:idle_timeout_policy_scene_agent",
    "//ios/chrome/browser/promos_manager/model:factory",
    "//ios/chrome/browser/promos_manager/model:scene_agent",
    "//ios/chrome/browser/promos_manager/public:utils",
    "//ios/chrome/browser/reading_list/model",
    "//ios/chrome/browser/safari_data_import/public",
    "//ios/chrome/browser/scene/coordinator",
    "//ios/chrome/browser/scoped_ui_blocker/ui_bundled",
    "//ios/chrome/browser/screenshot/model",
    "//ios/chrome/browser/sessions/model:session_restoration_service",
    "//ios/chrome/browser/sessions/model:session_restoration_service_factory",
    "//ios/chrome/browser/sessions/model:session_saving",
    "//ios/chrome/browser/settings/ui_bundled:settings_root",
    "//ios/chrome/browser/settings/ui_bundled/sync",
    "//ios/chrome/browser/share_extension/model:agent",
    "//ios/chrome/browser/shared/coordinator/default_browser_promo",
    "//ios/chrome/browser/shared/coordinator/layout_guide:layout_guide_scene_agent",
    "//ios/chrome/browser/shared/coordinator/scene/state",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/paths",
    "//ios/chrome/browser/shared/model/prefs:pref_names",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/profile:utils",
    "//ios/chrome/browser/shared/model/url",
    "//ios/chrome/browser/shared/model/url:constants",
    "//ios/chrome/browser/shared/model/web_state_list",
    "//ios/chrome/browser/shared/model/web_state_list:utils",
    "//ios/chrome/browser/shared/public/commands",
    "//ios/chrome/browser/shared/public/features",
    "//ios/chrome/browser/shared/public/snackbar",
    "//ios/chrome/browser/shared/ui/chrome_overlay_window",
    "//ios/chrome/browser/shared/ui/util",
    "//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:capabilities_types",
    "//ios/chrome/browser/signin/model:constants",
    "//ios/chrome/browser/signin/model:system_identity_manager",
    "//ios/chrome/browser/snapshots/model",
    "//ios/chrome/browser/start_surface/ui_bundled",
    "//ios/chrome/browser/sync/model",
    "//ios/chrome/browser/tab_insertion/model",
    "//ios/chrome/browser/tab_switcher/ui_bundled/tab_grid",
    "//ios/chrome/browser/url_loading/model",
    "//ios/chrome/browser/web_state_list/model/web_usage_enabler",
    "//ios/chrome/browser/whats_new/coordinator/promo",
    "//ios/chrome/common/app_group",
    "//ios/chrome/common/ui/reauthentication",
    "//ios/chrome/common/ui/util",
    "//ios/components/webui:url_constants",
    "//ios/public/provider/chrome/browser/cobalt:cobalt_api",
    "//ios/public/provider/chrome/browser/google_one:google_one_api",
    "//ios/public/provider/chrome/browser/user_feedback:user_feedback_api",
    "//ios/web/common:features",
    "//ios/web/public/js_image_transcoder",
    "//ios/web/public/session/proto",
    "//ui/base",
  ]
  public_deps = [ ":scene_state_header" ]
  allow_circular_includes_from = [
    # TODO(crbug.com/40139309): remove circular dependency.
    "//ios/chrome/browser/settings/ui_bundled/sync",
  ]

  frameworks = [ "UIKit.framework" ]
}

source_set("tab_activity_utils") {
  sources = [
    "tab_activity_utils.h",
    "tab_activity_utils.mm",
  ]
  deps = [
    "//base",
    "//ios/chrome/browser/shared/model/browser",
    "//ios/chrome/browser/shared/model/profile",
    "//ios/chrome/browser/shared/model/web_state_list",
    "//ios/chrome/browser/shared/model/web_state_list:utils",
    "//ios/chrome/browser/window_activities/model",
    "//ios/web/public",
  ]
  frameworks = [ "UIKit.framework" ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "scene_controller_unittest.mm",
    "scene_delegate_unittests.mm",
    "scene_state_prefs_unittest.mm",
    "state/browser_layout_state_unittest.mm",
    "state/scene_layout_state_unittest.mm",
    "task_updater_scene_agent_unittest.mm",
  ]
  deps = [
    ":scene",
    ":scene_state_header",
    ":scene_testing",
    ":task_updater_scene_agent",
    "//base/test:test_support",
    "//components/signin/public/identity_manager:test_support",
    "//components/supervised_user/test_support",
    "//components/sync:test_support",
    "//components/variations",
    "//components/variations:test_support",
    "//ios/chrome/app:app_internal",
    "//ios/chrome/app:tasks_handling",
    "//ios/chrome/app/application_delegate:app_state",
    "//ios/chrome/app/application_delegate:test_support",
    "//ios/chrome/app/profile",
    "//ios/chrome/app/profile:test_utils",
    "//ios/chrome/browser/authentication/ui_bundled/signin:signin_in_progress",
    "//ios/chrome/browser/bookmarks/model",
    "//ios/chrome/browser/enterprise/data_protection/coordinator",
    "//ios/chrome/browser/favicon/model",
    "//ios/chrome/browser/history/model",
    "//ios/chrome/browser/incognito_reauth/ui_bundled:incognito_reauth_scene_agent",
    "//ios/chrome/browser/intents/model:constants",
    "//ios/chrome/browser/intents/model:user_activity_browser_agent",
    "//ios/chrome/browser/main/ui_bundled",
    "//ios/chrome/browser/policy/model:policy_util",
    "//ios/chrome/browser/prerender/model",
    "//ios/chrome/browser/saved_tab_groups/model",
    "//ios/chrome/browser/search_engines/model:template_url_service_factory",
    "//ios/chrome/browser/sessions/model:session_restoration_service_factory",
    "//ios/chrome/browser/sessions/model:test_support",
    "//ios/chrome/browser/shared/coordinator/layout_guide:layout_guide_scene_agent",
    "//ios/chrome/browser/shared/coordinator/scene/state",
    "//ios/chrome/browser/shared/coordinator/scene/state:test_support",
    "//ios/chrome/browser/shared/coordinator/scene/test",
    "//ios/chrome/browser/shared/model/application_context",
    "//ios/chrome/browser/shared/model/browser/test:test_support",
    "//ios/chrome/browser/shared/model/profile/test",
    "//ios/chrome/browser/shared/public/features",
    "//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:fake_system_identity",
    "//ios/chrome/browser/signin/model:fake_system_identity_manager",
    "//ios/chrome/browser/signin/model:test_support",
    "//ios/chrome/browser/sync/model",
    "//ios/chrome/browser/sync/model:test_support",
    "//ios/chrome/browser/url_loading/model:url_loading_params_header",
    "//ios/chrome/common/ui/reauthentication",
    "//ios/chrome/test:test_support",
    "//ios/public/provider/chrome/browser/user_feedback:user_feedback_api",
    "//ios/testing:block_swizzler",
    "//ios/web/public/test",
    "//services/network:test_support",
    "//testing/gtest",
    "//third_party/ocmock",
  ]
}

source_set("url_context") {
  sources = [
    "url_context.h",
    "url_context.mm",
  ]
  deps = [ "//google_apis" ]
  frameworks = [ "UIKit.framework" ]
}
