// Copyright (C) 2019 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.

// 1. The "net-utils-framework-common" library is also compiled into the framework and placed on the
//    boot classpath. It uses jarjar rules so that anything outside the framework can use this
//    library directly.
// 2. The "net-utils-services-common" library is for use by modules and frameworks/base/services.
//    It does not need to be jarjared because it is not placed on the bootclasspath.
// 3. The "net-utils-telephony-common-srcs" filegroup is for use specifically by telephony, which
//    places many of its classes, even non-API service classes, on the boot classpath. Any file that
//    is added to this filegroup *must* have a corresponding jarjar rule in the telephony jarjar
//    rules file. Otherwise, it will end up on the boot classpath and other modules will not be able
//    to provide their own copy.

// Note: all filegroups here must have the right path attribute because otherwise, if they are
// included in the bootclasspath, they could incorrectly be included in the SDK documentation even
// though they are not in the current.txt files.

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

java_library {
  name: "net-utils-device-common",
  srcs: [
      "device/com/android/net/module/util/arp/ArpPacket.java",
      "device/com/android/net/module/util/DeviceConfigUtils.java",
      "device/com/android/net/module/util/DomainUtils.java",
      "device/com/android/net/module/util/FdEventsReader.java",
      "device/com/android/net/module/util/NetworkMonitorUtils.java",
      "device/com/android/net/module/util/PacketReader.java",
      "device/com/android/net/module/util/SharedLog.java",
      "device/com/android/net/module/util/SocketUtils.java",
      "device/com/android/net/module/util/FeatureVersions.java",
      // This library is used by system modules, for which the system health impact of Kotlin
      // has not yet been evaluated. Annotations may need jarjar'ing.
      // "src_devicecommon/**/*.kt",
  ],
  sdk_version: "module_current",
  min_sdk_version: "30",
  target_sdk_version: "30",
  apex_available: [
      "//apex_available:anyapex",
      "//apex_available:platform",
  ],
  visibility: [
        "//frameworks/base/packages/Tethering",
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/Connectivity/framework:__subpackages__",
        "//frameworks/opt/net/ike",
        "//frameworks/opt/net/wifi/service",
        "//packages/modules/Wifi/service",
        "//frameworks/opt/net/telephony",
        "//packages/modules/NetworkStack:__subpackages__",
        "//packages/modules/CaptivePortalLogin",
  ],
  static_libs: [
      "net-utils-framework-common",
  ],
  libs: [
      "androidx.annotation_annotation",
      "framework-annotations-lib",
      "framework-configinfrastructure",
      "framework-connectivity.stubs.module_lib",
  ],
  lint: {
      strict_updatability_linting: true,
      error_checks: ["NewApi"],
  },
}

java_defaults {
    name: "lib_mockito_extended",
    static_libs: [
        "mockito-target-extended-minus-junit4"
    ],
    jni_libs: [
        "libdexmakerjvmtiagent",
        "libstaticjvmtiagent",
    ],
}

java_library {
    name: "net-utils-dnspacket-common",
    srcs: [
    "framework/**/DnsPacket.java",
    "framework/**/DnsPacketUtils.java",
    "framework/**/DnsSvcbPacket.java",
    "framework/**/DnsSvcbRecord.java",
    "framework/**/HexDump.java",
    "framework/**/NetworkStackConstants.java",
    ],
    sdk_version: "module_current",
    visibility: [
        "//packages/services/Iwlan:__subpackages__",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-annotations-lib",
        "framework-connectivity.stubs.module_lib",
    ],
}

filegroup {
    name: "net-utils-framework-common-srcs",
    srcs: ["framework/**/*.java"],
    path: "framework",
    visibility: [
        "//frameworks/base",
        "//packages/modules/Connectivity:__subpackages__",
    ],
}

