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

package {
    default_visibility: [ ":__pkg__" ]
}

filegroup {
    name: "framework-sdkextensions-sources",
    srcs: [
        "java/**/*.java",
    ],
    path: "java",
    visibility: [ "//frameworks/base" ] // For the "global" stubs.
}

java_library {
    name: "framework-sdkextensions",
    srcs: [ ":framework-sdkextensions-sources" ],
    sdk_version: "system_current",
    libs: [ "framework-annotations-lib" ],
    permitted_packages: [ "android.os.ext" ],
    installable: true,
    plugins: ["java_api_finder"],
    visibility: [
        "//frameworks/base/apex/sdkextensions",
        "//frameworks/base/apex/sdkextensions/testing",
    ],
    hostdex: true, // for hiddenapi check
    apex_available: [
        "com.android.sdkext",
        "test_com.android.sdkext",
    ],
}

droidstubs {
    name: "framework-sdkextensions-droidstubs-publicapi",
    defaults: [
        "framework-sdkextensions-stubs-defaults",
        "framework-module-stubs-defaults-publicapi",
    ]
}

droidstubs {
    name: "framework-sdkextensions-droidstubs-systemapi",
    defaults: [
        "framework-sdkextensions-stubs-defaults",
        "framework-module-stubs-defaults-systemapi",
    ]
}

stubs_defaults {
    name: "framework-sdkextensions-stubs-defaults",
    srcs: [
        ":framework-sdkextensions-sources",
        ":framework-annotations",
    ],
    sdk_version: "system_current",
}

java_library {
    name: "framework-sdkextensions-stubs-systemapi",
    srcs: [":framework-sdkextensions-droidstubs-systemapi"],
    sdk_version: "system_current",
    visibility: [
        "//frameworks/base", // Framework
        "//frameworks/base/apex/sdkextensions", // sdkextensions SDK
    ]
}
