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

// AIDL interfaces between the core system and the networking mainline module.
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

aidl_interface {
    name: "ipmemorystore-aidl-interfaces",
    local_include_dir: "src",
    srcs: [
        "src/android/net/IIpMemoryStore.aidl",
        "src/android/net/IIpMemoryStoreCallbacks.aidl",
        "src/android/net/ipmemorystore/**/*.aidl",
        // New AIDL classes should go into android.net.networkstack.aidl so they can be clearly
        // identified
        "src/android/net/networkstack/aidl/quirks/IPv6ProvisioningLossQuirkParcelable.aidl",
    ],
    backend: {
        java: {
            apex_available: [
                "//apex_available:platform",
                "com.android.wifi",
                "com.android.tethering",
            ],
            // this is part of updatable modules(NetworkStack) which targets 29(Q)
            min_sdk_version: "29",
        },
        ndk: {
            enabled: false,
        },
        cpp: {
            enabled: false,
        },
    },
    versions: [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
    ],
    visibility: [
        "//system/tools/aidl/build",
    ],
}

aidl_interface {
    name: "networkstack-aidl-interfaces",
    local_include_dir: "src",
    include_dirs: [
        // For framework parcelables.
        "frameworks/base/core/java",
        // For API parcelables in connectivity
        "packages/modules/Connectivity/framework/aidl-export",
        "frameworks/native/aidl/binder", // For PersistableBundle.aidl
    ],
    srcs: [
        "src/android/net/DataStallReportParcelable.aidl",
        "src/android/net/DhcpResultsParcelable.aidl",
        "src/android/net/INetworkMonitor.aidl",
        "src/android/net/INetworkMonitorCallbacks.aidl",
        "src/android/net/INetworkStackConnector.aidl",
        "src/android/net/INetworkStackStatusCallback.aidl",
        "src/android/net/InitialConfigurationParcelable.aidl",
        "src/android/net/InformationElementParcelable.aidl",
        "src/android/net/Layer2InformationParcelable.aidl",
        "src/android/net/Layer2PacketParcelable.aidl",
        "src/android/net/NattKeepalivePacketDataParcelable.aidl",
        "src/android/net/NetworkTestResultParcelable.aidl",
        "src/android/net/PrivateDnsConfigParcel.aidl",
        "src/android/net/ProvisioningConfigurationParcelable.aidl",
        "src/android/net/ScanResultInfoParcelable.aidl",
        "src/android/net/TcpKeepalivePacketDataParcelable.aidl",
        "src/android/net/dhcp/DhcpLeaseParcelable.aidl",
        "src/android/net/dhcp/DhcpServingParamsParcel.aidl",
        "src/android/net/dhcp/IDhcpEventCallbacks.aidl",
        "src/android/net/dhcp/IDhcpServer.aidl",
        "src/android/net/dhcp/IDhcpServerCallbacks.aidl",
        "src/android/net/ip/IIpClient.aidl",
        "src/android/net/ip/IIpClientCallbacks.aidl",
        // New AIDL classes should go into android.net.networkstack.aidl so they can be clearly
        // identified
        "src/android/net/networkstack/aidl/dhcp/DhcpOption.aidl",
        "src/android/net/networkstack/aidl/ip/ReachabilityLossInfoParcelable.aidl",
        "src/android/net/networkstack/aidl/ip/ReachabilityLossReason.aidl",
    ],
    backend: {
        java: {
            apex_available: [
                "//apex_available:platform",
                "com.android.wifi",
                "com.android.tethering",
            ],
            // this is part of updatable modules(NetworkStack) which targets 29(Q)
            min_sdk_version: "29",
        },
        ndk: {
            enabled: false,
        },
        cpp: {
            enabled: false,
        },
    },
    imports: ["ipmemorystore-aidl-interfaces-V10"],
    versions: [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "10",
        "11",
        "12",
        "13",
    ],
    // TODO: have tethering depend on networkstack-client and set visibility to private
    visibility: [
        "//system/tools/aidl/build",
        "//frameworks/base/packages/Tethering",
        "//packages/modules/Connectivity/Tethering",
    ],
}

java_library {
    name: "networkstack-aidl-latest",
    sdk_version: "system_current",
    min_sdk_version: "29",
    static_libs: [
        "ipmemorystore-aidl-interfaces-V10-java",
        "networkstack-aidl-interfaces-V13-java",
    ],
    visibility: ["//packages/modules/NetworkStack:__subpackages__"],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
        "com.android.wifi",
    ],
}

java_library {
    name: "networkstack-client",
    sdk_version: "module_current",
    // this is part of updatable modules(NetworkStack) which runs on Q and above
    min_sdk_version: "29",
    srcs: [
        "src/android/net/ip/**/*.java",
        "src/android/net/IpMemoryStore.java",
        "src/android/net/IpMemoryStoreClient.java",
        "src/android/net/ipmemorystore/**/*.java",
        "src/android/net/NetworkMonitorManager.java",
        "src/android/net/networkstack/**/*.java",
        "src/android/net/networkstack/aidl/quirks/**/*.java",
        "src/android/net/shared/**/*.java",
        "src/android/net/util/**/*.java",
    ],
    libs: [
        // Since this library is sdk_version: "module_current", "framework-connectivity" is just
        // the module_current API stubs of framework-connectivity
        "framework-connectivity",
        "framework-annotations-lib",
    ],
    static_libs: [
        "networkstack-aidl-latest",
    ],
    visibility: [
        "//frameworks/base/packages/Connectivity/service",
        "//packages/modules/Connectivity/Tethering",
        "//packages/modules/Connectivity/service",
        "//frameworks/base/services/net",
        "//frameworks/opt/net/wifi/service",
        "//packages/apps/Bluetooth",
        "//packages/modules/NetworkStack",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.tethering",
    ],
}
