// 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",
      "device/com/android/net/module/util/HandlerUtils.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",
        ],
    },
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}

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",
    ],
}
