// 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.


filegroup {
    name: "framework-wifi-updatable-sources",
    srcs: [
        "java/**/*.java",
        "java/**/*.aidl",
    ],
    exclude_srcs: [
        ":framework-wifi-non-updatable-sources"
    ],
    path: "java",
}

filegroup {
    name: "framework-wifi-non-updatable-sources",
    srcs: [
        // TODO(b/146011398) package android.net.wifi is now split amongst 2 jars: framework.jar and
        // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache
        // to a separate package.
        "java/android/net/wifi/WifiNetworkScoreCache.java",
        "java/android/net/wifi/wificond/*.java",
        ":libwificond_ipc_aidl",
    ],
}

filegroup {
    name: "framework-wifi-annotations",
    srcs: ["java/android/net/wifi/WifiAnnotations.java"],
}

// list of tests that are allowed to access @hide APIs from framework-wifi
test_access_hidden_api_whitelist = [
    "//frameworks/base/wifi/tests",
    "//frameworks/opt/net/wifi/tests/wifitests:__subpackages__",

    "//frameworks/opt/net/wifi/libs/WifiTrackerLib/tests",
]

java_library {
    name: "framework-wifi",
    // TODO(b/140299412) should be core_current once we build against framework-system-stubs
    sdk_version: "core_platform",
    libs: [
        // TODO(b/140299412) should be framework-system-stubs once we fix all @hide dependencies
        "framework-minus-apex",
    ],
    srcs: [
        ":framework-wifi-updatable-sources",
    ],
    installable: true,
    optimize: {
        enabled: false
    },
    visibility: [
        "//frameworks/base", // TODO(b/140299412) remove once all dependencies are fixed
        "//frameworks/opt/net/wifi/service:__subpackages__",
    ] + test_access_hidden_api_whitelist,
    plugins: ["java_api_finder"],
}

droidstubs {
    name: "framework-wifi-stubs-srcs",
    srcs: [
        ":framework-annotations",
        ":framework-wifi-updatable-sources",
    ],
    aidl: {
        include_dirs: ["frameworks/base/core/java"],
    },
    defaults: [ "framework-module-stubs-defaults-systemapi" ],
    sdk_version: "core_current",
    libs: ["android_system_stubs_current"],
}

java_library {
    name: "framework-wifi-stubs",
    srcs: [":framework-wifi-stubs-srcs"],
    aidl: {
        export_include_dirs: [
            "java",
        ],
    },
    sdk_version: "core_current",
    libs: ["android_system_stubs_current"],
    installable: false,
}

// defaults for tests that need to build against framework-wifi's @hide APIs
java_defaults {
    name: "framework-wifi-test-defaults",
    sdk_version: "core_platform", // tests can use @CorePlatformApi's
    libs: [
        "framework-wifi",
        "framework-minus-apex",

        // if sdk_version="" this gets automatically included, but here we need to add manually.
        "framework-res",
    ],
    visibility: test_access_hidden_api_whitelist,
}
