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

import("//ios/web/js_compile.gni")

source_set("passwords") {
  sources = [
    "credential_manager.h",
    "credential_manager.mm",
    "ios_chrome_password_manager_client.h",
    "ios_chrome_password_manager_client.mm",
    "ios_chrome_password_manager_driver.h",
    "ios_chrome_password_manager_driver.mm",
    "ios_chrome_password_manager_infobar_delegate.h",
    "ios_chrome_password_manager_infobar_delegate.mm",
    "ios_chrome_password_manager_setting_migrator_service_factory.cc",
    "ios_chrome_password_manager_setting_migrator_service_factory.h",
    "ios_chrome_password_store_factory.cc",
    "ios_chrome_password_store_factory.h",
    "ios_chrome_save_password_infobar_delegate.h",
    "ios_chrome_save_password_infobar_delegate.mm",
    "ios_chrome_update_password_infobar_delegate.h",
    "ios_chrome_update_password_infobar_delegate.mm",
    "js_credential_manager.h",
    "js_credential_manager.mm",
    "js_password_manager.h",
    "js_password_manager.mm",
    "password_controller.h",
    "password_controller.mm",
    "password_generation_agent.h",
    "password_generation_agent.mm",
    "password_generation_edit_view.h",
    "password_generation_edit_view.mm",
    "password_generation_offer_view.h",
    "password_generation_offer_view.mm",
    "password_generation_prompt_delegate.h",
    "passwords_ui_delegate.h",
    "update_password_infobar_controller.h",
    "update_password_infobar_controller.mm",
  ]
  deps = [
    ":injected_js",
    "//base",
    "//base:i18n",
    "//components/autofill/core/browser",
    "//components/autofill/core/common",
    "//components/autofill/ios/browser",
    "//components/browser_sync",
    "//components/infobars/core",
    "//components/keyed_service/core",
    "//components/keyed_service/ios",
    "//components/password_manager/core/browser",
    "//components/password_manager/core/common",
    "//components/password_manager/sync/browser",
    "//components/prefs",
    "//components/signin/core/browser",
    "//components/strings",
    "//components/sync",
    "//google_apis",
    "//ios/chrome/app/strings",
    "//ios/chrome/app/theme",
    "//ios/chrome/browser",
    "//ios/chrome/browser/autofill",
    "//ios/chrome/browser/browser_state",
    "//ios/chrome/browser/infobars",
    "//ios/chrome/browser/signin",
    "//ios/chrome/browser/sync/glue",
    "//ios/chrome/browser/ui",
    "//ios/chrome/browser/ui/commands",
    "//ios/chrome/browser/ui/elements",
    "//ios/public/provider/chrome/browser",
    "//ios/web",
    "//ui/base",
    "//url",
  ]
  public_deps = [
    ":passwords_generation_utils",
  ]

  allow_circular_includes_from = [ ":passwords_generation_utils" ]
}

source_set("passwords_generation_utils") {
  sources = [
    "password_generation_utils.h",
    "password_generation_utils.mm",
  ]
  deps = [
    "//base:i18n",
    "//ios/chrome/browser/ui",
  ]
  libs = [ "CoreGraphics.framework" ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "credential_manager_js_unittest.mm",
    "credential_manager_unittest.mm",
    "password_controller_js_unittest.mm",
    "password_controller_off_the_record_unittest.mm",
    "password_controller_unittest.mm",
    "password_generation_agent_unittest.mm",
  ]
  deps = [
    ":passwords",
    "//base",
    "//base/test:test_support",
    "//components/autofill/core/common",
    "//components/autofill/ios/browser",
    "//components/password_manager/core/browser",
    "//components/password_manager/core/browser:test_support",
    "//components/password_manager/core/common",
    "//components/prefs",
    "//components/prefs:test_support",
    "//google_apis",
    "//ios/chrome/browser/autofill",
    "//ios/chrome/browser/browser_state:test_support",
    "//ios/chrome/browser/ui/commands",
    "//ios/testing:ocmock_support",
    "//ios/web",
    "//ios/web:test_support",
    "//testing/gtest",
    "//third_party/ocmock",
    "//url",
  ]
}

# TODO(crbug.com/487804): use js_compile_checked instead once the errors have
# been fixed.
js_compile_unchecked("injected_js") {
  visibility = [ ":passwords" ]
  sources = [
    "resources/credential_manager.js",
    "resources/password_controller.js",
  ]
}
