blob: b60f8136052b361c54f79fec9e5b57b7e372aaf2 [file] [log] [blame]
Paul Duffinf7f65da2021-03-10 15:00:46 +00001// Copyright (C) 2021 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 sdk
16
Paul Duffin4a1d4512021-03-18 10:12:26 +000017import (
Paul Duffin7c475152021-06-09 16:17:58 +010018 "fmt"
19 "path/filepath"
Paul Duffin4a1d4512021-03-18 10:12:26 +000020 "testing"
21
22 "android/soong/android"
Paul Duffina57835e2021-04-19 13:23:06 +010023 "android/soong/java"
Paul Duffin4a1d4512021-03-18 10:12:26 +000024)
Paul Duffinf7f65da2021-03-10 15:00:46 +000025
Paul Duffin7c475152021-06-09 16:17:58 +010026// fixtureAddPlatformBootclasspathForBootclasspathFragment adds a platform_bootclasspath module that
27// references the bootclasspath fragment.
28func fixtureAddPlatformBootclasspathForBootclasspathFragment(apex, fragment string) android.FixturePreparer {
29 return android.GroupFixturePreparers(
30 // Add a platform_bootclasspath module.
31 android.FixtureAddTextFile("frameworks/base/boot/Android.bp", fmt.Sprintf(`
32 platform_bootclasspath {
33 name: "platform-bootclasspath",
34 fragments: [
35 {
36 apex: "%s",
37 module: "%s",
38 },
39 ],
40 }
41 `, apex, fragment)),
42 android.FixtureAddFile("frameworks/base/config/boot-profile.txt", nil),
Paul Duffinc8ead412021-06-07 19:28:15 +010043 android.FixtureAddFile("build/soong/scripts/check_boot_jars/package_allowed_list.txt", nil),
Paul Duffin7c475152021-06-09 16:17:58 +010044 )
45}
46
47// fixtureAddPrebuiltApexForBootclasspathFragment adds a prebuilt_apex that exports the fragment.
48func fixtureAddPrebuiltApexForBootclasspathFragment(apex, fragment string) android.FixturePreparer {
49 apexFile := fmt.Sprintf("%s.apex", apex)
50 dir := "prebuilts/apex"
51 return android.GroupFixturePreparers(
52 // A preparer to add a prebuilt apex to the test fixture.
53 android.FixtureAddTextFile(filepath.Join(dir, "Android.bp"), fmt.Sprintf(`
54 prebuilt_apex {
55 name: "%s",
56 src: "%s",
57 exported_bootclasspath_fragments: [
58 "%s",
59 ],
60 }
61 `, apex, apexFile, fragment)),
62 android.FixtureAddFile(filepath.Join(dir, apexFile), nil),
63 )
64}
65
Paul Duffina57835e2021-04-19 13:23:06 +010066func TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) {
67 result := android.GroupFixturePreparers(
68 prepareForSdkTestWithJava,
Paul Duffin023dba02021-04-22 01:45:29 +010069 java.PrepareForTestWithJavaDefaultModules,
Paul Duffina57835e2021-04-19 13:23:06 +010070 prepareForSdkTestWithApex,
71
72 // Some additional files needed for the art apex.
73 android.FixtureMergeMockFs(android.MockFS{
74 "com.android.art.avbpubkey": nil,
75 "com.android.art.pem": nil,
76 "system/sepolicy/apex/com.android.art-file_contexts": nil,
77 }),
Paul Duffin023dba02021-04-22 01:45:29 +010078
Paul Duffin7c475152021-06-09 16:17:58 +010079 // Add a platform_bootclasspath that depends on the fragment.
80 fixtureAddPlatformBootclasspathForBootclasspathFragment("com.android.art", "mybootclasspathfragment"),
Paul Duffin023dba02021-04-22 01:45:29 +010081
Paul Duffina57835e2021-04-19 13:23:06 +010082 java.FixtureConfigureBootJars("com.android.art:mybootlib"),
83 android.FixtureWithRootAndroidBp(`
84 sdk {
85 name: "mysdk",
86 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffina57835e2021-04-19 13:23:06 +010087 }
88
89 apex {
90 name: "com.android.art",
91 key: "com.android.art.key",
92 bootclasspath_fragments: [
93 "mybootclasspathfragment",
94 ],
95 updatable: false,
96 }
97
98 bootclasspath_fragment {
99 name: "mybootclasspathfragment",
100 image_name: "art",
Paul Duffinf23bc472021-04-27 12:42:20 +0100101 contents: ["mybootlib"],
Paul Duffina57835e2021-04-19 13:23:06 +0100102 apex_available: ["com.android.art"],
103 }
104
105 apex_key {
106 name: "com.android.art.key",
107 public_key: "com.android.art.avbpubkey",
108 private_key: "com.android.art.pem",
109 }
110
111 java_library {
112 name: "mybootlib",
113 srcs: ["Test.java"],
114 system_modules: "none",
115 sdk_version: "none",
116 compile_dex: true,
117 apex_available: ["com.android.art"],
118 }
119 `),
120 ).RunTest(t)
121
Paul Duffin7c475152021-06-09 16:17:58 +0100122 // A preparer to update the test fixture used when processing an unpackage snapshot.
123 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("com.android.art", "mybootclasspathfragment")
Paul Duffin023dba02021-04-22 01:45:29 +0100124
Paul Duffina57835e2021-04-19 13:23:06 +0100125 CheckSnapshot(t, result, "mysdk", "",
126 checkUnversionedAndroidBpContents(`
127// This is auto-generated. DO NOT EDIT.
128
129prebuilt_bootclasspath_fragment {
130 name: "mybootclasspathfragment",
131 prefer: false,
132 visibility: ["//visibility:public"],
133 apex_available: ["com.android.art"],
134 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100135 contents: ["mybootlib"],
Paul Duffinda286f42021-06-29 11:59:23 +0100136 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100137 annotation_flags: "hiddenapi/annotation-flags.csv",
138 metadata: "hiddenapi/metadata.csv",
139 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100140 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100141 all_flags: "hiddenapi/all-flags.csv",
142 },
Paul Duffina57835e2021-04-19 13:23:06 +0100143}
144
145java_import {
146 name: "mybootlib",
147 prefer: false,
148 visibility: ["//visibility:public"],
149 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100150 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100151}
152`),
153 checkVersionedAndroidBpContents(`
154// This is auto-generated. DO NOT EDIT.
155
156prebuilt_bootclasspath_fragment {
157 name: "mysdk_mybootclasspathfragment@current",
158 sdk_member_name: "mybootclasspathfragment",
159 visibility: ["//visibility:public"],
160 apex_available: ["com.android.art"],
161 image_name: "art",
Paul Duffin2dc665b2021-04-23 16:58:51 +0100162 contents: ["mysdk_mybootlib@current"],
Paul Duffinda286f42021-06-29 11:59:23 +0100163 hidden_api: {
Paul Duffinda286f42021-06-29 11:59:23 +0100164 annotation_flags: "hiddenapi/annotation-flags.csv",
165 metadata: "hiddenapi/metadata.csv",
166 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100167 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffinda286f42021-06-29 11:59:23 +0100168 all_flags: "hiddenapi/all-flags.csv",
169 },
Paul Duffina57835e2021-04-19 13:23:06 +0100170}
171
172java_import {
173 name: "mysdk_mybootlib@current",
174 sdk_member_name: "mybootlib",
175 visibility: ["//visibility:public"],
176 apex_available: ["com.android.art"],
Paul Duffin5c211452021-07-15 12:42:44 +0100177 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffina57835e2021-04-19 13:23:06 +0100178}
179
180sdk_snapshot {
181 name: "mysdk@current",
182 visibility: ["//visibility:public"],
183 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@current"],
184 java_boot_libs: ["mysdk_mybootlib@current"],
185}
186`),
187 checkAllCopyRules(`
Paul Duffinda286f42021-06-29 11:59:23 +0100188.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
189.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
190.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin67b9d612021-07-21 17:38:47 +0100191.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv
Paul Duffinda286f42021-06-29 11:59:23 +0100192.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100193.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffinda286f42021-06-29 11:59:23 +0100194 `),
Paul Duffin7c475152021-06-09 16:17:58 +0100195 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffinc8ead412021-06-07 19:28:15 +0100196
197 // Check the behavior of the snapshot without the source.
198 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
199 // Make sure that the boot jars package check rule includes the dex jar retrieved from the prebuilt apex.
200 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/prebuilts/apex/com.android.art.deapexer/android_common/deapexer/javalib/mybootlib.jar")
201 }),
202
Paul Duffin7c475152021-06-09 16:17:58 +0100203 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
204 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffina57835e2021-04-19 13:23:06 +0100205 )
Paul Duffinc8ead412021-06-07 19:28:15 +0100206
207 // Make sure that the boot jars package check rule includes the dex jar created from the source.
208 checkBootJarsPackageCheckRule(t, result, "out/soong/.intermediates/mybootlib/android_common_apex10000/aligned/mybootlib.jar")
209}
210
211// checkBootJarsPackageCheckRule checks that the supplied module is an input to the boot jars
212// package check rule.
213func checkBootJarsPackageCheckRule(t *testing.T, result *android.TestResult, expectedModule string) {
214 platformBcp := result.ModuleForTests("platform-bootclasspath", "android_common")
215 bootJarsCheckRule := platformBcp.Rule("boot_jars_package_check")
216 command := bootJarsCheckRule.RuleParams.Command
217 expectedCommandArgs := " out/soong/host/linux-x86/bin/dexdump build/soong/scripts/check_boot_jars/package_allowed_list.txt " + expectedModule + " &&"
218 android.AssertStringDoesContain(t, "boot jars package check", command, expectedCommandArgs)
Paul Duffina57835e2021-04-19 13:23:06 +0100219}
220
221func TestSnapshotWithBootClasspathFragment_Contents(t *testing.T) {
Paul Duffin4a1d4512021-03-18 10:12:26 +0000222 result := android.GroupFixturePreparers(
223 prepareForSdkTestWithJava,
Paul Duffin895c7142021-04-25 13:40:15 +0100224 java.PrepareForTestWithJavaDefaultModules,
225 java.PrepareForTestWithJavaSdkLibraryFiles,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100226 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"),
satayevd604b212021-07-21 14:23:52 +0100227 java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:myothersdklibrary"),
Paul Duffin7c475152021-06-09 16:17:58 +0100228 prepareForSdkTestWithApex,
229
230 // Add a platform_bootclasspath that depends on the fragment.
231 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
232
Paul Duffin4a1d4512021-03-18 10:12:26 +0000233 android.FixtureWithRootAndroidBp(`
234 sdk {
235 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100236 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100237 java_sdk_libs: [
238 // This is not strictly needed as it should be automatically added to the sdk_snapshot as
239 // a java_sdk_libs module because it is used in the mybootclasspathfragment's
240 // api.stub_libs property. However, it is specified here to ensure that duplicates are
241 // correctly deduped.
242 "mysdklibrary",
243 ],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000244 }
Paul Duffinf7f65da2021-03-10 15:00:46 +0000245
Paul Duffin7c475152021-06-09 16:17:58 +0100246 apex {
247 name: "myapex",
248 key: "myapex.key",
249 min_sdk_version: "2",
250 bootclasspath_fragments: ["mybootclasspathfragment"],
251 }
252
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100253 bootclasspath_fragment {
254 name: "mybootclasspathfragment",
Paul Duffin7c475152021-06-09 16:17:58 +0100255 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100256 contents: [
257 // This should be automatically added to the sdk_snapshot as a java_boot_libs module.
258 "mybootlib",
259 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
260 "myothersdklibrary",
261 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100262 api: {
263 stub_libs: ["mysdklibrary"],
264 },
265 core_platform_api: {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100266 // This should be automatically added to the sdk_snapshot as a java_sdk_libs module.
Paul Duffin895c7142021-04-25 13:40:15 +0100267 stub_libs: ["mycoreplatform"],
268 },
Paul Duffina57835e2021-04-19 13:23:06 +0100269 }
270
271 java_library {
272 name: "mybootlib",
Paul Duffin7c475152021-06-09 16:17:58 +0100273 apex_available: ["myapex"],
Paul Duffina57835e2021-04-19 13:23:06 +0100274 srcs: ["Test.java"],
275 system_modules: "none",
276 sdk_version: "none",
Paul Duffin7c475152021-06-09 16:17:58 +0100277 min_sdk_version: "2",
Paul Duffina57835e2021-04-19 13:23:06 +0100278 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100279 permitted_packages: ["mybootlib"],
Paul Duffin4a1d4512021-03-18 10:12:26 +0000280 }
Paul Duffin895c7142021-04-25 13:40:15 +0100281
282 java_sdk_library {
283 name: "mysdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100284 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100285 srcs: ["Test.java"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100286 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100287 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100288 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100289 }
290
291 java_sdk_library {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100292 name: "myothersdklibrary",
Paul Duffin7c475152021-06-09 16:17:58 +0100293 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100294 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100295 compile_dex: true,
Paul Duffina10bd3c2021-05-12 13:46:54 +0100296 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100297 min_sdk_version: "2",
298 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100299 }
300
301 java_sdk_library {
Paul Duffin895c7142021-04-25 13:40:15 +0100302 name: "mycoreplatform",
Paul Duffin7c475152021-06-09 16:17:58 +0100303 apex_available: ["myapex"],
Paul Duffin895c7142021-04-25 13:40:15 +0100304 srcs: ["Test.java"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100305 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100306 public: {enabled: true},
Paul Duffin7c475152021-06-09 16:17:58 +0100307 min_sdk_version: "2",
Paul Duffin895c7142021-04-25 13:40:15 +0100308 }
Paul Duffin4a1d4512021-03-18 10:12:26 +0000309 `),
310 ).RunTest(t)
Paul Duffinf7f65da2021-03-10 15:00:46 +0000311
Paul Duffin7c475152021-06-09 16:17:58 +0100312 // A preparer to update the test fixture used when processing an unpackage snapshot.
313 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
314
Paul Duffin36474d32021-03-12 12:19:43 +0000315 CheckSnapshot(t, result, "mysdk", "",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000316 checkUnversionedAndroidBpContents(`
317// This is auto-generated. DO NOT EDIT.
318
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100319prebuilt_bootclasspath_fragment {
320 name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000321 prefer: false,
322 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100323 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100324 contents: [
325 "mybootlib",
326 "myothersdklibrary",
327 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100328 api: {
329 stub_libs: ["mysdklibrary"],
330 },
331 core_platform_api: {
332 stub_libs: ["mycoreplatform"],
333 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100334 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100335 annotation_flags: "hiddenapi/annotation-flags.csv",
336 metadata: "hiddenapi/metadata.csv",
337 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100338 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100339 all_flags: "hiddenapi/all-flags.csv",
340 },
Paul Duffina57835e2021-04-19 13:23:06 +0100341}
342
343java_import {
344 name: "mybootlib",
345 prefer: false,
346 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100347 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100348 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100349 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000350}
Paul Duffin895c7142021-04-25 13:40:15 +0100351
352java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100353 name: "myothersdklibrary",
354 prefer: false,
355 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100356 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100357 shared_library: true,
358 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100359 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100360 public: {
361 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
362 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
363 current_api: "sdk_library/public/myothersdklibrary.txt",
364 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
365 sdk_version: "current",
366 },
367}
368
369java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100370 name: "mysdklibrary",
371 prefer: false,
372 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100373 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100374 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100375 public: {
376 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
377 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
378 current_api: "sdk_library/public/mysdklibrary.txt",
379 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
380 sdk_version: "current",
381 },
382}
383
384java_sdk_library_import {
385 name: "mycoreplatform",
386 prefer: false,
387 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100388 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100389 shared_library: true,
390 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100391 public: {
392 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
393 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
394 current_api: "sdk_library/public/mycoreplatform.txt",
395 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
396 sdk_version: "current",
397 },
398}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100399 `),
Paul Duffinf7f65da2021-03-10 15:00:46 +0000400 checkVersionedAndroidBpContents(`
401// This is auto-generated. DO NOT EDIT.
402
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100403prebuilt_bootclasspath_fragment {
404 name: "mysdk_mybootclasspathfragment@current",
405 sdk_member_name: "mybootclasspathfragment",
Paul Duffinf7f65da2021-03-10 15:00:46 +0000406 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100407 apex_available: ["myapex"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100408 contents: [
409 "mysdk_mybootlib@current",
410 "mysdk_myothersdklibrary@current",
411 ],
Paul Duffin895c7142021-04-25 13:40:15 +0100412 api: {
413 stub_libs: ["mysdk_mysdklibrary@current"],
414 },
415 core_platform_api: {
416 stub_libs: ["mysdk_mycoreplatform@current"],
417 },
Paul Duffin2fef1362021-04-15 13:32:00 +0100418 hidden_api: {
Paul Duffin2fef1362021-04-15 13:32:00 +0100419 annotation_flags: "hiddenapi/annotation-flags.csv",
420 metadata: "hiddenapi/metadata.csv",
421 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100422 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100423 all_flags: "hiddenapi/all-flags.csv",
424 },
Paul Duffina57835e2021-04-19 13:23:06 +0100425}
426
427java_import {
428 name: "mysdk_mybootlib@current",
429 sdk_member_name: "mybootlib",
430 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100431 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100432 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100433 permitted_packages: ["mybootlib"],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000434}
435
Paul Duffin895c7142021-04-25 13:40:15 +0100436java_sdk_library_import {
Paul Duffina10bd3c2021-05-12 13:46:54 +0100437 name: "mysdk_myothersdklibrary@current",
438 sdk_member_name: "myothersdklibrary",
439 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100440 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100441 shared_library: true,
442 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100443 permitted_packages: ["myothersdklibrary"],
Paul Duffina10bd3c2021-05-12 13:46:54 +0100444 public: {
445 jars: ["sdk_library/public/myothersdklibrary-stubs.jar"],
446 stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"],
447 current_api: "sdk_library/public/myothersdklibrary.txt",
448 removed_api: "sdk_library/public/myothersdklibrary-removed.txt",
449 sdk_version: "current",
450 },
451}
452
453java_sdk_library_import {
Paul Duffin895c7142021-04-25 13:40:15 +0100454 name: "mysdk_mysdklibrary@current",
455 sdk_member_name: "mysdklibrary",
456 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100457 apex_available: ["myapex"],
Paul Duffinf4600f62021-05-13 22:34:45 +0100458 shared_library: false,
Paul Duffin895c7142021-04-25 13:40:15 +0100459 public: {
460 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
461 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
462 current_api: "sdk_library/public/mysdklibrary.txt",
463 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
464 sdk_version: "current",
465 },
466}
467
468java_sdk_library_import {
469 name: "mysdk_mycoreplatform@current",
470 sdk_member_name: "mycoreplatform",
471 visibility: ["//visibility:public"],
Paul Duffin7c475152021-06-09 16:17:58 +0100472 apex_available: ["myapex"],
Paul Duffinea8f8082021-06-24 13:25:57 +0100473 shared_library: true,
474 compile_dex: true,
Paul Duffin895c7142021-04-25 13:40:15 +0100475 public: {
476 jars: ["sdk_library/public/mycoreplatform-stubs.jar"],
477 stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"],
478 current_api: "sdk_library/public/mycoreplatform.txt",
479 removed_api: "sdk_library/public/mycoreplatform-removed.txt",
480 sdk_version: "current",
481 },
482}
483
Paul Duffinf7f65da2021-03-10 15:00:46 +0000484sdk_snapshot {
485 name: "mysdk@current",
486 visibility: ["//visibility:public"],
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100487 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@current"],
Paul Duffina57835e2021-04-19 13:23:06 +0100488 java_boot_libs: ["mysdk_mybootlib@current"],
Paul Duffin895c7142021-04-25 13:40:15 +0100489 java_sdk_libs: [
Paul Duffina10bd3c2021-05-12 13:46:54 +0100490 "mysdk_myothersdklibrary@current",
Paul Duffin895c7142021-04-25 13:40:15 +0100491 "mysdk_mysdklibrary@current",
492 "mysdk_mycoreplatform@current",
493 ],
Paul Duffinf7f65da2021-03-10 15:00:46 +0000494}
Paul Duffina10bd3c2021-05-12 13:46:54 +0100495 `),
Paul Duffina57835e2021-04-19 13:23:06 +0100496 checkAllCopyRules(`
Paul Duffin2fef1362021-04-15 13:32:00 +0100497.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
498.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
499.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin67b9d612021-07-21 17:38:47 +0100500.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv
Paul Duffin2fef1362021-04-15 13:32:00 +0100501.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100502.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffina10bd3c2021-05-12 13:46:54 +0100503.intermediates/myothersdklibrary.stubs/android_common/javac/myothersdklibrary.stubs.jar -> sdk_library/public/myothersdklibrary-stubs.jar
504.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt
505.intermediates/myothersdklibrary.stubs.source/android_common/metalava/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt
Paul Duffin895c7142021-04-25 13:40:15 +0100506.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
507.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
508.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
509.intermediates/mycoreplatform.stubs/android_common/javac/mycoreplatform.stubs.jar -> sdk_library/public/mycoreplatform-stubs.jar
510.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt
511.intermediates/mycoreplatform.stubs.source/android_common/metalava/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt
Paul Duffin7c475152021-06-09 16:17:58 +0100512`),
513 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
Paul Duffind061d402021-06-07 21:36:01 +0100514 snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) {
515 module := result.ModuleForTests("platform-bootclasspath", "android_common")
516 var rule android.TestingBuildParams
517 rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv")
518 java.CheckHiddenAPIRuleInputs(t, "monolithic flags", `
519 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/annotation-flags-from-classes.csv
520 out/soong/hiddenapi/hiddenapi-stub-flags.txt
521 snapshot/hiddenapi/annotation-flags.csv
522 `, rule)
523
524 rule = module.Output("out/soong/hiddenapi/hiddenapi-unsupported.csv")
525 java.CheckHiddenAPIRuleInputs(t, "monolithic metadata", `
526 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/metadata-from-classes.csv
527 snapshot/hiddenapi/metadata.csv
528 `, rule)
529
530 rule = module.Output("out/soong/hiddenapi/hiddenapi-index.csv")
531 java.CheckHiddenAPIRuleInputs(t, "monolithic index", `
532 out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv
533 snapshot/hiddenapi/index.csv
534 `, rule)
Paul Duffin630b11e2021-07-15 13:35:26 +0100535
536 // Make sure that the permitted packages from the prebuilts end up in the
537 // updatable-bcp-packages.txt file.
538 rule = module.Output("updatable-bcp-packages.txt")
539 expectedContents := `'mybootlib\nmyothersdklibrary\n'`
540 android.AssertStringEquals(t, "updatable-bcp-packages.txt", expectedContents, rule.Args["content"])
Paul Duffind061d402021-06-07 21:36:01 +0100541 }),
Paul Duffin7c475152021-06-09 16:17:58 +0100542 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
543 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
544 )
Paul Duffinf7f65da2021-03-10 15:00:46 +0000545}
Paul Duffin04b4a192021-03-18 11:05:31 +0000546
Paul Duffin51227d82021-05-18 12:54:27 +0100547// TestSnapshotWithBootClasspathFragment_Fragments makes sure that the fragments property of a
548// bootclasspath_fragment is correctly output to the sdk snapshot.
549func TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) {
550 result := android.GroupFixturePreparers(
551 prepareForSdkTestWithJava,
552 java.PrepareForTestWithJavaDefaultModules,
553 java.PrepareForTestWithJavaSdkLibraryFiles,
554 java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"),
555 prepareForSdkTestWithApex,
556
557 // Some additional files needed for the myotherapex.
558 android.FixtureMergeMockFs(android.MockFS{
559 "system/sepolicy/apex/myotherapex-file_contexts": nil,
560 "myotherapex/apex_manifest.json": nil,
561 "myotherapex/Test.java": nil,
562 }),
563
564 android.FixtureAddTextFile("myotherapex/Android.bp", `
565 apex {
566 name: "myotherapex",
567 key: "myapex.key",
568 min_sdk_version: "2",
569 bootclasspath_fragments: ["myotherbootclasspathfragment"],
570 }
571
572 bootclasspath_fragment {
573 name: "myotherbootclasspathfragment",
574 apex_available: ["myotherapex"],
575 contents: [
576 "myotherlib",
577 ],
578 }
579
580 java_library {
581 name: "myotherlib",
582 apex_available: ["myotherapex"],
583 srcs: ["Test.java"],
584 min_sdk_version: "2",
585 permitted_packages: ["myothersdklibrary"],
586 compile_dex: true,
587 }
588 `),
589
590 android.FixtureWithRootAndroidBp(`
591 sdk {
592 name: "mysdk",
593 bootclasspath_fragments: ["mybootclasspathfragment"],
594 }
595
596 bootclasspath_fragment {
597 name: "mybootclasspathfragment",
598 contents: [
599 "mysdklibrary",
600 ],
601 fragments: [
602 {
603 apex: "myotherapex",
604 module: "myotherbootclasspathfragment"
605 },
606 ],
607 }
608
609 java_sdk_library {
610 name: "mysdklibrary",
611 srcs: ["Test.java"],
612 shared_library: false,
613 public: {enabled: true},
614 min_sdk_version: "2",
615 }
616 `),
617 ).RunTest(t)
618
619 // A preparer to update the test fixture used when processing an unpackage snapshot.
620 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
621
622 CheckSnapshot(t, result, "mysdk", "",
623 checkUnversionedAndroidBpContents(`
624// This is auto-generated. DO NOT EDIT.
625
626prebuilt_bootclasspath_fragment {
627 name: "mybootclasspathfragment",
628 prefer: false,
629 visibility: ["//visibility:public"],
630 apex_available: ["//apex_available:platform"],
631 contents: ["mysdklibrary"],
632 fragments: [
633 {
634 apex: "myotherapex",
635 module: "myotherbootclasspathfragment",
636 },
637 ],
638 hidden_api: {
Paul Duffin51227d82021-05-18 12:54:27 +0100639 annotation_flags: "hiddenapi/annotation-flags.csv",
640 metadata: "hiddenapi/metadata.csv",
641 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100642 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffin51227d82021-05-18 12:54:27 +0100643 all_flags: "hiddenapi/all-flags.csv",
644 },
645}
646
647java_sdk_library_import {
648 name: "mysdklibrary",
649 prefer: false,
650 visibility: ["//visibility:public"],
651 apex_available: ["//apex_available:platform"],
652 shared_library: false,
653 public: {
654 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
655 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
656 current_api: "sdk_library/public/mysdklibrary.txt",
657 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
658 sdk_version: "current",
659 },
660}
661 `),
662 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
663 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
664 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
665 )
666}
667
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100668// Test that bootclasspath_fragment works with sdk.
669func TestBasicSdkWithBootclasspathFragment(t *testing.T) {
Paul Duffin04b4a192021-03-18 11:05:31 +0000670 android.GroupFixturePreparers(
671 prepareForSdkTestWithApex,
672 prepareForSdkTestWithJava,
Paul Duffin8018e502021-05-21 19:28:09 +0100673 android.FixtureAddFile("java/mybootlib.jar", nil),
Paul Duffin04b4a192021-03-18 11:05:31 +0000674 android.FixtureWithRootAndroidBp(`
675 sdk {
676 name: "mysdk",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100677 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000678 }
679
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100680 bootclasspath_fragment {
681 name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000682 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100683 contents: ["mybootlib"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000684 apex_available: ["myapex"],
685 }
686
Paul Duffin8018e502021-05-21 19:28:09 +0100687 java_library {
688 name: "mybootlib",
689 apex_available: ["myapex"],
690 srcs: ["Test.java"],
691 system_modules: "none",
692 sdk_version: "none",
693 min_sdk_version: "1",
694 compile_dex: true,
695 }
696
Paul Duffin04b4a192021-03-18 11:05:31 +0000697 sdk_snapshot {
698 name: "mysdk@1",
Paul Duffin8018e502021-05-21 19:28:09 +0100699 bootclasspath_fragments: ["mysdk_mybootclasspathfragment@1"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000700 }
701
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100702 prebuilt_bootclasspath_fragment {
Paul Duffin8018e502021-05-21 19:28:09 +0100703 name: "mysdk_mybootclasspathfragment@1",
Paul Duffin0b28a8d2021-04-21 23:38:34 +0100704 sdk_member_name: "mybootclasspathfragment",
Paul Duffin04b4a192021-03-18 11:05:31 +0000705 prefer: false,
706 visibility: ["//visibility:public"],
707 apex_available: [
708 "myapex",
709 ],
710 image_name: "art",
Paul Duffin8018e502021-05-21 19:28:09 +0100711 contents: ["mysdk_mybootlib@1"],
712 }
713
714 java_import {
715 name: "mysdk_mybootlib@1",
716 sdk_member_name: "mybootlib",
717 visibility: ["//visibility:public"],
718 apex_available: ["com.android.art"],
719 jars: ["java/mybootlib.jar"],
Paul Duffin04b4a192021-03-18 11:05:31 +0000720 }
721 `),
722 ).RunTest(t)
723}
Paul Duffin7c955552021-04-19 13:23:53 +0100724
725func TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) {
726 result := android.GroupFixturePreparers(
727 prepareForSdkTestWithJava,
Paul Duffin475daaf2021-05-13 00:57:55 +0100728 java.PrepareForTestWithJavaDefaultModules,
729 java.PrepareForTestWithJavaSdkLibraryFiles,
730 java.FixtureWithLastReleaseApis("mysdklibrary"),
satayevd604b212021-07-21 14:23:52 +0100731 java.FixtureConfigureApexBootJars("myapex:mybootlib"),
Paul Duffin475daaf2021-05-13 00:57:55 +0100732 prepareForSdkTestWithApex,
Paul Duffin7c475152021-06-09 16:17:58 +0100733
734 // Add a platform_bootclasspath that depends on the fragment.
735 fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"),
736
Paul Duffin7c955552021-04-19 13:23:53 +0100737 android.MockFS{
738 "my-blocked.txt": nil,
739 "my-max-target-o-low-priority.txt": nil,
740 "my-max-target-p.txt": nil,
741 "my-max-target-q.txt": nil,
742 "my-max-target-r-low-priority.txt": nil,
743 "my-removed.txt": nil,
744 "my-unsupported-packages.txt": nil,
745 "my-unsupported.txt": nil,
746 }.AddToFixture(),
747 android.FixtureWithRootAndroidBp(`
748 sdk {
749 name: "mysdk",
750 bootclasspath_fragments: ["mybootclasspathfragment"],
Paul Duffin7c955552021-04-19 13:23:53 +0100751 }
752
Paul Duffin475daaf2021-05-13 00:57:55 +0100753 apex {
754 name: "myapex",
755 key: "myapex.key",
756 min_sdk_version: "1",
757 bootclasspath_fragments: ["mybootclasspathfragment"],
758 }
759
Paul Duffin7c955552021-04-19 13:23:53 +0100760 bootclasspath_fragment {
761 name: "mybootclasspathfragment",
Paul Duffin475daaf2021-05-13 00:57:55 +0100762 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100763 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100764 api: {
765 stub_libs: ["mysdklibrary"],
766 },
Paul Duffin7c955552021-04-19 13:23:53 +0100767 hidden_api: {
768 unsupported: [
769 "my-unsupported.txt",
770 ],
771 removed: [
772 "my-removed.txt",
773 ],
774 max_target_r_low_priority: [
775 "my-max-target-r-low-priority.txt",
776 ],
777 max_target_q: [
778 "my-max-target-q.txt",
779 ],
780 max_target_p: [
781 "my-max-target-p.txt",
782 ],
783 max_target_o_low_priority: [
784 "my-max-target-o-low-priority.txt",
785 ],
786 blocked: [
787 "my-blocked.txt",
788 ],
789 unsupported_packages: [
790 "my-unsupported-packages.txt",
791 ],
792 },
793 }
794
795 java_library {
796 name: "mybootlib",
Paul Duffin475daaf2021-05-13 00:57:55 +0100797 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100798 srcs: ["Test.java"],
799 system_modules: "none",
800 sdk_version: "none",
Paul Duffin475daaf2021-05-13 00:57:55 +0100801 min_sdk_version: "1",
Paul Duffin7c955552021-04-19 13:23:53 +0100802 compile_dex: true,
Paul Duffin7c475152021-06-09 16:17:58 +0100803 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100804 }
Paul Duffin475daaf2021-05-13 00:57:55 +0100805
806 java_sdk_library {
807 name: "mysdklibrary",
808 srcs: ["Test.java"],
809 compile_dex: true,
810 public: {enabled: true},
Paul Duffin869de142021-07-15 14:14:41 +0100811 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100812 }
Paul Duffin7c955552021-04-19 13:23:53 +0100813 `),
814 ).RunTest(t)
815
Paul Duffin7c475152021-06-09 16:17:58 +0100816 // A preparer to update the test fixture used when processing an unpackage snapshot.
817 preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment")
818
Paul Duffin7c955552021-04-19 13:23:53 +0100819 CheckSnapshot(t, result, "mysdk", "",
820 checkUnversionedAndroidBpContents(`
821// This is auto-generated. DO NOT EDIT.
822
823prebuilt_bootclasspath_fragment {
824 name: "mybootclasspathfragment",
825 prefer: false,
826 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100827 apex_available: ["myapex"],
Paul Duffin7c955552021-04-19 13:23:53 +0100828 contents: ["mybootlib"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100829 api: {
830 stub_libs: ["mysdklibrary"],
831 },
Paul Duffin7c955552021-04-19 13:23:53 +0100832 hidden_api: {
833 unsupported: ["hiddenapi/my-unsupported.txt"],
834 removed: ["hiddenapi/my-removed.txt"],
835 max_target_r_low_priority: ["hiddenapi/my-max-target-r-low-priority.txt"],
836 max_target_q: ["hiddenapi/my-max-target-q.txt"],
837 max_target_p: ["hiddenapi/my-max-target-p.txt"],
838 max_target_o_low_priority: ["hiddenapi/my-max-target-o-low-priority.txt"],
839 blocked: ["hiddenapi/my-blocked.txt"],
840 unsupported_packages: ["hiddenapi/my-unsupported-packages.txt"],
Paul Duffin2fef1362021-04-15 13:32:00 +0100841 annotation_flags: "hiddenapi/annotation-flags.csv",
842 metadata: "hiddenapi/metadata.csv",
843 index: "hiddenapi/index.csv",
Paul Duffin67b9d612021-07-21 17:38:47 +0100844 stub_flags: "hiddenapi/stub-flags.csv",
Paul Duffin2fef1362021-04-15 13:32:00 +0100845 all_flags: "hiddenapi/all-flags.csv",
Paul Duffin7c955552021-04-19 13:23:53 +0100846 },
847}
848
849java_import {
850 name: "mybootlib",
851 prefer: false,
852 visibility: ["//visibility:public"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100853 apex_available: ["myapex"],
Paul Duffin5c211452021-07-15 12:42:44 +0100854 jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"],
Paul Duffin869de142021-07-15 14:14:41 +0100855 permitted_packages: ["mybootlib"],
Paul Duffin7c955552021-04-19 13:23:53 +0100856}
Paul Duffin475daaf2021-05-13 00:57:55 +0100857
858java_sdk_library_import {
859 name: "mysdklibrary",
860 prefer: false,
861 visibility: ["//visibility:public"],
862 apex_available: ["//apex_available:platform"],
863 shared_library: true,
864 compile_dex: true,
Paul Duffin869de142021-07-15 14:14:41 +0100865 permitted_packages: ["mysdklibrary"],
Paul Duffin475daaf2021-05-13 00:57:55 +0100866 public: {
867 jars: ["sdk_library/public/mysdklibrary-stubs.jar"],
868 stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"],
869 current_api: "sdk_library/public/mysdklibrary.txt",
870 removed_api: "sdk_library/public/mysdklibrary-removed.txt",
871 sdk_version: "current",
872 },
873}
Paul Duffin7c955552021-04-19 13:23:53 +0100874`),
875 checkAllCopyRules(`
876my-unsupported.txt -> hiddenapi/my-unsupported.txt
877my-removed.txt -> hiddenapi/my-removed.txt
878my-max-target-r-low-priority.txt -> hiddenapi/my-max-target-r-low-priority.txt
879my-max-target-q.txt -> hiddenapi/my-max-target-q.txt
880my-max-target-p.txt -> hiddenapi/my-max-target-p.txt
881my-max-target-o-low-priority.txt -> hiddenapi/my-max-target-o-low-priority.txt
882my-blocked.txt -> hiddenapi/my-blocked.txt
883my-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt
Paul Duffin2fef1362021-04-15 13:32:00 +0100884.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv
885.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv
886.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv
Paul Duffin67b9d612021-07-21 17:38:47 +0100887.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/stub-flags.csv -> hiddenapi/stub-flags.csv
Paul Duffin2fef1362021-04-15 13:32:00 +0100888.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/all-flags.csv -> hiddenapi/all-flags.csv
Paul Duffin5c211452021-07-15 12:42:44 +0100889.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar
Paul Duffin475daaf2021-05-13 00:57:55 +0100890.intermediates/mysdklibrary.stubs/android_common/javac/mysdklibrary.stubs.jar -> sdk_library/public/mysdklibrary-stubs.jar
891.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt
892.intermediates/mysdklibrary.stubs.source/android_common/metalava/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt
Paul Duffin7c955552021-04-19 13:23:53 +0100893`),
Paul Duffin7c475152021-06-09 16:17:58 +0100894 snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot),
895 snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot),
896 snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot),
Paul Duffin7c955552021-04-19 13:23:53 +0100897 )
898}