# Copyright 2018 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("//build/config/android/rules.gni")
import("//third_party/feed/java_sources.gni")
import("//third_party/feed/proto_sources.gni")
import("//third_party/protobuf/proto_library.gni")

android_resources("piet_resources") {
  resource_dirs =
      [ "src/src/main/java/com/google/android/libraries/feed/piet/res" ]
  custom_package = "com.google.android.libraries.feed.piet"
}

android_resources("basicstream_resources") {
  resource_dirs = [ "src/src/main/java/com/google/android/libraries/feed/basicstream/internal/viewholders/res" ]
  custom_package =
      "com.google.android.libraries.feed.basicstream.internal.viewholders"
}

android_library("feed_lib_java") {
  chromium_code = false
  java_files = feed_lib_java_sources

  deps = [
    ":basicstream_resources",
    ":feed_lib_proto_java",
    ":piet_resources",
    "//third_party/android_tools:android_support_annotations_java",
    "//third_party/android_tools:android_support_cardview_java",
    "//third_party/android_tools:android_support_v7_appcompat_java",
    "//third_party/android_tools:android_support_v7_recyclerview_java",
    "//third_party/jsr-305:jsr_305_javalib",
    "//third_party/protobuf:protobuf_lite_javalib",
  ]
}

android_library("feed_conformance_test_lib_android_java") {
  chromium_code = false
  java_files = feed_conformance_test_lib_sources
  testonly = true

  deps = [
    ":feed_lib_java",
    "//third_party/google-truth:google_truth_java",
    "//third_party/guava:guava_android_java",
    "//third_party/junit:junit",
  ]
}

proto_java_library("feed_lib_proto_java") {
  proto_path = "src"
  sources = feed_lib_proto_sources
}
