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

package {
    default_team: "trendy_team_android_permissions",
    default_applicable_licenses: ["Android-Apache-2.0"],
}

filegroup {
    name: "service-permission-java-sources",
    srcs: [
        "java/**/*.java",
    ],
    path: "java",
    visibility: ["//visibility:private"],
}

java_library {
    name: "service-permission-proto-stream",
    proto: {
        type: "stream",
        include_dirs: [
            "external/protobuf/src",
        ],
    },
    srcs: [
        "proto/role_service.proto",
    ],
    installable: false,
    min_sdk_version: "30",
    sdk_version: "system_server_current",
    apex_available: [
        "com.android.permission",
        "test_com.android.permission",
    ],
}

java_library {
    name: "service-permission-shared",
    srcs: [":service-permission-shared-srcs"],
    libs: [
        "framework-annotations-lib",
    ],
    static_libs: [
        "framework-permission-s-shared",
    ],
    apex_available: [
        "com.android.permission",
        "test_com.android.permission",
    ],
    installable: false,
    min_sdk_version: "30",
    sdk_version: "system_server_current",
}

java_sdk_library {
    name: "service-permission",
    defaults: [
        "framework-system-server-module-defaults",
        "framework-system-server-module-optimize-defaults",
    ],
    impl_library_visibility: [
        "//frameworks/base/apex/permission/tests",
        "//frameworks/base/services/tests/mockingservicestests",
        "//frameworks/base/services/tests/PackageManagerServiceTests/server",
        "//packages/modules/Permission/tests/apex",
    ],
    srcs: [
        ":service-permission-java-sources",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-configinfrastructure.stubs.module_lib",
        // TODO(b/177884622): Short term solution to prevent service-permission from seeing hidden
        //  APIs in framework-permission, as we don't actually have any dependency in it.
        //"framework-permission",
        "framework-permission-s.impl",
        "framework-permission-s-shared",
        "framework-statsd.stubs.module_lib",
        "jsr305",
        "safety-center-annotations",
    ],
    static_libs: [
        "modules-utils-backgroundthread",
        "modules-utils-build",
        "modules-utils-os",
        // framework-permission-s already includes com.android.permission.flags-aconfig-java
        "role-controller",
        "safety-center-config",
        "safety-center-internal-data",
        "safety-center-pending-intents",
        "safety-center-persistence",
        "safety-center-resources-lib",
        "service-permission-shared",
        "service-permission-statsd",
        "permissioncontroller-statsd",
        "service-permission-proto-stream",
        "com.android.permission.flags-aconfig-java",
        "telecom_flags_core_java_aconfig_java_exported_lib",
    ],
    errorprone: {
        javacflags: ["-Xep:GuardedBy:ERROR"],
    },
    exclude_kotlinc_generated_files: true,
    jarjar_rules: "jarjar-rules.txt",
    lint: {
        baseline_filename: "lint-baseline.xml",
    },
    min_sdk_version: "30",
    sdk_version: "system_server_current",
    apex_available: [
        "com.android.permission",
        "test_com.android.permission",
    ],
    installable: true,
    permitted_packages: [
        "com.android.access",
        "com.android.ecm",
        "com.android.permission",
        "com.android.role",
        "com.android.safetycenter",
    ],
    optimize: {
        proguard_compatibility: false, // TODO(b/215530220): remove when this is default behavior
        proguard_flags_files: ["proguard.flags"],
    },
    aconfig_declarations: [
        "android.permission.flags-aconfig",
        "com.android.permission.flags-aconfig",
    ],
}

genrule {
    name: "statslog-service-permission-java-gen",
    tools: ["stats-log-api-gen"],
    cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller" +
        " --javaPackage com.android.permission" +
        " --javaClass PermissionStatsLog --minApiLevel 29",
    out: ["com/android/permission/PermissionStatsLog.java"],
}

java_library {
    name: "service-permission-statsd",
    srcs: [
        ":statslog-service-permission-java-gen",
    ],
    libs: [
        "androidx.annotation_annotation",
        "framework-statsd.stubs.module_lib",
    ],
    apex_available: [
        "com.android.permission",
    ],
    min_sdk_version: "30",
    sdk_version: "system_server_current",
}
