// 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",
    ],
    sdk_version: "module_current",
    visibility: [
        "//packages/services/Iwlan:__subpackages__",
    ],
    libs: [
        "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",
    ],
}
