# Copyright 2014 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/rules.gni")
}

static_library("navigation_interception") {
  sources = [
    "intercept_navigation_throttle.cc",
    "intercept_navigation_throttle.h",
    "navigation_params.cc",
    "navigation_params.h",
  ]

  deps = [
    "//base",
    "//content/public/browser",
    "//content/public/common",
    "//net",
    "//ui/base",
  ]

  if (is_android) {
    sources += [
      "intercept_navigation_delegate.cc",
      "intercept_navigation_delegate.h",
      "navigation_params_android.cc",
      "navigation_params_android.h",
    ]
    deps += [ ":jni_headers" ]
  }
}

if (is_android) {
  generate_jni("jni_headers") {
    sources = [
      "android/java/src/org/chromium/components/navigation_interception/InterceptNavigationDelegate.java",
      "android/java/src/org/chromium/components/navigation_interception/NavigationParams.java",
    ]
    jni_package = "navigation_interception"
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "intercept_navigation_throttle_unittest.cc",
  ]
  deps = [
    ":navigation_interception",
    "//base",
    "//base/test:test_support",
    "//content/public/browser",
    "//content/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
