# 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")

android_library("java") {
  sources = [
    "android/java/src/org/chromium/chrome/browser/settings/ChromeManagedPreferenceDelegate.java",
    "android/java/src/org/chromium/chrome/browser/settings/FragmentSettingsLauncher.java",
    "android/java/src/org/chromium/chrome/browser/settings/SettingsLauncher.java",
  ]
  deps = [
    "//chrome/browser/preferences:java",
    "//chrome/browser/profiles/android:java",
    "//components/browser_ui/settings/android:java",
    "//components/prefs/android:java",
    "//components/user_prefs/android:java",
    "//third_party/android_deps:androidx_annotation_annotation_java",
    "//third_party/android_deps:androidx_fragment_fragment_java",
  ]
}

android_library("javatests") {
  testonly = true

  sources = [
    "android/java/src/org/chromium/chrome/browser/settings/ChromeBasePreferenceTest.java",
    "android/java/src/org/chromium/chrome/browser/settings/ChromeImageViewPreferenceTest.java",
    "android/java/src/org/chromium/chrome/browser/settings/DummySettingsForTest.java",
    "android/java/src/org/chromium/chrome/browser/settings/ManagedPreferencesUtilsTest.java",
  ]

  deps = [
    ":java",
    ":test_support_java",
    "//chrome/android:chrome_java",
    "//chrome/test/android:chrome_java_test_support",
    "//components/browser_ui/settings/android:java",
    "//content/public/test/android:content_java_test_support",
    "//third_party/android_deps:android_support_v7_appcompat_java",
    "//third_party/android_deps:androidx_preference_preference_java",
    "//third_party/android_deps:androidx_test_runner_java",
    "//third_party/android_deps:espresso_java",
    "//third_party/android_support_test_runner:rules_java",
    "//third_party/android_support_test_runner:runner_java",
    "//third_party/guava:guava_android_java",
    "//third_party/hamcrest:hamcrest_java",
    "//third_party/junit",
  ]
}

android_library("test_support_java") {
  testonly = true

  sources = [ "android/java/src/org/chromium/chrome/browser/settings/SettingsActivityTestRule.java" ]

  deps = [
    "//base:base_java",
    "//chrome/android:chrome_java",
    "//chrome/browser/settings:java",
    "//content/public/test/android:content_java_test_support",
    "//third_party/android_deps:androidx_preference_preference_java",
    "//third_party/android_support_test_runner:rules_java",
    "//third_party/android_support_test_runner:runner_java",
    "//third_party/hamcrest:hamcrest_java",
    "//third_party/junit",
  ]
}
