# 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.

import("//components/signin/features.gni")

source_set("profiles") {
  sources = [ "profile_error_dialog.h" ]
  public_deps = []

  if (!is_android) {
    sources += [
      "avatar_badge_types.h",
      "profile_colors_util.h",
      "profile_view_utils.h",
    ]

    if (is_chrome_branded) {
      sources += [ "//chrome/browser/internal/profiles/profile_view_avatar_decoration_specs_branded.h" ]
    } else {
      sources += [ "profile_view_avatar_decoration_specs.h" ]
    }

    public_deps += [
      "//base",
      "//build:branding_buildflags",
      "//chrome/browser/profiles:profile_util",
      "//chrome/browser/ui/color:color_headers",
      "//skia",
    ]
  }

  if (is_win || is_mac || is_linux) {
    sources += [
      "profile_customization_synced_theme_waiter.h",
      "profile_customization_util.h",
      "profile_picker.h",
    ]

    public_deps += [
      "//chrome/browser/themes",
      "//components/signin/public/identity_manager",
      "//components/sync/service",
      "//url",
    ]
  }

  if (enable_dice_support || is_chromeos) {
    sources += [ "batch_upload_ui_delegate.h" ]
    public_deps += [ "//chrome/browser/profiles/batch_upload" ]
  }
}

source_set("impl") {
  sources = [ "profile_error_dialog.cc" ]
  deps = [
    ":profiles",
    "//chrome/browser/feedback",
    "//chrome/browser/ui:incognito_allowed_url",
    "//chrome/browser/ui:simple_message_box_headers",
  ]
  public_deps = []

  if (!is_android) {
    sources += [
      "profile_colors_util.cc",
      "profile_view_utils.cc",
    ]

    deps += [
      "//chrome/app:command_ids",
      "//chrome/browser:browser_process",
      "//chrome/browser/new_tab_page/chrome_colors:generate_chrome_colors_info",
      "//chrome/browser/prefs",
      "//chrome/browser/profiles:profile_manager",
      "//chrome/browser/signin",
      "//chrome/browser/subscription_eligibility",
      "//chrome/browser/sync",
      "//chrome/browser/themes",
      "//chrome/browser/ui:layout_constants",
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/browser_window",
      "//chrome/browser/ui/color:color_headers",
      "//chrome/browser/ui/dialogs",
      "//chrome/browser/ui/navigator",
      "//chrome/browser/ui/toolbar",
      "//chrome/browser/ui/web_applications",
      "//chrome/common/themes:autogenerated_theme_util",
      "//components/user_prefs",
    ]
  }

  if (is_win || is_mac || is_linux) {
    sources += [
      "profile_customization_synced_theme_waiter.cc",
      "profile_customization_util.cc",
      "profile_picker.cc",
    ]
    deps += [
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/startup",
    ]

    if (enable_dice_support) {
      sources += [
        "signin_intercept_first_run_experience_dialog.cc",
        "signin_intercept_first_run_experience_dialog.h",
      ]

      deps += [
        "//chrome/browser/ui:chrome_pages",
        "//chrome/browser/ui/views/profiles:profile_management_types",
        "//chrome/browser/ui/webui/signin",
        "//chrome/browser/ui/webui/signin:login_ui_service",

        # TODO(crbug.com/430804948): This dependency is here because of
        # signin_intercept_first_run_experience_dialog.h listed above - see
        # comment in :profiles above.
        "//chrome/browser/ui/signin",
        "//chrome/browser/ui/webui/signin:profile",
      ]
    }
  }

  if (enable_dice_support || is_chromeos) {
    sources += [ "batch_upload_ui_delegate.cc" ]
  }

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

source_set("test_support") {
  sources = []
  public_deps = []

  if (!is_android) {
    sources += [ "profile_ui_test_utils.h" ]
    public_deps += [
      "//base",
      "//url",
    ]
    if (!is_chromeos) {
      public_deps += [ "//chrome/browser/ui/webui/signin:profile" ]
    }
  }
}

source_set("unit_tests") {
  testonly = true
  sources = []
  deps = []

  if (!is_android) {
    sources += [ "profile_view_utils_unittest.cc" ]
    deps = [
      ":profiles",
      "//chrome/browser/prefs",
      "//chrome/test:test_support",
      "//components/account_id",
      "//components/policy/core/common:common_constants",
      "//content/test:test_support",
      "//testing/gtest",
    ]

    if (!is_chromeos) {
      sources += [
        "profile_colors_util_unittest.cc",
        "profile_customization_synced_theme_waiter_unittest.cc",
      ]
      deps += [
        "//chrome/browser/new_tab_page/chrome_colors:generate_chrome_colors_info",
        "//ui/native_theme:test_support",
      ]
    }
  }

  if (is_win || is_mac || is_linux) {
    sources += [
      "profile_customization_util_unittest.cc",
      "profile_picker_unittest.cc",
    ]
    deps += [
      "//chrome/browser/ui:ui_features",
      "//chrome/browser/ui/startup",
    ]
  }
}

source_set("browser_tests") {
  testonly = true
  defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ]
  sources = []
  deps = [ "//chrome/browser/ui:simple_message_box_internal" ]

  if (!is_android) {
    sources += [ "profile_error_browsertest.cc" ]
    deps += [
      "//base",
      "//base/test:test_support",
      "//chrome/browser/ui/tabs:tab_strip",
      "//chrome/common:constants",
      "//chrome/common:non_code_constants",
      "//chrome/test:test_support",
      "//chrome/test:test_support_ui",
      "//chrome/test/user_education:impl",
      "//content/test:test_support",
    ]

    if (enable_dice_support) {
      sources +=
          [ "signin_intercept_first_run_experience_dialog_browsertest.cc" ]
      deps += [
        # TODO(crbug.com/430804948): Not depend on it when
        # `signin_intercept_first_run_experience_dialog.h` gets built off of
        # :profiles.
        ":impl",
        "//chrome/browser/policy:test_support",
        "//chrome/browser/sync",
        "//chrome/browser/ui/browser_window",
        "//chrome/browser/ui/signin",
        "//chrome/browser/ui/views/profiles:avatar_toolbar_button",
        "//chrome/browser/ui/webui/signin",
        "//chrome/browser/ui/webui/signin:login_ui_service",
        "//chrome/browser/ui/webui/signin:test_support_ui",
      ]
    }
  }

  if (!is_android) {
    deps += [ "//chrome/browser/signin:signin_browser_test_base" ]
  }
}
