# 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("//build/config/android/config.gni")
import("//chrome/android/chrome_java_sources.gni")
import("//chrome/android/chrome_junit_test_java_sources.gni")
import("//chrome/android/chrome_test_java_sources.gni")
import("//chrome/android/features/autofill_assistant/public/java_sources.gni")
import("//chrome/android/features/tab_ui/tab_management_java_sources.gni")
import("//chrome/android/feed/feed_java_sources.gni")
import("//chrome/android/touchless/touchless_java_sources.gni")
import("//components/feed/features.gni")
import("//components/offline_pages/buildflags/features.gni")
import("//device/vr/buildflags/buildflags.gni")

chrome_java_sources += public_autofill_assistant_java_sources

if (enable_vr) {
  chrome_java_sources += [ "java/src/org/chromium/chrome/browser/component_updater/VrAssetsComponentInstaller.java" ]
}

if (notouch_build) {
  chrome_java_sources += touchless_java_sources
  chrome_test_java_sources += touchless_test_java_sources
  chrome_junit_test_java_sources += touchless_junit_test_java_sources
} else {
  chrome_java_sources += touchess_fallback_java_sources
}

# Only used for testing, should not be shipped to end users.
if (enable_offline_pages_harness) {
  chrome_java_sources += [ "java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java" ]
  chrome_test_java_sources += [ "javatests/src/org/chromium/chrome/browser/offlinepages/OfflinePageSavePageLaterEvaluationTest.java" ]
}

if (enable_feed_in_chrome) {
  chrome_junit_test_java_sources += feed_junit_test_java_sources
  chrome_test_java_sources += feed_test_java_sources
}

chrome_junit_test_java_sources += tab_management_junit_java_sources
chrome_test_java_sources += tab_management_test_java_sources

if (enable_arcore) {
  chrome_java_sources += [
    "java/src/org/chromium/chrome/browser/vr/ArConsentDialog.java",
    "java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java",
    "java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java",
    "java/src/org/chromium/chrome/browser/vr/ArCoreShim.java",
    "java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java",
  ]
}

if (android_sdk_release == "q") {
  chrome_java_sources += [ "geo/java/src/org/chromium/chrome/browser/omnibox/geo/CellInfoDelegate.java" ]
} else {
  chrome_java_sources += [
    "java/src/org/chromium/chrome/browser/omnibox/geo/CellInfoDelegate.java",
  ]
}
