1// Copyright (C) 2023 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_applicable_licenses: ["Android-Apache-2.0"],
17}
18
19// NOTE: currently there's just one library for everything (which in
20// reality is just BooleanFileDataStore), but it might be better to
21// split into multiple libraries in the feature (if it gets bigger
22// and/or if new classes adds external dependencies like proto support)
23java_library {
24    name: "adservices-shared-storage",
25    min_sdk_version: "30",
26    sdk_version: "module_current",
27    srcs: [
28        "java/com/android/adservices/shared/storage/*.java",
29    ],
30    libs: [
31        "framework-annotations-lib",
32    ],
33    static_libs: [
34        "adservices-shared-util",
35        "modules-utils-build",
36        "modules-utils-preconditions",
37    ],
38    visibility: [
39        "//packages/modules/AdServices:__subpackages__",
40        "//packages/modules/ExtServices:__subpackages__",
41        "//packages/modules/OnDevicePersonalization:__subpackages__",
42    ],
43    apex_available: [
44        "com.android.adservices",
45        "com.android.extservices",
46        "com.android.ondevicepersonalization",
47    ],
48}
49
50java_library {
51    name: "adservices-shared-error-logging",
52    min_sdk_version: "30",
53    sdk_version: "module_current",
54    srcs: [
55        "java/com/android/adservices/shared/errorlogging/*.java",
56        ":statslog-adservices-java-gen",
57    ],
58    static_libs: [
59        "adservices-shared-util",
60        "adservices-shared-proto-lite",
61        "adservices-shared-proto-utils",
62        "adservices-shared-common",
63    ],
64    libs: [
65        "androidx.annotation_annotation",
66        "framework-annotations-lib",
67        "framework-statsd.stubs.module_lib",
68        "auto_value_annotations",
69        "jsr305",
70    ],
71    plugins: [
72        "auto_value_plugin",
73        "auto_annotation_plugin",
74    ],
75    visibility: [
76        "//packages/modules/AdServices:__subpackages__",
77        "//packages/modules/ExtServices:__subpackages__",
78        "//packages/modules/OnDevicePersonalization:__subpackages__",
79    ],
80    apex_available: [
81        "com.android.adservices",
82        "com.android.extservices",
83        "com.android.ondevicepersonalization",
84    ],
85}
86
87java_library {
88    name: "adservices-shared-spe",
89    min_sdk_version: "30",
90    sdk_version: "module_current",
91    srcs: [
92        "java/com/android/adservices/shared/spe/**/*.java",
93        ":statslog-adservices-java-gen",
94    ],
95    static_libs: [
96        "adservices-shared-common",
97        "adservices-shared-error-logging",
98        "adservices-shared-proto-utils",
99        "guava", // MoreExecutors, Executors...
100    ],
101    libs: [
102        "androidx.annotation_annotation",
103        "framework-annotations-lib",
104        "framework-statsd.stubs.module_lib",
105        "auto_value_annotations",
106    ],
107    plugins: [
108        "auto_value_plugin",
109        "auto_annotation_plugin",
110    ],
111    visibility: [
112        "//packages/modules/AdServices:__subpackages__",
113        "//packages/modules/ExtServices:__subpackages__",
114        "//packages/modules/OnDevicePersonalization:__subpackages__",
115    ],
116    apex_available: [
117        "com.android.adservices",
118        "com.android.extservices",
119        "com.android.ondevicepersonalization",
120    ],
121}
122
123// NOTE: currently there's just one library for everything (which for
124// now is just ApplicationContext), but it might be better to split
125// into multiple libraries in the future (if it gets bigger and/or
126// if new classes adds external dependencies)
127java_library {
128    name: "adservices-shared-common",
129    min_sdk_version: "30",
130    sdk_version: "module_current",
131    srcs: [
132        "java/com/android/adservices/shared/common/**/*.java",
133    ],
134    exclude_srcs: [
135        "java/com/android/adservices/shared/common/exception/*.java",
136    ],
137    static_libs: [
138        "adservices-shared-util",
139        "modules-utils-preconditions",
140    ],
141    libs: [
142        "framework-annotations-lib",
143        "jsr305", // for @ThreadSafe",
144    ],
145    apex_available: [
146        "com.android.adservices",
147        "com.android.extservices",
148        "com.android.ondevicepersonalization",
149    ],
150}
151
152java_library {
153    name: "adservices-shared-exceptions",
154    min_sdk_version: "30",
155    sdk_version: "module_current",
156    srcs: [
157        "java/com/android/adservices/shared/common/exception/*.java",
158    ],
159    apex_available: [
160        "com.android.adservices",
161        "com.android.extservices",
162        "com.android.ondevicepersonalization",
163    ],
164}
165
166filegroup {
167    name: "adservices-shared-flag-annotation-sources",
168    srcs: [
169        "java/com/android/adservices/shared/common/flags/ConfigFlag.java",
170        "java/com/android/adservices/shared/common/flags/FeatureFlag.java",
171    ],
172    visibility: [
173        "//packages/modules/AdServices/adservices:__subpackages__",
174        "//packages/modules/OnDevicePersonalization:__subpackages__",
175    ],
176    path: "java",
177}
178
179java_library {
180    name: "adservices-shared-proto-utils",
181    min_sdk_version: "30",
182    sdk_version: "module_current",
183    srcs: [
184        "java/com/android/adservices/shared/proto/**/*.java",
185    ],
186    static_libs: [
187        "adservices-shared-proto-lite",
188        "adservices-shared-util",
189    ],
190    libs: [
191        "framework-annotations-lib",
192    ],
193    apex_available: [
194        "com.android.adservices",
195        "com.android.extservices",
196        "com.android.ondevicepersonalization",
197    ],
198}
199
200java_library {
201    name: "adservices-shared-testing",
202    min_sdk_version: "30",
203    sdk_version: "module_current",
204    srcs: [
205        "java/com/android/adservices/shared/testing/**/*.java",
206        ":adservices-shared-sideless-testing-sources",
207    ],
208    static_libs: [
209        // TODO(b/345219434): use defaults instead?
210        "mockito-target-extended-minus-junit4",
211        "adservices-shared-common",
212        "adservices-shared-util",
213        "androidx.test.core",
214        "framework-annotations-lib", // @VisibleForTesting
215        "junit",
216        "truth",
217    ],
218    visibility: [
219        "//packages/modules/AdServices:__subpackages__",
220        "//packages/modules/ExtServices:__subpackages__",
221        "//packages/modules/OnDevicePersonalization:__subpackages__",
222    ],
223    apex_available: [
224        "com.android.adservices",
225        "com.android.extservices",
226        "com.android.ondevicepersonalization",
227    ],
228}
229
230java_library {
231    name: "adservices-shared-static-class-checker",
232    min_sdk_version: "30",
233    sdk_version: "module_current",
234    srcs: [
235        "java/com/android/adservices/mockito/StaticClassChecker.java",
236        ":adservices-shared-sideless-testing-TestNamer-sources",
237    ],
238    static_libs: [
239        "guava", // for ImmutableSet
240    ],
241    visibility: [
242        "//packages/modules/AdServices:__subpackages__",
243        "//packages/modules/ExtServices:__subpackages__",
244        "//packages/modules/OnDevicePersonalization:__subpackages__",
245    ],
246}
247
248java_library {
249    name: "adservices-shared-mockito-expectations",
250    min_sdk_version: "30",
251    sdk_version: "module_current",
252    srcs: [
253        // TODO(b/338132355): might be better to split into separate mockers:
254
255        // Base classes
256        "java/com/android/adservices/mockito/AbstractMocker.java",
257        "java/com/android/adservices/mockito/AbstractStaticMocker.java",
258        "java/com/android/adservices/mockito/StaticClassChecker.java",
259
260        // AndroidStaticMocker
261        "java/com/android/adservices/mockito/AndroidStaticMocker.java",
262        "java/com/android/adservices/mockito/AndroidExtendedMockitoMocker.java",
263        "java/com/android/adservices/mockito/LogInterceptor.java",
264
265        // SharedMocker
266        "java/com/android/adservices/mockito/SharedMocker.java",
267        "java/com/android/adservices/mockito/SharedMockitoMocker.java",
268    ],
269    libs: [
270        "framework-annotations-lib", // for @Nullable
271    ],
272    static_libs: [
273        "adservices-shared-static-class-checker",
274        "error_prone_annotations", // for @FormatMethod
275        "modules-utils-build", // for SdkLevel
276        "mockito-target-extended-minus-junit4",
277        "modules-utils-preconditions",
278
279        // TODO(b/338132355): might be better to split into separate mockers
280
281        // Need by SharedMocker.java
282        "adservices-shared-common",
283        "adservices-shared-spe",
284        "adservices-shared-testing",
285
286        // Need by AndroidStaticMocker.java
287        // "adservices-shared-testing",
288    ],
289    visibility: [
290        "//packages/modules/AdServices:__subpackages__",
291        "//packages/modules/ExtServices:__subpackages__",
292        "//packages/modules/OnDevicePersonalization:__subpackages__",
293    ],
294    apex_available: [
295        "com.android.adservices",
296        "com.android.extservices",
297        "com.android.ondevicepersonalization",
298    ],
299}
300
301filegroup {
302    name: "adservices-shared-extended-mockito-rule-sources",
303    srcs: [
304        "java/com/android/adservices/mockito/AdServicesExtendedMockitoRule.java",
305        "java/com/android/adservices/mockito/ExtendedMockitoInlineCleanerRule.java",
306    ],
307    path: "java",
308    visibility: [
309        "//packages/modules/AdServices:__subpackages__",
310        "//packages/modules/ExtServices:__subpackages__",
311        "//packages/modules/OnDevicePersonalization:__subpackages__",
312    ],
313}
314
315// NOTE: it does not include TestableDeviceConfig
316java_defaults {
317    name: "adservices-shared-extended-mockito-defaults",
318    srcs: [
319        ":adservices-shared-extended-mockito-rule-sources",
320    ],
321    static_libs: [
322        "adservices-shared-static-class-checker",
323    ],
324    // TODO(b/345219434): change it back to
325    // modules-utils-extended-mockito-rule-defaults once it have
326    // compile_multilib: "both",
327    defaults: ["modules-utils-testable-device-config-defaults"],
328    visibility: [
329        "//packages/modules/AdServices:__subpackages__",
330        "//packages/modules/ExtServices:__subpackages__",
331        "//packages/modules/OnDevicePersonalization:__subpackages__",
332    ],
333}
334
335// NOTE: this util library only have one Preconditions class now. If we add more classes, we should
336// consider splitting this into a specific preconditions library. (if it gets bigger and/or if new
337// classes adds external dependencies)
338java_library {
339    name: "adservices-shared-util",
340    min_sdk_version: "30",
341    sdk_version: "module_current",
342    srcs: [
343        "java/com/android/adservices/shared/util/*.java",
344    ],
345    libs: [
346        "framework-annotations-lib",
347    ],
348    static_libs: [
349        "modules-utils-build",
350        "error_prone_annotations", // For @FormatMethod
351    ],
352    apex_available: [
353        "com.android.adservices",
354        "com.android.extservices",
355        "com.android.ondevicepersonalization",
356    ],
357}
358