// 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_team: "trendy_team_android_permissions",
    default_applicable_licenses: ["Android-Apache-2.0"],
    default_visibility: [":__subpackages__"],
}

apex {
    name: "com.android.permission",
    defaults: ["com.android.permission-defaults"],
    manifest: "apex_manifest.json",
    compat_configs: [
        "framework-permission-s-compat-config"
    ],
    visibility: ["//packages/modules/common/build"],
}

apex_defaults {
    name: "com.android.permission-defaults",
    defaults: ["r-launched-apex-module"],
    bootclasspath_fragments: ["com.android.permission-bootclasspath-fragment"],
    systemserverclasspath_fragments: ["com.android.permission-systemserverclasspath-fragment"],
    prebuilts: [
        "current_sdkinfo",
    ],
    key: "com.android.permission.key",
    certificate: ":com.android.permission.certificate",
    apps: [
        "PermissionController",
        "SafetyCenterResources",
    ],
    // Indicates that pre-installed version of this apex can be compressed.
    // Whether it actually will be compressed is controlled on per-device basis.
    compressible: true,
}

apex_key {
    name: "com.android.permission.key",
    public_key: "com.android.permission.avbpubkey",
    private_key: "com.android.permission.pem",
}

android_app_certificate {
    name: "com.android.permission.certificate",
    certificate: "com.android.permission",
}

sdk {
    name: "permission-module-sdk",
    apexes: [
        // Adds exportable dependencies of the APEX to the sdk,
        // e.g. *classpath_fragments.
        "com.android.permission",
    ],
}

// Encapsulate the contributions made by the com.android.permission to the bootclasspath.
bootclasspath_fragment {
    name: "com.android.permission-bootclasspath-fragment",
    contents: [
        "framework-permission",
        "framework-permission-s",
    ],
    apex_available: ["com.android.permission"],

    // The bootclasspath_fragments that provide APIs on which this depends.
    fragments: [
        {
            apex: "com.android.art",
            module: "art-bootclasspath-fragment",
        },
    ],

    // Additional stubs libraries that this fragment's contents use which are
    // not provided by another bootclasspath_fragment.
    additional_stubs: [
        "android-non-updatable",
    ],

    hidden_api: {
        // The following packages contain classes from other modules on the
        // bootclasspath. That means that the hidden API flags for this module
        // has to explicitly list every single class this module provides in
        // that package to differentiate them from the classes provided by other
        // modules. That can include private classes that are not part of the
        // API.
        split_packages: [
            "android.permission",
        ],

        // The following packages and all their subpackages currently only
        // contain classes from this bootclasspath_fragment. Listing a package
        // here won't prevent other bootclasspath modules from adding classes in
        // any of those packages but it will prevent them from adding those
        // classes into an API surface, e.g. public, system, etc.. Doing so will
        // result in a build failure due to inconsistent flags.
        package_prefixes: [
            "android.app.role",
            "android.permission.jarjar",
            "android.safetycenter",
            "android.safetylabel",
        ],
    },
}

// Encapsulate the contributions made by the com.android.permission to the systemserverclasspath.
systemserverclasspath_fragment {
    name: "com.android.permission-systemserverclasspath-fragment",
    contents: ["service-permission"],
    apex_available: ["com.android.permission"],
}
