// 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: "netd_aidl_interface-lateststable-java",
    sdk_version: "system_current",
    min_sdk_version: "29",
    static_libs: [
        "netd_aidl_interface-V7-java",
    ],
    apex_available: [
        "//apex_available:platform", // used from services.net
        "com.android.bluetooth.updatable",
        "com.android.tethering",
        "com.android.wifi",
    ],
}

cc_library_static {
    name: "netd_event_listener_interface-lateststable-ndk",
    whole_static_libs: [
        "netd_event_listener_interface-V1-ndk",
    ],
    apex_available: [
        "com.android.resolv",
    ],
    min_sdk_version: "29",
}

cc_library_static {
    name: "netd_aidl_interface-lateststable-ndk",
    whole_static_libs: [
        "netd_aidl_interface-V7-ndk",
    ],
    apex_available: [
        "com.android.resolv",
    ],
    min_sdk_version: "29",
}

cc_library_static {
    name: "netd_aidl_interface-lateststable-cpp",
    whole_static_libs: [
        "netd_aidl_interface-V7-cpp",
    ],
}

aidl_interface {
    name: "netd_aidl_interface",
    local_include_dir: "binder",
    srcs: [
        "binder/android/net/INetd.aidl",
        // AIDL interface that callers can implement to receive networking events from netd.
        "binder/android/net/INetdUnsolicitedEventListener.aidl",
        "binder/android/net/InterfaceConfigurationParcel.aidl",
        "binder/android/net/MarkMaskParcel.aidl",
        "binder/android/net/NativeNetworkConfig.aidl",
        "binder/android/net/NativeNetworkType.aidl",
        "binder/android/net/NativeVpnType.aidl",
        "binder/android/net/RouteInfoParcel.aidl",
        "binder/android/net/TetherConfigParcel.aidl",
        "binder/android/net/TetherOffloadRuleParcel.aidl",
        "binder/android/net/TetherStatsParcel.aidl",
        "binder/android/net/UidRangeParcel.aidl",
        // Add new AIDL classes in android.net.netd.aidl to consist with other network modules.
        "binder/android/net/netd/aidl/**/*.aidl",
    ],
    backend: {
        cpp: {
            gen_log: true,
        },
        java: {
            // TODO: Remove apex_available and restrict visibility to only mainline modules that are
            // either outside the system server or use jarjar to rename the generated AIDL classes.
            apex_available: [
                "//apex_available:platform", // used from services.net
                "com.android.bluetooth.updatable",
                "com.android.tethering",
                "com.android.wifi",
            ],
            // this is part of updatable modules(NetworkStack) which targets 29(Q)
            min_sdk_version: "29",
        },
        ndk: {
            apex_available: [
                "//apex_available:platform",
            ],
            // This is necessary for the DnsResovler tests to run in Android Q.
            // Soong would recognize this value and produce the Q compatible aidl library.
            min_sdk_version: "29",
        },
    },
    versions: [
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
    ],
}

java_library {
    name: "netd_event_listener_interface-lateststable-java",
    sdk_version: "system_current",
    min_sdk_version: "29",
    static_libs: [
        "netd_event_listener_interface-V1-java",
    ],
    apex_available: [
        "//apex_available:platform",
        "com.android.bluetooth.updatable",
        "com.android.wifi",
        "com.android.tethering",
    ],
}

aidl_interface {
    name: "netd_event_listener_interface",
    local_include_dir: "binder",
    srcs: [
        "binder/android/net/metrics/INetdEventListener.aidl",
    ],
    versions: ["1"],
    backend: {
        ndk: {
            apex_available: [
                "//apex_available:platform",
                "com.android.resolv",
            ],
            min_sdk_version: "29",
        },
        java: {
            apex_available: [
                "//apex_available:platform",
                "com.android.bluetooth.updatable",
                "com.android.wifi",
                "com.android.tethering",
            ],
            min_sdk_version: "29",
        },
    },
}
