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

component("user_manager") {
  sources = [
    "user_info.cc",
    "user_info.h",
    "user_info_impl.cc",
    "user_info_impl.h",
    "user_manager_export.h",
    "user_names.cc",
    "user_names.h",
    "user_type.h",
  ]

  public_deps = [
    "//base",
    "//components/account_id",
    "//ui/gfx",
  ]

  deps = [ "//google_apis" ]

  defines = [ "USER_MANAGER_IMPLEMENTATION" ]

  if (is_chromeos) {
    sources += [
      "known_user.cc",
      "known_user.h",
      "remove_user_delegate.h",
      "scoped_user_manager.cc",
      "scoped_user_manager.h",
      "user.cc",
      "user.h",
      "user_image/user_image.cc",
      "user_image/user_image.h",
      "user_manager.cc",
      "user_manager.h",
      "user_manager_base.cc",
      "user_manager_base.h",
    ]

    deps += [
      "//components/prefs",
      "//skia",
      "//url",
    ]
  }
}

if (is_chromeos) {
  source_set("test_support") {
    testonly = true
    sources = [
      "fake_user_manager.cc",
      "fake_user_manager.h",
    ]

    public_deps = [
      ":user_manager",
      "//base",
      "//components/account_id",
    ]

    deps = [ "//chromeos/constants" ]
  }

  source_set("unit_tests") {
    testonly = true
    sources = [ "user_unittest.cc" ]
    deps = [
      ":user_manager",
      "//components/account_id",
      "//testing/gtest",
    ]
  }
}
