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

if (is_android) {
  import("//build/config/android/config.gni")
  import("//build/config/android/rules.gni")
}

# Convenience target for developers to build prod and test code.
group("background_task_scheduler") {
  testonly = true

  if (is_android) {
    deps = [
      ":background_task_scheduler_java",
      ":background_task_scheduler_javatests",
    ]
  }
}

if (is_android) {
  android_library("background_task_scheduler_java") {
    java_files = [
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTask.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskJobService.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskScheduler.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerDelegate.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerFactory.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobService.java",
      "android/java/src/org/chromium/components/background_task_scheduler/BundleToPersistableBundleConverter.java",
      "android/java/src/org/chromium/components/background_task_scheduler/TaskIds.java",
      "android/java/src/org/chromium/components/background_task_scheduler/TaskInfo.java",
      "android/java/src/org/chromium/components/background_task_scheduler/TaskParameters.java",
    ]

    deps = [
      "//base:base_java",
      "//third_party/android_tools:android_support_annotations_java",
    ]
  }

  android_library("background_task_scheduler_javatests") {
    testonly = true

    java_files = [
      "android/javatests/src/org/chromium/components/background_task_scheduler/BackgroundTaskSchedulerJobServiceTest.java",
      "android/javatests/src/org/chromium/components/background_task_scheduler/BundleToPersistableBundleConverterTest.java",
    ]

    deps = [
      ":background_task_scheduler_java",
      "//base:base_java",
      "//base:base_java_test_support",
      "//third_party/android_support_test_runner:runner_java",
      "//third_party/junit",
    ]
  }
}
