// 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",
    "//external/robolectric-shadows:__subpackages__",
]

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

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