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

mojo_native_application("authenticating_url_loader_interceptor") {
  sources = [
    "main.cc",
  ]

  deps = [
    ":lib",
    "//mojo/application",
  ]
}

# Library that allows the service code to be included directly into the
# embedding shell. Used by https://manganese.googlesource.com/.
source_set("lib") {
  sources = [
    "authenticating_url_loader_interceptor.cc",
    "authenticating_url_loader_interceptor.h",
    "authenticating_url_loader_interceptor_app.cc",
    "authenticating_url_loader_interceptor_app.h",
    "authenticating_url_loader_interceptor_factory.cc",
    "authenticating_url_loader_interceptor_factory.h",
    "authenticating_url_loader_interceptor_meta_factory_impl.cc",
    "authenticating_url_loader_interceptor_meta_factory_impl.h",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/common",
    "//mojo/public/c/system",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings",
    "//mojo/services/authenticating_url_loader_interceptor/interfaces",
    "//mojo/services/authentication/interfaces",
    "//mojo/services/network/interfaces",
    "//url",
  ]
}

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

  sources = [
    "authenticating_url_loader_interceptor_apptest.cc",
  ]

  deps = [
    "//base",
    "//mojo/application",
    "//mojo/application:test_support",
    "//mojo/public/cpp/application",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//mojo/services/authenticating_url_loader_interceptor/interfaces",
    "//mojo/services/network/interfaces",
    "//testing/gtest",
  ]
}
