// Copyright (C) 2020 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-permission-sources",
    srcs: [
        "java/**/*.java",
        "java/**/*.aidl",
    ],
    path: "java",
}

java_library {
    name: "framework-permission",
    srcs: [
        ":framework-permission-sources",
    ],
    sdk_version: "module_current",
    apex_available: [
        "com.android.permission",
        "test_com.android.permission",
    ],
    permitted_packages: [
        "android.permission",
        "android.app.role",
    ],
    hostdex: true,
    installable: true,
    visibility: [
        "//frameworks/base/apex/permission:__subpackages__",
    ],
}

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

droidstubs {
    name: "framework-permission-stubs-srcs-publicapi",
    sdk_version: "system_current",
    defaults: [
        "framework-module-stubs-defaults-publicapi",
        "framework-permission-stubs-defaults",
    ],
}

droidstubs {
    name: "framework-permission-stubs-srcs-systemapi",
    sdk_version: "system_current",
    defaults: [
        "framework-module-stubs-defaults-systemapi",
        "framework-permission-stubs-defaults",
    ],
}

droidstubs {
    name: "framework-permission-api-module_libs_api",
    sdk_version: "system_current",
    defaults: [
        "framework-module-api-defaults-module_libs_api",
        "framework-permission-stubs-defaults",
    ],
}

droidstubs {
    name: "framework-permission-stubs-srcs-module_libs_api",
    sdk_version: "system_current",
    defaults: [
        "framework-module-stubs-defaults-module_libs_api",
        "framework-permission-stubs-defaults",
    ],
}

java_library {
    name: "framework-permission-stubs-publicapi",
    srcs: [ ":framework-permission-stubs-srcs-publicapi" ],
    defaults: ["framework-module-stubs-lib-defaults-publicapi"],
}

java_library {
    name: "framework-permission-stubs-systemapi",
    srcs: [ ":framework-permission-stubs-srcs-systemapi" ],
    defaults: ["framework-module-stubs-lib-defaults-systemapi"],
}

java_library {
    name: "framework-permission-stubs-module_libs_api",
    srcs: [ ":framework-permission-stubs-srcs-module_libs_api" ],
    defaults: ["framework-module-stubs-lib-defaults-module_libs_api"],
}
