# 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("//mojo/public/tools/bindings/mojom.gni")

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

  android_library("authentication") {
    java_files = [
      "src/org/chromium/mojo/authentication/AuthenticationApplicationDelegate.java",
      "src/org/chromium/mojo/authentication/AuthenticationServiceImpl.java",
      "src/org/chromium/mojo/authentication/NetworkServiceProxyFactory.java",
    ]

    deps = [
      ":interfaces_java",
      "//mojo/public/interfaces/application:application_java",
      "//mojo/public/java:application",
      "//mojo/public/java:bindings",
      "//mojo/public/java:system",
      "//mojo/services/authenticating_url_loader_interceptor/interfaces:interfaces_java",
      "//mojo/services/authentication/interfaces:interfaces_java",
      "//mojo/services/network/interfaces:interfaces_java",
      "//services/intent_receiver:bindings_java",
      "//third_party/android_tools:google_play_services_default_java",
    ]
  }

  mojom("interfaces") {
    sources = [
      "authentication_impl_db.mojom",
    ]
  }
} else {
  import("//mojo/public/mojo_application.gni")

  mojo_native_application("authentication") {
    sources = [
      "accounts_db_manager.cc",
      "accounts_db_manager.h",
      "google_authentication_impl.cc",
      "google_authentication_impl.h",
      "main.cc",
    ]

    deps = [
      ":interfaces",
      "//base",
      "//mojo/application",
      "//mojo/common",
      "//mojo/data_pipe_utils",
      "//mojo/public/cpp/bindings",
      "//mojo/public/cpp/bindings:callback",
      "//mojo/public/cpp/system",
      "//mojo/public/cpp/utility",
      "//mojo/services/authentication/interfaces",
      "//mojo/services/files/interfaces",
      "//mojo/services/network/interfaces",
    ]
  }

  mojo_native_application("apptests") {
    output_name = "authentication_apptests"
    testonly = true

    sources = [
      "accounts_db_manager.cc",
      "accounts_db_manager.h",
      "accounts_db_manager_unittest.cc",
    ]

    deps = [
      ":interfaces",
      "//base",
      "//mojo/application",
      "//mojo/application:test_support",
      "//mojo/public/cpp/bindings",
      "//mojo/services/files/interfaces",
      "//testing/gtest:gtest",
    ]

    data_deps = [
      ":authentication($default_toolchain)",
    ]
  }

  mojom("interfaces") {
    sources = [
      "authentication_impl_db.mojom",
      "credentials_impl_db.mojom",
    ]
  }
}
