# Copyright 2019 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("//build/config/android/rules.gni")

java_group("public_java") {
  deps = [
    "factory:public_java",
    "public:public_java",
  ]
}

# Only chrome_all_java and test targets should depend on this internal target.
java_group("internal_java") {
  deps = [
    "factory:internal_java",
    "internal:internal_java",
  ]
}

generate_jni("jni_headers") {
  sources = [
    "internal/java/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryViewBridge.java",
    "internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingComponentBridge.java",
    "public/java/src/org/chromium/chrome/browser/keyboard_accessory/data/UserInfoField.java",
  ]
}

android_library("test_java") {
  testonly = true

  java_files = [
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/AutofillKeyboardAccessoryIntegrationTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingIntegrationTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingTestHelper.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingUiCaptureTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/FakeKeyboard.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryModernViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AddressAccessorySheetViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AddressAccessoryIntegrationTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessorySheetViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/CreditCardAccessoryIntegrationTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessoryIntegrationTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetModernViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AccessorySheetTabViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutViewTest.java",
    "javatests/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabTestHelper.java",
  ]

  deps = [
    "internal:internal_java",
    "public:public_java",
    "//base:base_java",
    "//base:base_java_test_support",
    "//chrome/android:chrome_java",
    "//chrome/android:chrome_test_java",
    "//chrome/android:chrome_test_util_java",
    "//chrome/android/public/profiles:java",
    "//chrome/test/android:chrome_java_test_support",
    "//components/autofill/android:autofill_java",
    "//components/autofill/core/common/mojom:mojo_types_java",
    "//components/feature_engagement/public:public_java",
    "//content/public/android:content_java",
    "//content/public/test/android:content_java_test_support",
    "//net/android:net_java_test_support",
    "//third_party/android_deps:com_android_support_design_java",
    "//third_party/android_deps:com_android_support_recyclerview_v7_java",
    "//third_party/android_support_test_runner:runner_java",
    "//third_party/espresso:espresso_all_java",
    "//third_party/hamcrest:hamcrest_java",
    "//third_party/junit",
    "//ui/android:ui_full_java",
    "//ui/android:ui_utils_java",
  ]
}

junit_binary("keyboard_accessory_junit_tests") {
  testonly = true

  java_files = [
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_component/AccessorySheetControllerTest.java",
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingControllerTest.java",
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/bar_component/KeyboardAccessoryControllerTest.java",
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/AddressAccessorySheetControllerTest.java",
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/sheet_tabs/PasswordAccessorySheetControllerTest.java",
    "junit/src/org/chromium/chrome/browser/keyboard_accessory/tab_layout_component/KeyboardAccessoryTabLayoutControllerTest.java",
  ]

  deps = [
    ":internal_java",
    "//base:base_java_test_support",
    "//base:base_junit_test_support",
    "//chrome/android:chrome_junit_test_support",
    "//chrome/android:chrome_test_util_java",
    "//components/module_installer/android:module_installer_stub_java",
    "//third_party/junit",
    "//third_party/mockito:mockito_java",
  ]
}
