# Copyright 2015 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")
import("//remoting/remoting_options.gni")

template("remoting_android_client_java_tmpl") {
  android_library(target_name) {
    _java_file_prefix = "//remoting/android/java/src/org/chromium/chromoting"
    _java_files = [
      "ActivityLifecycleListener.java",
      "AnimationJob.java",
      "Capabilities.java",
      "CapabilityManager.java",
      "Chromoting.java",
      "ChromotingDownloadManager.java",
      "ChromotingUtil.java",
      "ClientExtension.java",
      "Desktop.java",
      "DesktopCanvas.java",
      "DesktopView.java",
      "DummyActivityLifecycleListener.java",
      "DummyClientExtension.java",
      "Event.java",
      "FlingAnimationJob.java",
      "HostInfo.java",
      "HostListAdapter.java",
      "HostListManager.java",
      "InputEventSender.java",
      "InputFeedbackRadiusMapper.java",
      "InputModeChangedEventParameter.java",
      "InputMonitor.java",
      "InputState.java",
      "InputStrategyInterface.java",
      "InputStub.java",
      "NavigationMenuAdapter.java",
      "OAuthTokenConsumer.java",
      "Preconditions.java",
      "RenderData.java",
      "RenderStub.java",
      "ScaleEventParameter.java",
      "SessionAuthenticator.java",
      "SessionConnector.java",
      "SimulatedTouchInputStrategy.java",
      "SizeChangedEventParameter.java",
      "SwipePinchDetector.java",
      "SystemUiVisibilityChangedEventParameter.java",
      "TapGestureDetector.java",
      "ThirdPartyTokenFetcher.java",
      "TouchEventParameter.java",
      "TouchInputHandler.java",
      "TouchInputStrategy.java",
      "TrackpadInputStrategy.java",
      "TapEventParameter.java",
      "TwoPointsEventParameter.java",
      "accountswitcher/AccountManagerCompat.java",
      "accountswitcher/AccountSwitcher.java",
      "accountswitcher/AccountSwitcherBase.java",
      "accountswitcher/AccountSwitcherBasic.java",
      "accountswitcher/AccountSwitcherFactory.java",
      "base/OAuthTokenFetcher.java",
      "help/CreditsActivity.java",
      "help/FeedbackSender.java",
      "help/HelpActivity.java",
      "help/HelpAndFeedback.java",
      "help/HelpAndFeedbackBasic.java",
      "help/HelpContext.java",
      "help/HelpSingleton.java",
      "jni/Client.java",
      "jni/ConnectionListener.java",
      "jni/GlDisplay.java",
      "jni/JniInterface.java",
      "jni/JniOAuthTokenGetter.java",
      "jni/TouchEventData.java",
    ]

    java_files = rebase_path(_java_files, ".", _java_file_prefix)

    deps = [
      "//base:base_java",
      "//remoting/android:remoting_android_client_java_resources",
      "//remoting/android:remoting_apk_manifest",
      "//third_party/android_deps:android_arch_lifecycle_common_java",
      "//third_party/android_deps:android_support_annotations_java",
      "//third_party/android_deps:android_support_v7_appcompat_java",
      "//third_party/android_deps:android_support_v7_mediarouter_java",
      "//ui/android:ui_utils_java",
    ]

    srcjar_deps = [ "//remoting/client/jni:jni_enums" ]

    if (defined(invoker.play_services_package)) {
      deps += [
        "${invoker.play_services_package}:google_play_services_auth_base_java",
        "${invoker.play_services_package}:google_play_services_base_java",
        "${invoker.play_services_package}:google_play_services_basement_java",
      ]
    }

    # TODO(agrieve): Convert downstream to use play_services_package.
    if (defined(invoker.remoting_google_play_services_library)) {
      deps += [ invoker.remoting_google_play_services_library ]
    }

    android_manifest_for_lint =
        "$root_gen_dir/remoting/android/AndroidManifest.xml"
  }
}
