// Copyright (C) 2021 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

java_library {
    name: "net-tests-utils",
    srcs: [
        "devicetests/**/*.java",
        "devicetests/**/*.kt",
    ],
    defaults: [
        "framework-connectivity-test-defaults",
        "lib_mockito_extended"
    ],
    libs: [
        "androidx.annotation_annotation",
    ],
    static_libs: [
        "androidx.test.ext.junit",
        "kotlin-reflect",
        "libnanohttpd",
        "net-tests-utils-host-device-common",
        "net-utils-device-common",
        "net-utils-device-common-netlink",
        "modules-utils-build_system",
    ],
}

java_library {
  // Consider using net-tests-utils instead if writing device code.
  // That library has a lot more useful tools into it for users that
  // work on Android and includes this lib.
  name: "net-tests-utils-host-device-common",
  srcs: [
      "hostdevice/**/*.java",
      "hostdevice/**/*.kt",
  ],
  host_supported: true,
  visibility: [
      "//frameworks/libs/net/common/tests:__subpackages__",
      "//frameworks/libs/net/client-libs/tests:__subpackages__",
  ],
  libs: [
      "jsr305",
  ],
  static_libs: [
      "kotlin-test"
  ]
}
