1// Copyright (C) 2020 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package {
16    default_team: "trendy_team_android_permissions",
17    default_applicable_licenses: ["Android-Apache-2.0"],
18}
19
20filegroup {
21    name: "service-permission-java-sources",
22    srcs: [
23        "java/**/*.java",
24        "java/**/*.kt",
25    ],
26    path: "java",
27    visibility: ["//visibility:private"],
28}
29
30java_library {
31    name: "service-permission-proto-stream",
32    proto: {
33        type: "stream",
34        include_dirs: [
35            "external/protobuf/src",
36        ],
37    },
38    srcs: [
39        "proto/role_service.proto",
40    ],
41    installable: false,
42    min_sdk_version: "30",
43    sdk_version: "system_server_current",
44    apex_available: [
45        "com.android.permission",
46        "test_com.android.permission",
47    ],
48}
49
50java_library {
51    name: "service-permission-shared",
52    srcs: [":service-permission-shared-srcs"],
53    libs: [
54        "framework-annotations-lib",
55    ],
56    static_libs: [
57        "framework-permission-s-shared",
58    ],
59    apex_available: [
60        "com.android.permission",
61        "test_com.android.permission",
62    ],
63    installable: false,
64    min_sdk_version: "30",
65    sdk_version: "system_server_current",
66}
67
68java_sdk_library {
69    name: "service-permission",
70    defaults: [
71        "framework-system-server-module-defaults",
72        "framework-system-server-module-optimize-defaults",
73    ],
74    impl_library_visibility: [
75        "//frameworks/base/apex/permission/tests",
76        "//frameworks/base/services/tests/mockingservicestests",
77        "//frameworks/base/services/tests/PackageManagerServiceTests/server",
78        "//packages/modules/Permission/tests/apex",
79    ],
80    srcs: [
81        ":service-permission-java-sources",
82    ],
83    libs: [
84        "androidx.annotation_annotation",
85        "framework-configinfrastructure.stubs.module_lib",
86        // TODO(b/177884622): Short term solution to prevent service-permission from seeing hidden
87        //  APIs in framework-permission, as we don't actually have any dependency in it.
88        //"framework-permission",
89        "framework-permission-s.impl",
90        "framework-permission-s-shared",
91        "framework-statsd.stubs.module_lib",
92        "jsr305",
93
94        // Soong fails to automatically add this dependency because all the
95        // *.kt sources are inside a filegroup.
96        "kotlin-annotations",
97        "safety-center-annotations",
98    ],
99    static_libs: [
100        "kotlin-stdlib",
101        "modules-utils-backgroundthread",
102        "modules-utils-build",
103        "modules-utils-os",
104        // framework-permission-s already includes com.android.permission.flags-aconfig-java
105        "role-controller",
106        "safety-center-config",
107        "safety-center-internal-data",
108        "safety-center-pending-intents",
109        "safety-center-persistence",
110        "safety-center-resources-lib",
111        "service-permission-shared",
112        "service-permission-statsd",
113        "permissioncontroller-statsd",
114        "service-permission-proto-stream",
115        "com.android.permission.flags-aconfig-java",
116    ],
117    errorprone: {
118        javacflags: ["-Xep:GuardedBy:ERROR"],
119    },
120    exclude_kotlinc_generated_files: true,
121    jarjar_rules: "jarjar-rules.txt",
122    kotlincflags: [
123        "-Werror",
124        "-Xjvm-default=all",
125        "-Xno-call-assertions",
126        "-Xno-param-assertions",
127        "-Xno-receiver-assertions",
128    ],
129    lint: {
130        baseline_filename: "lint-baseline.xml",
131    },
132    min_sdk_version: "30",
133    sdk_version: "system_server_current",
134    apex_available: [
135        "com.android.permission",
136        "test_com.android.permission",
137    ],
138    installable: true,
139    permitted_packages: [
140        "com.android.access",
141        "com.android.ecm",
142        "com.android.permission",
143        "com.android.role",
144        "com.android.safetycenter",
145    ],
146    optimize: {
147        proguard_compatibility: false, // TODO(b/215530220): remove when this is default behavior
148        proguard_flags_files: ["proguard.flags"],
149    },
150    aconfig_declarations: [
151        "android.permission.flags-aconfig",
152        "com.android.permission.flags-aconfig",
153    ],
154}
155
156genrule {
157    name: "statslog-service-permission-java-gen",
158    tools: ["stats-log-api-gen"],
159    cmd: "$(location stats-log-api-gen) --java $(out) --module permissioncontroller" +
160        " --javaPackage com.android.permission" +
161        " --javaClass PermissionStatsLog --minApiLevel 29",
162    out: ["com/android/permission/PermissionStatsLog.java"],
163}
164
165java_library {
166    name: "service-permission-statsd",
167    srcs: [
168        ":statslog-service-permission-java-gen",
169    ],
170    libs: [
171        "androidx.annotation_annotation",
172        "framework-statsd.stubs.module_lib",
173    ],
174    apex_available: [
175        "com.android.permission",
176    ],
177    min_sdk_version: "30",
178    sdk_version: "system_server_current",
179}
180