java_library {
    name: "net-utils-device-common-bpf",
    srcs: [
        "device/com/android/net/module/util/BpfBitmap.java",
        "device/com/android/net/module/util/BpfDump.java",
        "device/com/android/net/module/util/BpfMap.java",
        "device/com/android/net/module/util/BpfUtils.java",
        "device/com/android/net/module/util/IBpfMap.java",
        "device/com/android/net/module/util/JniUtil.java",
        "device/com/android/net/module/util/Struct.java",
        "device/com/android/net/module/util/TcUtils.java",
        "framework/com/android/net/module/util/HexDump.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/NetworkStack:__subpackages__",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-connectivity.stubs.module_lib",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

java_library {
    name: "net-utils-device-common-struct",
    srcs: [
        "device/com/android/net/module/util/Ipv6Utils.java",
        "device/com/android/net/module/util/PacketBuilder.java",
        "device/com/android/net/module/util/Struct.java",
        "device/com/android/net/module/util/structs/*.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/NetworkStack:__subpackages__",
    ],
    static_libs: [
        "net-utils-framework-common",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-connectivity.stubs.module_lib",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

// The net-utils-device-common-netlink library requires the callers to contain
// net-utils-device-common-struct.
java_library {
    name: "net-utils-device-common-netlink",
    srcs: [
        "device/com/android/net/module/util/netlink/**/*.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/NetworkStack:__subpackages__",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-connectivity.stubs.module_lib",
        // For libraries which are statically linked in framework-connectivity, do not
        // statically link here because callers of this library might already have a static
        // version linked.
        "net-utils-device-common-struct",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

// The net-utils-device-common-ip library requires the callers to contain
// net-utils-device-common-struct.
java_library {
    // TODO : this target should probably be folded into net-utils-device-common
    name: "net-utils-device-common-ip",
    srcs: [
        "device/com/android/net/module/util/ip/*.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/NetworkStack:__subpackages__",
    ],
    libs: [
        "framework-annotations-lib",
        "framework-connectivity",
    ],
    static_libs: [
        "net-utils-device-common",
        "net-utils-device-common-netlink",
        "net-utils-framework-common",
        "netd-client",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

java_library {
    name: "net-utils-framework-common",
    srcs: [
        ":net-utils-framework-common-srcs",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    libs: [
        "androidx.annotation_annotation",
        "framework-annotations-lib",
        "framework-connectivity.stubs.module_lib",
        "framework-connectivity-t.stubs.module_lib",
        "framework-location.stubs.module_lib",
    ],
    jarjar_rules: "jarjar-rules-shared.txt",
    visibility: [
        "//cts/tests/tests/net",
        "//cts/tests/tests/wifi",
        "//packages/modules/Connectivity/tests/cts/net",
        "//frameworks/base/packages/Tethering",
        "//packages/modules/Connectivity/Tethering",
        "//frameworks/base/tests:__subpackages__",
        "//frameworks/opt/net/ike",
        "//frameworks/opt/telephony",
        "//frameworks/base/wifi:__subpackages__",
        "//frameworks/base/packages/Connectivity:__subpackages__",
        "//packages/modules/Connectivity:__subpackages__",
        "//packages/modules/NetworkStack:__subpackages__",
        "//packages/modules/CaptivePortalLogin",
        "//packages/modules/Wifi/framework/tests:__subpackages__",
        "//packages/apps/Settings",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
    errorprone: {
        enabled: true,
        // Error-prone checking only warns of problems when building. To make the build fail with
        // these errors, list the specific error-prone problems below.
        javacflags: [
            "-Xep:NullablePrimitive:ERROR",
        ],
    },
}

java_library {
    name: "net-utils-services-common",
    srcs: [
        "device/android/net/NetworkFactory.java",
        "device/android/net/NetworkFactoryImpl.java",
        "device/android/net/NetworkFactoryLegacyImpl.java",
        "device/android/net/NetworkFactoryShim.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    static_libs: [
        "modules-utils-build_system",
    ],
    libs: [
        "framework-annotations-lib",
        "framework-connectivity",
    ],
    // TODO: remove "apex_available:platform".
    apex_available: [
        "//apex_available:platform",
        "com.android.btservices",
        "com.android.tethering",
        "com.android.wifi",
    ],
    visibility: [
        // TODO: remove after NetworkStatsService moves to the module.
        "//frameworks/base/services/net",
        "//packages/modules/Connectivity/service",
        "//packages/modules/Connectivity/tests:__subpackages__",
        "//packages/modules/Bluetooth/android/app",
        "//packages/modules/Wifi/service:__subpackages__",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

java_library {
    name: "net-utils-device-common-async",
    srcs: [
        "device/com/android/net/module/util/async/*.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
    ],
    libs: [
        "framework-annotations-lib",
    ],
    static_libs: [
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

java_library {
    name: "net-utils-device-common-wear",
    srcs: [
        "device/com/android/net/module/util/wear/*.java",
    ],
    sdk_version: "module_current",
    min_sdk_version: "30",
    visibility: [
        "//packages/modules/Connectivity:__subpackages__",
    ],
    libs: [
        "framework-annotations-lib",
    ],
    static_libs: [
        "net-utils-device-common-async",
    ],
    apex_available: [
        "com.android.tethering",
        "//apex_available:platform",
    ],
    lint: {
        strict_updatability_linting: true,
        error_checks: ["NewApi"],
    },
}

// Limited set of utilities for use by service-connectivity-mdns-standalone-build-test, to make sure
// the mDNS code can build with only system APIs.
// The mDNS code is platform code so it should use framework-annotations-lib, contrary to apps that
// should use sdk_version: "system_current" and only androidx.annotation_annotation. But this build
// rule verifies that the mDNS code can be built into apps, if code transformations are applied to
// the annotations.
// When using "system_current", framework annotations are not available; they would appear as
// package-private as they are marked as such in the system_current stubs. So build against
// core_platform and add the stubs manually in "libs". See http://b/147773144#comment7.
java_library {
    name: "net-utils-device-common-mdns-standalone-build-test",
    // Build against core_platform and add the stub libraries manually in "libs", as annotations
    // are already included in android_system_stubs_current but package-private, so
    // "framework-annotations-lib" needs to be manually included before
    // "android_system_stubs_current" (b/272392042)
    sdk_version: "core_platform",
    srcs: [
        "device/com/android/net/module/util/FdEventsReader.java",
        "device/com/android/net/module/util/SharedLog.java",
        "framework/com/android/net/module/util/ByteUtils.java",
        "framework/com/android/net/module/util/CollectionUtils.java",
        "framework/com/android/net/module/util/HexDump.java",
        "framework/com/android/net/module/util/LinkPropertiesUtils.java",
    ],
    libs: [
        "framework-annotations-lib",
        "android_system_stubs_current",
        "androidx.annotation_annotation",
    ],
    visibility: ["//packages/modules/Connectivity/service-t"],
}

// Use a filegroup and not a library for telephony sources, as framework-annotations cannot be
// included either (some annotations would be duplicated on the bootclasspath).
filegroup {
    name: "net-utils-telephony-common-srcs",
    srcs: [
        // Any class here *must* have a corresponding jarjar rule in the telephony build rules.
        "device/android/net/NetworkFactory.java",
        "device/android/net/NetworkFactoryImpl.java",
        "device/android/net/NetworkFactoryLegacyImpl.java",
        "device/android/net/NetworkFactoryShim.java",
    ],
    path: "device",
    visibility: [
        "//frameworks/opt/telephony",
    ],
}

// Use a filegroup and not a library for wifi sources, as this needs corresponding jar-jar
// rules on the wifi side.
// Any class here *must* have a corresponding jarjar rule in the wifi build rules.
filegroup {
    name: "net-utils-framework-wifi-common-srcs",
    srcs: [
        "framework/com/android/net/module/util/DnsSdTxtRecord.java",
        "framework/com/android/net/module/util/Inet4AddressUtils.java",
        "framework/com/android/net/module/util/InetAddressUtils.java",
        "framework/com/android/net/module/util/MacAddressUtils.java",
        "framework/com/android/net/module/util/NetUtils.java",
    ],
    path: "framework",
    visibility: [
        "//frameworks/base",
    ],
}

// Use a filegroup and not a library for wifi sources, as this needs corresponding jar-jar
// rules on the wifi side.
// Any class here *must* have a corresponding jarjar rule in the wifi build rules.
filegroup {
    name: "net-utils-wifi-service-common-srcs",
    srcs: [
       "device/android/net/NetworkFactory.java",
       "device/android/net/NetworkFactoryImpl.java",
       "device/android/net/NetworkFactoryLegacyImpl.java",
       "device/android/net/NetworkFactoryShim.java",
    ],
    visibility: [
        "//frameworks/opt/net/wifi/service",
        "//packages/modules/Wifi/service",
    ],
}
