1*333d2b36SAndroid Build Coastguard Worker// Copyright (C) 2021 The Android Open Source Project 2*333d2b36SAndroid Build Coastguard Worker// 3*333d2b36SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*333d2b36SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*333d2b36SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*333d2b36SAndroid Build Coastguard Worker// 7*333d2b36SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*333d2b36SAndroid Build Coastguard Worker// 9*333d2b36SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*333d2b36SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*333d2b36SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*333d2b36SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*333d2b36SAndroid Build Coastguard Worker// limitations under the License. 14*333d2b36SAndroid Build Coastguard Worker 15*333d2b36SAndroid Build Coastguard Workerpackage sdk 16*333d2b36SAndroid Build Coastguard Worker 17*333d2b36SAndroid Build Coastguard Workerimport ( 18*333d2b36SAndroid Build Coastguard Worker "fmt" 19*333d2b36SAndroid Build Coastguard Worker "path/filepath" 20*333d2b36SAndroid Build Coastguard Worker "strings" 21*333d2b36SAndroid Build Coastguard Worker "testing" 22*333d2b36SAndroid Build Coastguard Worker 23*333d2b36SAndroid Build Coastguard Worker "android/soong/android" 24*333d2b36SAndroid Build Coastguard Worker "android/soong/java" 25*333d2b36SAndroid Build Coastguard Worker) 26*333d2b36SAndroid Build Coastguard Worker 27*333d2b36SAndroid Build Coastguard Worker// fixtureAddPlatformBootclasspathForBootclasspathFragment adds a platform_bootclasspath module that 28*333d2b36SAndroid Build Coastguard Worker// references the bootclasspath fragment. 29*333d2b36SAndroid Build Coastguard Workerfunc fixtureAddPlatformBootclasspathForBootclasspathFragment(apex, fragment string) android.FixturePreparer { 30*333d2b36SAndroid Build Coastguard Worker return fixtureAddPlatformBootclasspathForBootclasspathFragmentWithExtra(apex, fragment, "") 31*333d2b36SAndroid Build Coastguard Worker} 32*333d2b36SAndroid Build Coastguard Worker 33*333d2b36SAndroid Build Coastguard Worker// fixtureAddPlatformBootclasspathForBootclasspathFragmentWithExtra is the same as above, but also adds extra fragments. 34*333d2b36SAndroid Build Coastguard Workerfunc fixtureAddPlatformBootclasspathForBootclasspathFragmentWithExtra(apex, fragment, extraFragments string) android.FixturePreparer { 35*333d2b36SAndroid Build Coastguard Worker return android.GroupFixturePreparers( 36*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath module. 37*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile("frameworks/base/boot/Android.bp", fmt.Sprintf(` 38*333d2b36SAndroid Build Coastguard Worker platform_bootclasspath { 39*333d2b36SAndroid Build Coastguard Worker name: "platform-bootclasspath", 40*333d2b36SAndroid Build Coastguard Worker fragments: [ 41*333d2b36SAndroid Build Coastguard Worker { 42*333d2b36SAndroid Build Coastguard Worker apex: "%s", 43*333d2b36SAndroid Build Coastguard Worker module: "%s", 44*333d2b36SAndroid Build Coastguard Worker }, 45*333d2b36SAndroid Build Coastguard Worker %s 46*333d2b36SAndroid Build Coastguard Worker ], 47*333d2b36SAndroid Build Coastguard Worker } 48*333d2b36SAndroid Build Coastguard Worker `, apex, fragment, extraFragments)), 49*333d2b36SAndroid Build Coastguard Worker android.FixtureAddFile("frameworks/base/boot/boot-profile.txt", nil), 50*333d2b36SAndroid Build Coastguard Worker android.FixtureAddFile("frameworks/base/boot/boot-image-profile.txt", nil), 51*333d2b36SAndroid Build Coastguard Worker android.FixtureAddFile("art/build/boot/boot-image-profile.txt", nil), 52*333d2b36SAndroid Build Coastguard Worker android.FixtureAddFile("build/soong/scripts/check_boot_jars/package_allowed_list.txt", nil), 53*333d2b36SAndroid Build Coastguard Worker ) 54*333d2b36SAndroid Build Coastguard Worker} 55*333d2b36SAndroid Build Coastguard Worker 56*333d2b36SAndroid Build Coastguard Worker// fixtureAddPrebuiltApexForBootclasspathFragment adds a prebuilt_apex that exports the fragment. 57*333d2b36SAndroid Build Coastguard Workerfunc fixtureAddPrebuiltApexForBootclasspathFragment(apex, fragment string) android.FixturePreparer { 58*333d2b36SAndroid Build Coastguard Worker apexFile := fmt.Sprintf("%s.apex", apex) 59*333d2b36SAndroid Build Coastguard Worker dir := "prebuilts/apex" 60*333d2b36SAndroid Build Coastguard Worker return android.GroupFixturePreparers( 61*333d2b36SAndroid Build Coastguard Worker // A preparer to add a prebuilt apex to the test fixture. 62*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile(filepath.Join(dir, "Android.bp"), fmt.Sprintf(` 63*333d2b36SAndroid Build Coastguard Worker prebuilt_apex { 64*333d2b36SAndroid Build Coastguard Worker name: "%s", 65*333d2b36SAndroid Build Coastguard Worker src: "%s", 66*333d2b36SAndroid Build Coastguard Worker exported_bootclasspath_fragments: [ 67*333d2b36SAndroid Build Coastguard Worker "%s", 68*333d2b36SAndroid Build Coastguard Worker ], 69*333d2b36SAndroid Build Coastguard Worker } 70*333d2b36SAndroid Build Coastguard Worker `, apex, apexFile, fragment)), 71*333d2b36SAndroid Build Coastguard Worker android.FixtureAddFile(filepath.Join(dir, apexFile), nil), 72*333d2b36SAndroid Build Coastguard Worker ) 73*333d2b36SAndroid Build Coastguard Worker} 74*333d2b36SAndroid Build Coastguard Worker 75*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithBootclasspathFragment_ImageName(t *testing.T) { 76*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 77*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 78*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithDexpreopt, 79*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 80*333d2b36SAndroid Build Coastguard Worker 81*333d2b36SAndroid Build Coastguard Worker // Some additional files needed for the art apex. 82*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeMockFs(android.MockFS{ 83*333d2b36SAndroid Build Coastguard Worker "com.android.art.avbpubkey": nil, 84*333d2b36SAndroid Build Coastguard Worker "com.android.art.pem": nil, 85*333d2b36SAndroid Build Coastguard Worker "system/sepolicy/apex/com.android.art-file_contexts": nil, 86*333d2b36SAndroid Build Coastguard Worker }), 87*333d2b36SAndroid Build Coastguard Worker 88*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath that depends on the fragment. 89*333d2b36SAndroid Build Coastguard Worker fixtureAddPlatformBootclasspathForBootclasspathFragmentWithExtra( 90*333d2b36SAndroid Build Coastguard Worker "com.android.art", "art-bootclasspath-fragment", java.ApexBootJarFragmentsForPlatformBootclasspath), 91*333d2b36SAndroid Build Coastguard Worker 92*333d2b36SAndroid Build Coastguard Worker java.PrepareForBootImageConfigTest, 93*333d2b36SAndroid Build Coastguard Worker java.PrepareApexBootJarConfigsAndModules, 94*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 95*333d2b36SAndroid Build Coastguard Worker sdk { 96*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 97*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["art-bootclasspath-fragment"], 98*333d2b36SAndroid Build Coastguard Worker } 99*333d2b36SAndroid Build Coastguard Worker 100*333d2b36SAndroid Build Coastguard Worker apex { 101*333d2b36SAndroid Build Coastguard Worker name: "com.android.art", 102*333d2b36SAndroid Build Coastguard Worker key: "com.android.art.key", 103*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: [ 104*333d2b36SAndroid Build Coastguard Worker "art-bootclasspath-fragment", 105*333d2b36SAndroid Build Coastguard Worker ], 106*333d2b36SAndroid Build Coastguard Worker updatable: false, 107*333d2b36SAndroid Build Coastguard Worker } 108*333d2b36SAndroid Build Coastguard Worker 109*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 110*333d2b36SAndroid Build Coastguard Worker name: "art-bootclasspath-fragment", 111*333d2b36SAndroid Build Coastguard Worker image_name: "art", 112*333d2b36SAndroid Build Coastguard Worker contents: ["core1", "core2"], 113*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 114*333d2b36SAndroid Build Coastguard Worker hidden_api: { 115*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 116*333d2b36SAndroid Build Coastguard Worker }, 117*333d2b36SAndroid Build Coastguard Worker } 118*333d2b36SAndroid Build Coastguard Worker 119*333d2b36SAndroid Build Coastguard Worker apex_key { 120*333d2b36SAndroid Build Coastguard Worker name: "com.android.art.key", 121*333d2b36SAndroid Build Coastguard Worker public_key: "com.android.art.avbpubkey", 122*333d2b36SAndroid Build Coastguard Worker private_key: "com.android.art.pem", 123*333d2b36SAndroid Build Coastguard Worker } 124*333d2b36SAndroid Build Coastguard Worker 125*333d2b36SAndroid Build Coastguard Worker java_library { 126*333d2b36SAndroid Build Coastguard Worker name: "core1", 127*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 128*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 129*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 130*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 131*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 132*333d2b36SAndroid Build Coastguard Worker } 133*333d2b36SAndroid Build Coastguard Worker 134*333d2b36SAndroid Build Coastguard Worker java_library { 135*333d2b36SAndroid Build Coastguard Worker name: "core2", 136*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 137*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 138*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 139*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 140*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 141*333d2b36SAndroid Build Coastguard Worker } 142*333d2b36SAndroid Build Coastguard Worker`), 143*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 144*333d2b36SAndroid Build Coastguard Worker 145*333d2b36SAndroid Build Coastguard Worker // A preparer to update the test fixture used when processing an unpackage snapshot. 146*333d2b36SAndroid Build Coastguard Worker preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("com.android.art", "art-bootclasspath-fragment") 147*333d2b36SAndroid Build Coastguard Worker 148*333d2b36SAndroid Build Coastguard Worker // Check that source on its own configures the bootImageConfig correctly. 149*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedArtBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 150*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedFrameworkBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 151*333d2b36SAndroid Build Coastguard Worker 152*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 153*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 154*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 155*333d2b36SAndroid Build Coastguard Worker 156*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 157*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 158*333d2b36SAndroid Build Coastguard Worker contents: [], 159*333d2b36SAndroid Build Coastguard Worker} 160*333d2b36SAndroid Build Coastguard Worker 161*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 162*333d2b36SAndroid Build Coastguard Worker name: "art-bootclasspath-fragment", 163*333d2b36SAndroid Build Coastguard Worker prefer: false, 164*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 165*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 166*333d2b36SAndroid Build Coastguard Worker image_name: "art", 167*333d2b36SAndroid Build Coastguard Worker contents: [ 168*333d2b36SAndroid Build Coastguard Worker "core1", 169*333d2b36SAndroid Build Coastguard Worker "core2", 170*333d2b36SAndroid Build Coastguard Worker ], 171*333d2b36SAndroid Build Coastguard Worker hidden_api: { 172*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 173*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 174*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 175*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 176*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 177*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 178*333d2b36SAndroid Build Coastguard Worker }, 179*333d2b36SAndroid Build Coastguard Worker} 180*333d2b36SAndroid Build Coastguard Worker 181*333d2b36SAndroid Build Coastguard Workerjava_import { 182*333d2b36SAndroid Build Coastguard Worker name: "core1", 183*333d2b36SAndroid Build Coastguard Worker prefer: false, 184*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 185*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 186*333d2b36SAndroid Build Coastguard Worker jars: ["java_boot_libs/snapshot/jars/are/invalid/core1.jar"], 187*333d2b36SAndroid Build Coastguard Worker} 188*333d2b36SAndroid Build Coastguard Worker 189*333d2b36SAndroid Build Coastguard Workerjava_import { 190*333d2b36SAndroid Build Coastguard Worker name: "core2", 191*333d2b36SAndroid Build Coastguard Worker prefer: false, 192*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 193*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 194*333d2b36SAndroid Build Coastguard Worker jars: ["java_boot_libs/snapshot/jars/are/invalid/core2.jar"], 195*333d2b36SAndroid Build Coastguard Worker} 196*333d2b36SAndroid Build Coastguard Worker 197*333d2b36SAndroid Build Coastguard Worker`), 198*333d2b36SAndroid Build Coastguard Worker checkAllCopyRules(` 199*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 200*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 201*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv 202*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv 203*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv 204*333d2b36SAndroid Build Coastguard Worker.intermediates/art-bootclasspath-fragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv 205*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/core1.jar 206*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/core2.jar 207*333d2b36SAndroid Build Coastguard Worker `), 208*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithoutSource, android.GroupFixturePreparers( 209*333d2b36SAndroid Build Coastguard Worker preparerForSnapshot, 210*333d2b36SAndroid Build Coastguard Worker // Flag ART prebuilts 211*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeMockFs(android.MockFS{ 212*333d2b36SAndroid Build Coastguard Worker "apex_contributions/Android.bp": []byte(` 213*333d2b36SAndroid Build Coastguard Worker apex_contributions { 214*333d2b36SAndroid Build Coastguard Worker name: "prebuilt_art_contributions", 215*333d2b36SAndroid Build Coastguard Worker contents: ["prebuilt_com.android.art"], 216*333d2b36SAndroid Build Coastguard Worker api_domain: "com.android.art", 217*333d2b36SAndroid Build Coastguard Worker } 218*333d2b36SAndroid Build Coastguard Worker `)}), 219*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_APEX_CONTRIBUTIONS_ART", "prebuilt_art_contributions"), 220*333d2b36SAndroid Build Coastguard Worker )), 221*333d2b36SAndroid Build Coastguard Worker 222*333d2b36SAndroid Build Coastguard Worker // Check the behavior of the snapshot without the source. 223*333d2b36SAndroid Build Coastguard Worker snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) { 224*333d2b36SAndroid Build Coastguard Worker // Make sure that the boot jars package check rule includes the dex jars retrieved from the prebuilt apex. 225*333d2b36SAndroid Build Coastguard Worker checkBootJarsPackageCheckRule(t, result, 226*333d2b36SAndroid Build Coastguard Worker append( 227*333d2b36SAndroid Build Coastguard Worker []string{ 228*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/prebuilts/apex/com.android.art/android_common_com.android.art/deapexer/javalib/core1.jar", 229*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/prebuilts/apex/com.android.art/android_common_com.android.art/deapexer/javalib/core2.jar", 230*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/default/java/framework/android_common/aligned/framework.jar", 231*333d2b36SAndroid Build Coastguard Worker }, 232*333d2b36SAndroid Build Coastguard Worker java.ApexBootJarDexJarPaths..., 233*333d2b36SAndroid Build Coastguard Worker )..., 234*333d2b36SAndroid Build Coastguard Worker ) 235*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedArtBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 236*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedFrameworkBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 237*333d2b36SAndroid Build Coastguard Worker }), 238*333d2b36SAndroid Build Coastguard Worker 239*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot), 240*333d2b36SAndroid Build Coastguard Worker 241*333d2b36SAndroid Build Coastguard Worker // Check the behavior of the snapshot when the source is preferred. 242*333d2b36SAndroid Build Coastguard Worker snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) { 243*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedArtBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 244*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedFrameworkBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 245*333d2b36SAndroid Build Coastguard Worker }), 246*333d2b36SAndroid Build Coastguard Worker 247*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot), 248*333d2b36SAndroid Build Coastguard Worker 249*333d2b36SAndroid Build Coastguard Worker // Check the behavior of the snapshot when it is preferred. 250*333d2b36SAndroid Build Coastguard Worker snapshotTestChecker(checkSnapshotPreferredWithSource, func(t *testing.T, result *android.TestResult) { 251*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedArtBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 252*333d2b36SAndroid Build Coastguard Worker java.CheckMutatedFrameworkBootImageConfig(t, result, "out/soong/.intermediates/default/java/dex_bootjars/android_common/meta_lic") 253*333d2b36SAndroid Build Coastguard Worker }), 254*333d2b36SAndroid Build Coastguard Worker ) 255*333d2b36SAndroid Build Coastguard Worker 256*333d2b36SAndroid Build Coastguard Worker // Make sure that the boot jars package check rule includes the dex jars created from the source. 257*333d2b36SAndroid Build Coastguard Worker checkBootJarsPackageCheckRule(t, result, 258*333d2b36SAndroid Build Coastguard Worker append( 259*333d2b36SAndroid Build Coastguard Worker []string{ 260*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/core1/android_common_apex10000/aligned/core1.jar", 261*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/core2/android_common_apex10000/aligned/core2.jar", 262*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/default/java/framework/android_common/aligned/framework.jar", 263*333d2b36SAndroid Build Coastguard Worker }, 264*333d2b36SAndroid Build Coastguard Worker java.ApexBootJarDexJarPaths..., 265*333d2b36SAndroid Build Coastguard Worker )..., 266*333d2b36SAndroid Build Coastguard Worker ) 267*333d2b36SAndroid Build Coastguard Worker} 268*333d2b36SAndroid Build Coastguard Worker 269*333d2b36SAndroid Build Coastguard Worker// checkBootJarsPackageCheckRule checks that the supplied module is an input to the boot jars 270*333d2b36SAndroid Build Coastguard Worker// package check rule. 271*333d2b36SAndroid Build Coastguard Workerfunc checkBootJarsPackageCheckRule(t *testing.T, result *android.TestResult, expectedModules ...string) { 272*333d2b36SAndroid Build Coastguard Worker t.Helper() 273*333d2b36SAndroid Build Coastguard Worker platformBcp := result.ModuleForTests("platform-bootclasspath", "android_common") 274*333d2b36SAndroid Build Coastguard Worker bootJarsCheckRule := platformBcp.Rule("boot_jars_package_check") 275*333d2b36SAndroid Build Coastguard Worker command := bootJarsCheckRule.RuleParams.Command 276*333d2b36SAndroid Build Coastguard Worker expectedCommandArgs := " build/soong/scripts/check_boot_jars/package_allowed_list.txt " + strings.Join(expectedModules, " ") + " &&" 277*333d2b36SAndroid Build Coastguard Worker android.AssertStringDoesContain(t, "boot jars package check", command, expectedCommandArgs) 278*333d2b36SAndroid Build Coastguard Worker} 279*333d2b36SAndroid Build Coastguard Worker 280*333d2b36SAndroid Build Coastguard Workerfunc testSnapshotWithBootClasspathFragment_Contents(t *testing.T, sdk string, copyRules string) { 281*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 282*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 283*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 284*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 285*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary", "mycoreplatform"), 286*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:myothersdklibrary"), 287*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 288*333d2b36SAndroid Build Coastguard Worker 289*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath that depends on the fragment. 290*333d2b36SAndroid Build Coastguard Worker fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"), 291*333d2b36SAndroid Build Coastguard Worker 292*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"), 293*333d2b36SAndroid Build Coastguard Worker // Make sure that we have atleast one platform library so that we can check the monolithic hiddenapi 294*333d2b36SAndroid Build Coastguard Worker // file creation. 295*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureBootJars("platform:foo"), 296*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyMockFS(func(fs android.MockFS) { 297*333d2b36SAndroid Build Coastguard Worker fs["platform/Android.bp"] = []byte(` 298*333d2b36SAndroid Build Coastguard Worker java_library { 299*333d2b36SAndroid Build Coastguard Worker name: "foo", 300*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 301*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 302*333d2b36SAndroid Build Coastguard Worker } 303*333d2b36SAndroid Build Coastguard Worker `) 304*333d2b36SAndroid Build Coastguard Worker fs["platform/Test.java"] = nil 305*333d2b36SAndroid Build Coastguard Worker }), 306*333d2b36SAndroid Build Coastguard Worker 307*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(sdk+` 308*333d2b36SAndroid Build Coastguard Worker apex { 309*333d2b36SAndroid Build Coastguard Worker name: "myapex", 310*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 311*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 312*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 313*333d2b36SAndroid Build Coastguard Worker } 314*333d2b36SAndroid Build Coastguard Worker 315*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 316*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 317*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 318*333d2b36SAndroid Build Coastguard Worker contents: [ 319*333d2b36SAndroid Build Coastguard Worker // This should be automatically added to the sdk_snapshot as a java_boot_libs module. 320*333d2b36SAndroid Build Coastguard Worker "mybootlib", 321*333d2b36SAndroid Build Coastguard Worker // This should be automatically added to the sdk_snapshot as a java_sdk_libs module. 322*333d2b36SAndroid Build Coastguard Worker "myothersdklibrary", 323*333d2b36SAndroid Build Coastguard Worker ], 324*333d2b36SAndroid Build Coastguard Worker api: { 325*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mysdklibrary"], 326*333d2b36SAndroid Build Coastguard Worker }, 327*333d2b36SAndroid Build Coastguard Worker core_platform_api: { 328*333d2b36SAndroid Build Coastguard Worker // This should be automatically added to the sdk_snapshot as a java_sdk_libs module. 329*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mycoreplatform"], 330*333d2b36SAndroid Build Coastguard Worker }, 331*333d2b36SAndroid Build Coastguard Worker hidden_api: { 332*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 333*333d2b36SAndroid Build Coastguard Worker }, 334*333d2b36SAndroid Build Coastguard Worker } 335*333d2b36SAndroid Build Coastguard Worker 336*333d2b36SAndroid Build Coastguard Worker java_library { 337*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 338*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 339*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 340*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 341*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 342*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 343*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 344*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mybootlib"], 345*333d2b36SAndroid Build Coastguard Worker } 346*333d2b36SAndroid Build Coastguard Worker 347*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 348*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 349*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 350*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 351*333d2b36SAndroid Build Coastguard Worker shared_library: false, 352*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 353*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 354*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 355*333d2b36SAndroid Build Coastguard Worker } 356*333d2b36SAndroid Build Coastguard Worker 357*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 358*333d2b36SAndroid Build Coastguard Worker name: "myothersdklibrary", 359*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 360*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 361*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 362*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 363*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 364*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["myothersdklibrary"], 365*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 366*333d2b36SAndroid Build Coastguard Worker } 367*333d2b36SAndroid Build Coastguard Worker 368*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 369*333d2b36SAndroid Build Coastguard Worker name: "mycoreplatform", 370*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 371*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 372*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 373*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 374*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 375*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 376*333d2b36SAndroid Build Coastguard Worker } 377*333d2b36SAndroid Build Coastguard Worker `), 378*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 379*333d2b36SAndroid Build Coastguard Worker 380*333d2b36SAndroid Build Coastguard Worker // A preparer to update the test fixture used when processing an unpackage snapshot. 381*333d2b36SAndroid Build Coastguard Worker preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment") 382*333d2b36SAndroid Build Coastguard Worker 383*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 384*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 385*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 386*333d2b36SAndroid Build Coastguard Worker 387*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 388*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 389*333d2b36SAndroid Build Coastguard Worker contents: [ 390*333d2b36SAndroid Build Coastguard Worker "prebuilt_myothersdklibrary", 391*333d2b36SAndroid Build Coastguard Worker "prebuilt_mysdklibrary", 392*333d2b36SAndroid Build Coastguard Worker "prebuilt_mycoreplatform", 393*333d2b36SAndroid Build Coastguard Worker ], 394*333d2b36SAndroid Build Coastguard Worker} 395*333d2b36SAndroid Build Coastguard Worker 396*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 397*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 398*333d2b36SAndroid Build Coastguard Worker prefer: false, 399*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 400*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 401*333d2b36SAndroid Build Coastguard Worker contents: [ 402*333d2b36SAndroid Build Coastguard Worker "mybootlib", 403*333d2b36SAndroid Build Coastguard Worker "myothersdklibrary", 404*333d2b36SAndroid Build Coastguard Worker ], 405*333d2b36SAndroid Build Coastguard Worker api: { 406*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mysdklibrary"], 407*333d2b36SAndroid Build Coastguard Worker }, 408*333d2b36SAndroid Build Coastguard Worker core_platform_api: { 409*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mycoreplatform"], 410*333d2b36SAndroid Build Coastguard Worker }, 411*333d2b36SAndroid Build Coastguard Worker hidden_api: { 412*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 413*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 414*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 415*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 416*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 417*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 418*333d2b36SAndroid Build Coastguard Worker }, 419*333d2b36SAndroid Build Coastguard Worker} 420*333d2b36SAndroid Build Coastguard Worker 421*333d2b36SAndroid Build Coastguard Workerjava_import { 422*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 423*333d2b36SAndroid Build Coastguard Worker prefer: false, 424*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 425*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 426*333d2b36SAndroid Build Coastguard Worker jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], 427*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 428*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mybootlib"], 429*333d2b36SAndroid Build Coastguard Worker} 430*333d2b36SAndroid Build Coastguard Worker 431*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 432*333d2b36SAndroid Build Coastguard Worker name: "myothersdklibrary", 433*333d2b36SAndroid Build Coastguard Worker prefer: false, 434*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 435*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 436*333d2b36SAndroid Build Coastguard Worker shared_library: true, 437*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 438*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["myothersdklibrary"], 439*333d2b36SAndroid Build Coastguard Worker public: { 440*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/myothersdklibrary-stubs.jar"], 441*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/myothersdklibrary_stub_sources"], 442*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/myothersdklibrary.txt", 443*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/myothersdklibrary-removed.txt", 444*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 445*333d2b36SAndroid Build Coastguard Worker }, 446*333d2b36SAndroid Build Coastguard Worker} 447*333d2b36SAndroid Build Coastguard Worker 448*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 449*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 450*333d2b36SAndroid Build Coastguard Worker prefer: false, 451*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 452*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 453*333d2b36SAndroid Build Coastguard Worker shared_library: false, 454*333d2b36SAndroid Build Coastguard Worker public: { 455*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 456*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 457*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 458*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 459*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 460*333d2b36SAndroid Build Coastguard Worker }, 461*333d2b36SAndroid Build Coastguard Worker} 462*333d2b36SAndroid Build Coastguard Worker 463*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 464*333d2b36SAndroid Build Coastguard Worker name: "mycoreplatform", 465*333d2b36SAndroid Build Coastguard Worker prefer: false, 466*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 467*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 468*333d2b36SAndroid Build Coastguard Worker shared_library: true, 469*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 470*333d2b36SAndroid Build Coastguard Worker public: { 471*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mycoreplatform-stubs.jar"], 472*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mycoreplatform_stub_sources"], 473*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mycoreplatform.txt", 474*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mycoreplatform-removed.txt", 475*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 476*333d2b36SAndroid Build Coastguard Worker }, 477*333d2b36SAndroid Build Coastguard Worker} 478*333d2b36SAndroid Build Coastguard Worker `), 479*333d2b36SAndroid Build Coastguard Worker checkAllCopyRules(copyRules), 480*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot), 481*333d2b36SAndroid Build Coastguard Worker snapshotTestChecker(checkSnapshotWithoutSource, func(t *testing.T, result *android.TestResult) { 482*333d2b36SAndroid Build Coastguard Worker module := result.ModuleForTests("platform-bootclasspath", "android_common") 483*333d2b36SAndroid Build Coastguard Worker var rule android.TestingBuildParams 484*333d2b36SAndroid Build Coastguard Worker rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv") 485*333d2b36SAndroid Build Coastguard Worker java.CheckHiddenAPIRuleInputs(t, "monolithic flags", ` 486*333d2b36SAndroid Build Coastguard Worker out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/annotation-flags-from-classes.csv 487*333d2b36SAndroid Build Coastguard Worker out/soong/hiddenapi/hiddenapi-stub-flags.txt 488*333d2b36SAndroid Build Coastguard Worker snapshot/hiddenapi/annotation-flags.csv 489*333d2b36SAndroid Build Coastguard Worker `, rule) 490*333d2b36SAndroid Build Coastguard Worker 491*333d2b36SAndroid Build Coastguard Worker rule = module.Output("out/soong/hiddenapi/hiddenapi-unsupported.csv") 492*333d2b36SAndroid Build Coastguard Worker java.CheckHiddenAPIRuleInputs(t, "monolithic metadata", ` 493*333d2b36SAndroid Build Coastguard Worker out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/metadata-from-classes.csv 494*333d2b36SAndroid Build Coastguard Worker snapshot/hiddenapi/metadata.csv 495*333d2b36SAndroid Build Coastguard Worker `, rule) 496*333d2b36SAndroid Build Coastguard Worker 497*333d2b36SAndroid Build Coastguard Worker rule = module.Output("out/soong/hiddenapi/hiddenapi-index.csv") 498*333d2b36SAndroid Build Coastguard Worker java.CheckHiddenAPIRuleInputs(t, "monolithic index", ` 499*333d2b36SAndroid Build Coastguard Worker out/soong/.intermediates/frameworks/base/boot/platform-bootclasspath/android_common/hiddenapi-monolithic/index-from-classes.csv 500*333d2b36SAndroid Build Coastguard Worker snapshot/hiddenapi/index.csv 501*333d2b36SAndroid Build Coastguard Worker `, rule) 502*333d2b36SAndroid Build Coastguard Worker 503*333d2b36SAndroid Build Coastguard Worker rule = module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid") 504*333d2b36SAndroid Build Coastguard Worker android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " snapshot/hiddenapi/filtered-flags.csv:snapshot/hiddenapi/signature-patterns.csv ") 505*333d2b36SAndroid Build Coastguard Worker }), 506*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot), 507*333d2b36SAndroid Build Coastguard Worker snapshotTestChecker(checkSnapshotWithSourcePreferred, func(t *testing.T, result *android.TestResult) { 508*333d2b36SAndroid Build Coastguard Worker module := result.ModuleForTests("platform-bootclasspath", "android_common") 509*333d2b36SAndroid Build Coastguard Worker rule := module.Output("out/soong/hiddenapi/hiddenapi-flags.csv.valid") 510*333d2b36SAndroid Build Coastguard Worker android.AssertStringDoesContain(t, "verify-overlaps", rule.RuleParams.Command, " out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv:out/soong/.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv ") 511*333d2b36SAndroid Build Coastguard Worker }), 512*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot), 513*333d2b36SAndroid Build Coastguard Worker ) 514*333d2b36SAndroid Build Coastguard Worker} 515*333d2b36SAndroid Build Coastguard Worker 516*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithBootClasspathFragment_Contents(t *testing.T) { 517*333d2b36SAndroid Build Coastguard Worker t.Run("added-directly", func(t *testing.T) { 518*333d2b36SAndroid Build Coastguard Worker testSnapshotWithBootClasspathFragment_Contents(t, ` 519*333d2b36SAndroid Build Coastguard Worker sdk { 520*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 521*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 522*333d2b36SAndroid Build Coastguard Worker java_sdk_libs: [ 523*333d2b36SAndroid Build Coastguard Worker // This is not strictly needed as it should be automatically added to the sdk_snapshot as 524*333d2b36SAndroid Build Coastguard Worker // a java_sdk_libs module because it is used in the mybootclasspathfragment's 525*333d2b36SAndroid Build Coastguard Worker // api.stub_libs property. However, it is specified here to ensure that duplicates are 526*333d2b36SAndroid Build Coastguard Worker // correctly deduped. 527*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 528*333d2b36SAndroid Build Coastguard Worker ], 529*333d2b36SAndroid Build Coastguard Worker } 530*333d2b36SAndroid Build Coastguard Worker `, ` 531*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 532*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 533*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv 534*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv 535*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv 536*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv 537*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar 538*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.exportable/android_common/combined/myothersdklibrary.stubs.exportable.jar -> sdk_library/public/myothersdklibrary-stubs.jar 539*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.source/android_common/exportable/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt 540*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.source/android_common/exportable/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt 541*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 542*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 543*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 544*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.exportable/android_common/combined/mycoreplatform.stubs.exportable.jar -> sdk_library/public/mycoreplatform-stubs.jar 545*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.source/android_common/exportable/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt 546*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.source/android_common/exportable/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt 547*333d2b36SAndroid Build Coastguard Worker`) 548*333d2b36SAndroid Build Coastguard Worker }) 549*333d2b36SAndroid Build Coastguard Worker 550*333d2b36SAndroid Build Coastguard Worker copyBootclasspathFragmentFromApexVariantRules := ` 551*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 552*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 553*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/index.csv -> hiddenapi/index.csv 554*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv 555*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv 556*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv 557*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar 558*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.exportable/android_common/combined/myothersdklibrary.stubs.exportable.jar -> sdk_library/public/myothersdklibrary-stubs.jar 559*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.source/android_common/exportable/myothersdklibrary.stubs.source_api.txt -> sdk_library/public/myothersdklibrary.txt 560*333d2b36SAndroid Build Coastguard Worker.intermediates/myothersdklibrary.stubs.source/android_common/exportable/myothersdklibrary.stubs.source_removed.txt -> sdk_library/public/myothersdklibrary-removed.txt 561*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 562*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 563*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 564*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.exportable/android_common/combined/mycoreplatform.stubs.exportable.jar -> sdk_library/public/mycoreplatform-stubs.jar 565*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.source/android_common/exportable/mycoreplatform.stubs.source_api.txt -> sdk_library/public/mycoreplatform.txt 566*333d2b36SAndroid Build Coastguard Worker.intermediates/mycoreplatform.stubs.source/android_common/exportable/mycoreplatform.stubs.source_removed.txt -> sdk_library/public/mycoreplatform-removed.txt 567*333d2b36SAndroid Build Coastguard Worker` 568*333d2b36SAndroid Build Coastguard Worker t.Run("added-via-apex", func(t *testing.T) { 569*333d2b36SAndroid Build Coastguard Worker testSnapshotWithBootClasspathFragment_Contents(t, ` 570*333d2b36SAndroid Build Coastguard Worker sdk { 571*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 572*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 573*333d2b36SAndroid Build Coastguard Worker } 574*333d2b36SAndroid Build Coastguard Worker `, copyBootclasspathFragmentFromApexVariantRules) 575*333d2b36SAndroid Build Coastguard Worker }) 576*333d2b36SAndroid Build Coastguard Worker 577*333d2b36SAndroid Build Coastguard Worker t.Run("added-directly-and-indirectly", func(t *testing.T) { 578*333d2b36SAndroid Build Coastguard Worker testSnapshotWithBootClasspathFragment_Contents(t, ` 579*333d2b36SAndroid Build Coastguard Worker sdk { 580*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 581*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 582*333d2b36SAndroid Build Coastguard Worker // This is not strictly needed as it should be automatically added to the sdk_snapshot as 583*333d2b36SAndroid Build Coastguard Worker // a bootclasspath_fragments module because it is used in the myapex's 584*333d2b36SAndroid Build Coastguard Worker // bootclasspath_fragments property. However, it is specified here to ensure that duplicates 585*333d2b36SAndroid Build Coastguard Worker // are correctly deduped. 586*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 587*333d2b36SAndroid Build Coastguard Worker java_sdk_libs: [ 588*333d2b36SAndroid Build Coastguard Worker // This is not strictly needed as it should be automatically added to the sdk_snapshot as 589*333d2b36SAndroid Build Coastguard Worker // a java_sdk_libs module because it is used in the mybootclasspathfragment's 590*333d2b36SAndroid Build Coastguard Worker // api.stub_libs property. However, it is specified here to ensure that duplicates are 591*333d2b36SAndroid Build Coastguard Worker // correctly deduped. 592*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 593*333d2b36SAndroid Build Coastguard Worker ], 594*333d2b36SAndroid Build Coastguard Worker } 595*333d2b36SAndroid Build Coastguard Worker `, copyBootclasspathFragmentFromApexVariantRules) 596*333d2b36SAndroid Build Coastguard Worker }) 597*333d2b36SAndroid Build Coastguard Worker} 598*333d2b36SAndroid Build Coastguard Worker 599*333d2b36SAndroid Build Coastguard Worker// TestSnapshotWithBootClasspathFragment_Fragments makes sure that the fragments property of a 600*333d2b36SAndroid Build Coastguard Worker// bootclasspath_fragment is correctly output to the sdk snapshot. 601*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithBootClasspathFragment_Fragments(t *testing.T) { 602*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 603*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 604*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 605*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 606*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "myothersdklibrary"), 607*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureApexBootJars("someapex:mysdklibrary", "myotherapex:myotherlib"), 608*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 609*333d2b36SAndroid Build Coastguard Worker 610*333d2b36SAndroid Build Coastguard Worker // Some additional files needed for the myotherapex. 611*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeMockFs(android.MockFS{ 612*333d2b36SAndroid Build Coastguard Worker "system/sepolicy/apex/myotherapex-file_contexts": nil, 613*333d2b36SAndroid Build Coastguard Worker "myotherapex/apex_manifest.json": nil, 614*333d2b36SAndroid Build Coastguard Worker "myotherapex/Test.java": nil, 615*333d2b36SAndroid Build Coastguard Worker }), 616*333d2b36SAndroid Build Coastguard Worker 617*333d2b36SAndroid Build Coastguard Worker android.FixtureAddTextFile("myotherapex/Android.bp", ` 618*333d2b36SAndroid Build Coastguard Worker apex { 619*333d2b36SAndroid Build Coastguard Worker name: "myotherapex", 620*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 621*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 622*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["myotherbootclasspathfragment"], 623*333d2b36SAndroid Build Coastguard Worker } 624*333d2b36SAndroid Build Coastguard Worker 625*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 626*333d2b36SAndroid Build Coastguard Worker name: "myotherbootclasspathfragment", 627*333d2b36SAndroid Build Coastguard Worker apex_available: ["myotherapex"], 628*333d2b36SAndroid Build Coastguard Worker contents: [ 629*333d2b36SAndroid Build Coastguard Worker "myotherlib", 630*333d2b36SAndroid Build Coastguard Worker ], 631*333d2b36SAndroid Build Coastguard Worker hidden_api: { 632*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 633*333d2b36SAndroid Build Coastguard Worker }, 634*333d2b36SAndroid Build Coastguard Worker } 635*333d2b36SAndroid Build Coastguard Worker 636*333d2b36SAndroid Build Coastguard Worker java_library { 637*333d2b36SAndroid Build Coastguard Worker name: "myotherlib", 638*333d2b36SAndroid Build Coastguard Worker apex_available: ["myotherapex"], 639*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 640*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 641*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["myothersdklibrary"], 642*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 643*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 644*333d2b36SAndroid Build Coastguard Worker } 645*333d2b36SAndroid Build Coastguard Worker `), 646*333d2b36SAndroid Build Coastguard Worker 647*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 648*333d2b36SAndroid Build Coastguard Worker sdk { 649*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 650*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 651*333d2b36SAndroid Build Coastguard Worker } 652*333d2b36SAndroid Build Coastguard Worker 653*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 654*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 655*333d2b36SAndroid Build Coastguard Worker contents: [ 656*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 657*333d2b36SAndroid Build Coastguard Worker ], 658*333d2b36SAndroid Build Coastguard Worker fragments: [ 659*333d2b36SAndroid Build Coastguard Worker { 660*333d2b36SAndroid Build Coastguard Worker apex: "myotherapex", 661*333d2b36SAndroid Build Coastguard Worker module: "myotherbootclasspathfragment" 662*333d2b36SAndroid Build Coastguard Worker }, 663*333d2b36SAndroid Build Coastguard Worker ], 664*333d2b36SAndroid Build Coastguard Worker hidden_api: { 665*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 666*333d2b36SAndroid Build Coastguard Worker }, 667*333d2b36SAndroid Build Coastguard Worker } 668*333d2b36SAndroid Build Coastguard Worker 669*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 670*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 671*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 672*333d2b36SAndroid Build Coastguard Worker shared_library: false, 673*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 674*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "2", 675*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 676*333d2b36SAndroid Build Coastguard Worker } 677*333d2b36SAndroid Build Coastguard Worker `), 678*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 679*333d2b36SAndroid Build Coastguard Worker 680*333d2b36SAndroid Build Coastguard Worker // A preparer to update the test fixture used when processing an unpackage snapshot. 681*333d2b36SAndroid Build Coastguard Worker preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment") 682*333d2b36SAndroid Build Coastguard Worker 683*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 684*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 685*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 686*333d2b36SAndroid Build Coastguard Worker 687*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 688*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 689*333d2b36SAndroid Build Coastguard Worker contents: ["prebuilt_mysdklibrary"], 690*333d2b36SAndroid Build Coastguard Worker} 691*333d2b36SAndroid Build Coastguard Worker 692*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 693*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 694*333d2b36SAndroid Build Coastguard Worker prefer: false, 695*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 696*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 697*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 698*333d2b36SAndroid Build Coastguard Worker fragments: [ 699*333d2b36SAndroid Build Coastguard Worker { 700*333d2b36SAndroid Build Coastguard Worker apex: "myotherapex", 701*333d2b36SAndroid Build Coastguard Worker module: "myotherbootclasspathfragment", 702*333d2b36SAndroid Build Coastguard Worker }, 703*333d2b36SAndroid Build Coastguard Worker ], 704*333d2b36SAndroid Build Coastguard Worker hidden_api: { 705*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 706*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 707*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 708*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 709*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 710*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 711*333d2b36SAndroid Build Coastguard Worker }, 712*333d2b36SAndroid Build Coastguard Worker} 713*333d2b36SAndroid Build Coastguard Worker 714*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 715*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 716*333d2b36SAndroid Build Coastguard Worker prefer: false, 717*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 718*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 719*333d2b36SAndroid Build Coastguard Worker shared_library: false, 720*333d2b36SAndroid Build Coastguard Worker public: { 721*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 722*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 723*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 724*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 725*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 726*333d2b36SAndroid Build Coastguard Worker }, 727*333d2b36SAndroid Build Coastguard Worker} 728*333d2b36SAndroid Build Coastguard Worker `), 729*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot), 730*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot), 731*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot), 732*333d2b36SAndroid Build Coastguard Worker ) 733*333d2b36SAndroid Build Coastguard Worker} 734*333d2b36SAndroid Build Coastguard Worker 735*333d2b36SAndroid Build Coastguard Worker// Test that bootclasspath_fragment works with sdk. 736*333d2b36SAndroid Build Coastguard Workerfunc TestBasicSdkWithBootclasspathFragment(t *testing.T) { 737*333d2b36SAndroid Build Coastguard Worker android.GroupFixturePreparers( 738*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 739*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 740*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeMockFs(android.MockFS{ 741*333d2b36SAndroid Build Coastguard Worker "java/mybootlib.jar": nil, 742*333d2b36SAndroid Build Coastguard Worker "hiddenapi/annotation-flags.csv": nil, 743*333d2b36SAndroid Build Coastguard Worker "hiddenapi/index.csv": nil, 744*333d2b36SAndroid Build Coastguard Worker "hiddenapi/metadata.csv": nil, 745*333d2b36SAndroid Build Coastguard Worker "hiddenapi/signature-patterns.csv": nil, 746*333d2b36SAndroid Build Coastguard Worker "hiddenapi/filtered-stub-flags.csv": nil, 747*333d2b36SAndroid Build Coastguard Worker "hiddenapi/filtered-flags.csv": nil, 748*333d2b36SAndroid Build Coastguard Worker }), 749*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 750*333d2b36SAndroid Build Coastguard Worker sdk { 751*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 752*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 753*333d2b36SAndroid Build Coastguard Worker } 754*333d2b36SAndroid Build Coastguard Worker 755*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 756*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 757*333d2b36SAndroid Build Coastguard Worker image_name: "art", 758*333d2b36SAndroid Build Coastguard Worker contents: ["mybootlib"], 759*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 760*333d2b36SAndroid Build Coastguard Worker hidden_api: { 761*333d2b36SAndroid Build Coastguard Worker split_packages: ["*"], 762*333d2b36SAndroid Build Coastguard Worker }, 763*333d2b36SAndroid Build Coastguard Worker } 764*333d2b36SAndroid Build Coastguard Worker 765*333d2b36SAndroid Build Coastguard Worker java_library { 766*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 767*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 768*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 769*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 770*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 771*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "1", 772*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 773*333d2b36SAndroid Build Coastguard Worker } 774*333d2b36SAndroid Build Coastguard Worker 775*333d2b36SAndroid Build Coastguard Worker prebuilt_bootclasspath_fragment { 776*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 777*333d2b36SAndroid Build Coastguard Worker prefer: false, 778*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 779*333d2b36SAndroid Build Coastguard Worker apex_available: [ 780*333d2b36SAndroid Build Coastguard Worker "myapex", 781*333d2b36SAndroid Build Coastguard Worker ], 782*333d2b36SAndroid Build Coastguard Worker image_name: "art", 783*333d2b36SAndroid Build Coastguard Worker contents: ["mybootlib"], 784*333d2b36SAndroid Build Coastguard Worker hidden_api: { 785*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 786*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 787*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 788*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 789*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 790*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 791*333d2b36SAndroid Build Coastguard Worker }, 792*333d2b36SAndroid Build Coastguard Worker } 793*333d2b36SAndroid Build Coastguard Worker 794*333d2b36SAndroid Build Coastguard Worker java_import { 795*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 796*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 797*333d2b36SAndroid Build Coastguard Worker apex_available: ["com.android.art"], 798*333d2b36SAndroid Build Coastguard Worker jars: ["java/mybootlib.jar"], 799*333d2b36SAndroid Build Coastguard Worker } 800*333d2b36SAndroid Build Coastguard Worker `), 801*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 802*333d2b36SAndroid Build Coastguard Worker} 803*333d2b36SAndroid Build Coastguard Worker 804*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithBootclasspathFragment_HiddenAPI(t *testing.T) { 805*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 806*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 807*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 808*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 809*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "mynewlibrary"), 810*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureApexBootJars("myapex:mybootlib", "myapex:mynewlibrary"), 811*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 812*333d2b36SAndroid Build Coastguard Worker 813*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath that depends on the fragment. 814*333d2b36SAndroid Build Coastguard Worker fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"), 815*333d2b36SAndroid Build Coastguard Worker 816*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"), 817*333d2b36SAndroid Build Coastguard Worker 818*333d2b36SAndroid Build Coastguard Worker android.MockFS{ 819*333d2b36SAndroid Build Coastguard Worker "my-blocked.txt": nil, 820*333d2b36SAndroid Build Coastguard Worker "my-max-target-o-low-priority.txt": nil, 821*333d2b36SAndroid Build Coastguard Worker "my-max-target-p.txt": nil, 822*333d2b36SAndroid Build Coastguard Worker "my-max-target-q.txt": nil, 823*333d2b36SAndroid Build Coastguard Worker "my-max-target-r-low-priority.txt": nil, 824*333d2b36SAndroid Build Coastguard Worker "my-removed.txt": nil, 825*333d2b36SAndroid Build Coastguard Worker "my-unsupported-packages.txt": nil, 826*333d2b36SAndroid Build Coastguard Worker "my-unsupported.txt": nil, 827*333d2b36SAndroid Build Coastguard Worker "my-new-max-target-q.txt": nil, 828*333d2b36SAndroid Build Coastguard Worker }.AddToFixture(), 829*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 830*333d2b36SAndroid Build Coastguard Worker sdk { 831*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 832*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 833*333d2b36SAndroid Build Coastguard Worker } 834*333d2b36SAndroid Build Coastguard Worker 835*333d2b36SAndroid Build Coastguard Worker apex { 836*333d2b36SAndroid Build Coastguard Worker name: "myapex", 837*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 838*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "1", 839*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 840*333d2b36SAndroid Build Coastguard Worker } 841*333d2b36SAndroid Build Coastguard Worker 842*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 843*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 844*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 845*333d2b36SAndroid Build Coastguard Worker contents: ["mybootlib", "mynewlibrary"], 846*333d2b36SAndroid Build Coastguard Worker api: { 847*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mysdklibrary"], 848*333d2b36SAndroid Build Coastguard Worker }, 849*333d2b36SAndroid Build Coastguard Worker hidden_api: { 850*333d2b36SAndroid Build Coastguard Worker unsupported: [ 851*333d2b36SAndroid Build Coastguard Worker "my-unsupported.txt", 852*333d2b36SAndroid Build Coastguard Worker ], 853*333d2b36SAndroid Build Coastguard Worker removed: [ 854*333d2b36SAndroid Build Coastguard Worker "my-removed.txt", 855*333d2b36SAndroid Build Coastguard Worker ], 856*333d2b36SAndroid Build Coastguard Worker max_target_r_low_priority: [ 857*333d2b36SAndroid Build Coastguard Worker "my-max-target-r-low-priority.txt", 858*333d2b36SAndroid Build Coastguard Worker ], 859*333d2b36SAndroid Build Coastguard Worker max_target_q: [ 860*333d2b36SAndroid Build Coastguard Worker "my-max-target-q.txt", 861*333d2b36SAndroid Build Coastguard Worker ], 862*333d2b36SAndroid Build Coastguard Worker max_target_p: [ 863*333d2b36SAndroid Build Coastguard Worker "my-max-target-p.txt", 864*333d2b36SAndroid Build Coastguard Worker ], 865*333d2b36SAndroid Build Coastguard Worker max_target_o_low_priority: [ 866*333d2b36SAndroid Build Coastguard Worker "my-max-target-o-low-priority.txt", 867*333d2b36SAndroid Build Coastguard Worker ], 868*333d2b36SAndroid Build Coastguard Worker blocked: [ 869*333d2b36SAndroid Build Coastguard Worker "my-blocked.txt", 870*333d2b36SAndroid Build Coastguard Worker ], 871*333d2b36SAndroid Build Coastguard Worker unsupported_packages: [ 872*333d2b36SAndroid Build Coastguard Worker "my-unsupported-packages.txt", 873*333d2b36SAndroid Build Coastguard Worker ], 874*333d2b36SAndroid Build Coastguard Worker split_packages: ["sdklibrary"], 875*333d2b36SAndroid Build Coastguard Worker package_prefixes: ["sdklibrary.all.mine"], 876*333d2b36SAndroid Build Coastguard Worker single_packages: ["sdklibrary.mine"], 877*333d2b36SAndroid Build Coastguard Worker }, 878*333d2b36SAndroid Build Coastguard Worker } 879*333d2b36SAndroid Build Coastguard Worker 880*333d2b36SAndroid Build Coastguard Worker java_library { 881*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 882*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 883*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 884*333d2b36SAndroid Build Coastguard Worker system_modules: "none", 885*333d2b36SAndroid Build Coastguard Worker sdk_version: "none", 886*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "1", 887*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 888*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mybootlib"], 889*333d2b36SAndroid Build Coastguard Worker } 890*333d2b36SAndroid Build Coastguard Worker 891*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 892*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 893*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 894*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 895*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 896*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 897*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "current", 898*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 899*333d2b36SAndroid Build Coastguard Worker } 900*333d2b36SAndroid Build Coastguard Worker 901*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 902*333d2b36SAndroid Build Coastguard Worker name: "mynewlibrary", 903*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 904*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 905*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "10", 906*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 907*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 908*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 909*333d2b36SAndroid Build Coastguard Worker hidden_api: { 910*333d2b36SAndroid Build Coastguard Worker max_target_q: [ 911*333d2b36SAndroid Build Coastguard Worker "my-new-max-target-q.txt", 912*333d2b36SAndroid Build Coastguard Worker ], 913*333d2b36SAndroid Build Coastguard Worker split_packages: ["sdklibrary", "newlibrary"], 914*333d2b36SAndroid Build Coastguard Worker package_prefixes: ["newlibrary.all.mine"], 915*333d2b36SAndroid Build Coastguard Worker single_packages: ["newlibrary.mine"], 916*333d2b36SAndroid Build Coastguard Worker }, 917*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 918*333d2b36SAndroid Build Coastguard Worker } 919*333d2b36SAndroid Build Coastguard Worker `), 920*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 921*333d2b36SAndroid Build Coastguard Worker 922*333d2b36SAndroid Build Coastguard Worker // A preparer to update the test fixture used when processing an unpackage snapshot. 923*333d2b36SAndroid Build Coastguard Worker preparerForSnapshot := fixtureAddPrebuiltApexForBootclasspathFragment("myapex", "mybootclasspathfragment") 924*333d2b36SAndroid Build Coastguard Worker 925*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 926*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(` 927*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 928*333d2b36SAndroid Build Coastguard Worker 929*333d2b36SAndroid Build Coastguard Workerapex_contributions_defaults { 930*333d2b36SAndroid Build Coastguard Worker name: "mysdk.contributions", 931*333d2b36SAndroid Build Coastguard Worker contents: [ 932*333d2b36SAndroid Build Coastguard Worker "prebuilt_mynewlibrary", 933*333d2b36SAndroid Build Coastguard Worker "prebuilt_mysdklibrary", 934*333d2b36SAndroid Build Coastguard Worker ], 935*333d2b36SAndroid Build Coastguard Worker} 936*333d2b36SAndroid Build Coastguard Worker 937*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 938*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 939*333d2b36SAndroid Build Coastguard Worker prefer: false, 940*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 941*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 942*333d2b36SAndroid Build Coastguard Worker contents: [ 943*333d2b36SAndroid Build Coastguard Worker "mybootlib", 944*333d2b36SAndroid Build Coastguard Worker "mynewlibrary", 945*333d2b36SAndroid Build Coastguard Worker ], 946*333d2b36SAndroid Build Coastguard Worker api: { 947*333d2b36SAndroid Build Coastguard Worker stub_libs: ["mysdklibrary"], 948*333d2b36SAndroid Build Coastguard Worker }, 949*333d2b36SAndroid Build Coastguard Worker hidden_api: { 950*333d2b36SAndroid Build Coastguard Worker unsupported: ["hiddenapi/my-unsupported.txt"], 951*333d2b36SAndroid Build Coastguard Worker removed: ["hiddenapi/my-removed.txt"], 952*333d2b36SAndroid Build Coastguard Worker max_target_r_low_priority: ["hiddenapi/my-max-target-r-low-priority.txt"], 953*333d2b36SAndroid Build Coastguard Worker max_target_q: [ 954*333d2b36SAndroid Build Coastguard Worker "hiddenapi/my-max-target-q.txt", 955*333d2b36SAndroid Build Coastguard Worker "hiddenapi/my-new-max-target-q.txt", 956*333d2b36SAndroid Build Coastguard Worker ], 957*333d2b36SAndroid Build Coastguard Worker max_target_p: ["hiddenapi/my-max-target-p.txt"], 958*333d2b36SAndroid Build Coastguard Worker max_target_o_low_priority: ["hiddenapi/my-max-target-o-low-priority.txt"], 959*333d2b36SAndroid Build Coastguard Worker blocked: ["hiddenapi/my-blocked.txt"], 960*333d2b36SAndroid Build Coastguard Worker unsupported_packages: ["hiddenapi/my-unsupported-packages.txt"], 961*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 962*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 963*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 964*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 965*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 966*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 967*333d2b36SAndroid Build Coastguard Worker }, 968*333d2b36SAndroid Build Coastguard Worker} 969*333d2b36SAndroid Build Coastguard Worker 970*333d2b36SAndroid Build Coastguard Workerjava_import { 971*333d2b36SAndroid Build Coastguard Worker name: "mybootlib", 972*333d2b36SAndroid Build Coastguard Worker prefer: false, 973*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 974*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 975*333d2b36SAndroid Build Coastguard Worker jars: ["java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar"], 976*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "1", 977*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mybootlib"], 978*333d2b36SAndroid Build Coastguard Worker} 979*333d2b36SAndroid Build Coastguard Worker 980*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 981*333d2b36SAndroid Build Coastguard Worker name: "mynewlibrary", 982*333d2b36SAndroid Build Coastguard Worker prefer: false, 983*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 984*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 985*333d2b36SAndroid Build Coastguard Worker shared_library: true, 986*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 987*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 988*333d2b36SAndroid Build Coastguard Worker public: { 989*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mynewlibrary-stubs.jar"], 990*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mynewlibrary_stub_sources"], 991*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mynewlibrary.txt", 992*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mynewlibrary-removed.txt", 993*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 994*333d2b36SAndroid Build Coastguard Worker }, 995*333d2b36SAndroid Build Coastguard Worker} 996*333d2b36SAndroid Build Coastguard Worker 997*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 998*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 999*333d2b36SAndroid Build Coastguard Worker prefer: false, 1000*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1001*333d2b36SAndroid Build Coastguard Worker apex_available: ["//apex_available:platform"], 1002*333d2b36SAndroid Build Coastguard Worker shared_library: true, 1003*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 1004*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mysdklibrary"], 1005*333d2b36SAndroid Build Coastguard Worker public: { 1006*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 1007*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 1008*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 1009*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 1010*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1011*333d2b36SAndroid Build Coastguard Worker }, 1012*333d2b36SAndroid Build Coastguard Worker} 1013*333d2b36SAndroid Build Coastguard Worker`), 1014*333d2b36SAndroid Build Coastguard Worker checkAllCopyRules(` 1015*333d2b36SAndroid Build Coastguard Workermy-unsupported.txt -> hiddenapi/my-unsupported.txt 1016*333d2b36SAndroid Build Coastguard Workermy-removed.txt -> hiddenapi/my-removed.txt 1017*333d2b36SAndroid Build Coastguard Workermy-max-target-r-low-priority.txt -> hiddenapi/my-max-target-r-low-priority.txt 1018*333d2b36SAndroid Build Coastguard Workermy-max-target-q.txt -> hiddenapi/my-max-target-q.txt 1019*333d2b36SAndroid Build Coastguard Workermy-new-max-target-q.txt -> hiddenapi/my-new-max-target-q.txt 1020*333d2b36SAndroid Build Coastguard Workermy-max-target-p.txt -> hiddenapi/my-max-target-p.txt 1021*333d2b36SAndroid Build Coastguard Workermy-max-target-o-low-priority.txt -> hiddenapi/my-max-target-o-low-priority.txt 1022*333d2b36SAndroid Build Coastguard Workermy-blocked.txt -> hiddenapi/my-blocked.txt 1023*333d2b36SAndroid Build Coastguard Workermy-unsupported-packages.txt -> hiddenapi/my-unsupported-packages.txt 1024*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 1025*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 1026*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/index.csv -> hiddenapi/index.csv 1027*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv 1028*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv 1029*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv 1030*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdk/common_os/empty -> java_boot_libs/snapshot/jars/are/invalid/mybootlib.jar 1031*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewlibrary.stubs.exportable/android_common/combined/mynewlibrary.stubs.exportable.jar -> sdk_library/public/mynewlibrary-stubs.jar 1032*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewlibrary.stubs.source/android_common/exportable/mynewlibrary.stubs.source_api.txt -> sdk_library/public/mynewlibrary.txt 1033*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewlibrary.stubs.source/android_common/exportable/mynewlibrary.stubs.source_removed.txt -> sdk_library/public/mynewlibrary-removed.txt 1034*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 1035*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 1036*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 1037*333d2b36SAndroid Build Coastguard Worker`), 1038*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithoutSource, preparerForSnapshot), 1039*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotWithSourcePreferred, preparerForSnapshot), 1040*333d2b36SAndroid Build Coastguard Worker snapshotTestPreparer(checkSnapshotPreferredWithSource, preparerForSnapshot), 1041*333d2b36SAndroid Build Coastguard Worker ) 1042*333d2b36SAndroid Build Coastguard Worker} 1043*333d2b36SAndroid Build Coastguard Worker 1044*333d2b36SAndroid Build Coastguard Workerfunc testSnapshotWithBootClasspathFragment_MinSdkVersion(t *testing.T, targetBuildRelease string, 1045*333d2b36SAndroid Build Coastguard Worker expectedSdkSnapshot string, 1046*333d2b36SAndroid Build Coastguard Worker expectedCopyRules string, 1047*333d2b36SAndroid Build Coastguard Worker expectedStubFlagsInputs []string, 1048*333d2b36SAndroid Build Coastguard Worker suffix string) { 1049*333d2b36SAndroid Build Coastguard Worker 1050*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 1051*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 1052*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 1053*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 1054*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "mynewsdklibrary"), 1055*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureApexBootJars("myapex:mysdklibrary", "myapex:mynewsdklibrary"), 1056*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 1057*333d2b36SAndroid Build Coastguard Worker 1058*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath that depends on the fragment. 1059*333d2b36SAndroid Build Coastguard Worker fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"), 1060*333d2b36SAndroid Build Coastguard Worker 1061*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeEnv(map[string]string{ 1062*333d2b36SAndroid Build Coastguard Worker "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": targetBuildRelease, 1063*333d2b36SAndroid Build Coastguard Worker }), 1064*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 1065*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"VanillaIceCream"} 1066*333d2b36SAndroid Build Coastguard Worker }), 1067*333d2b36SAndroid Build Coastguard Worker 1068*333d2b36SAndroid Build Coastguard Worker android.PrepareForTestWithBuildFlag("RELEASE_HIDDEN_API_EXPORTABLE_STUBS", "true"), 1069*333d2b36SAndroid Build Coastguard Worker 1070*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 1071*333d2b36SAndroid Build Coastguard Worker sdk { 1072*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 1073*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 1074*333d2b36SAndroid Build Coastguard Worker } 1075*333d2b36SAndroid Build Coastguard Worker 1076*333d2b36SAndroid Build Coastguard Worker apex { 1077*333d2b36SAndroid Build Coastguard Worker name: "myapex", 1078*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 1079*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "S", 1080*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 1081*333d2b36SAndroid Build Coastguard Worker } 1082*333d2b36SAndroid Build Coastguard Worker 1083*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 1084*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 1085*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1086*333d2b36SAndroid Build Coastguard Worker contents: [ 1087*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 1088*333d2b36SAndroid Build Coastguard Worker "mynewsdklibrary", 1089*333d2b36SAndroid Build Coastguard Worker ], 1090*333d2b36SAndroid Build Coastguard Worker 1091*333d2b36SAndroid Build Coastguard Worker hidden_api: { 1092*333d2b36SAndroid Build Coastguard Worker split_packages: [], 1093*333d2b36SAndroid Build Coastguard Worker }, 1094*333d2b36SAndroid Build Coastguard Worker } 1095*333d2b36SAndroid Build Coastguard Worker 1096*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 1097*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 1098*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1099*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 1100*333d2b36SAndroid Build Coastguard Worker shared_library: false, 1101*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 1102*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "S", 1103*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1104*333d2b36SAndroid Build Coastguard Worker } 1105*333d2b36SAndroid Build Coastguard Worker 1106*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 1107*333d2b36SAndroid Build Coastguard Worker name: "mynewsdklibrary", 1108*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1109*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 1110*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 1111*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 1112*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "Tiramisu", 1113*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mynewsdklibrary"], 1114*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1115*333d2b36SAndroid Build Coastguard Worker } 1116*333d2b36SAndroid Build Coastguard Worker `), 1117*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 1118*333d2b36SAndroid Build Coastguard Worker 1119*333d2b36SAndroid Build Coastguard Worker bcpf := result.ModuleForTests("mybootclasspathfragment", "android_common") 1120*333d2b36SAndroid Build Coastguard Worker rule := bcpf.Output("out/soong/.intermediates/mybootclasspathfragment/android_common/modular-hiddenapi" + suffix + "/stub-flags.csv") 1121*333d2b36SAndroid Build Coastguard Worker android.AssertPathsRelativeToTopEquals(t, "stub flags inputs", android.SortedUniqueStrings(expectedStubFlagsInputs), android.SortedUniquePaths(rule.Implicits)) 1122*333d2b36SAndroid Build Coastguard Worker 1123*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", 1124*333d2b36SAndroid Build Coastguard Worker checkAndroidBpContents(expectedSdkSnapshot), 1125*333d2b36SAndroid Build Coastguard Worker checkAllCopyRules(expectedCopyRules), 1126*333d2b36SAndroid Build Coastguard Worker ) 1127*333d2b36SAndroid Build Coastguard Worker} 1128*333d2b36SAndroid Build Coastguard Worker 1129*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithBootClasspathFragment_MinSdkVersion(t *testing.T) { 1130*333d2b36SAndroid Build Coastguard Worker t.Run("target S build", func(t *testing.T) { 1131*333d2b36SAndroid Build Coastguard Worker expectedSnapshot := ` 1132*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 1133*333d2b36SAndroid Build Coastguard Worker 1134*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 1135*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 1136*333d2b36SAndroid Build Coastguard Worker prefer: false, 1137*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1138*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1139*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary"], 1140*333d2b36SAndroid Build Coastguard Worker hidden_api: { 1141*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 1142*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 1143*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 1144*333d2b36SAndroid Build Coastguard Worker stub_flags: "hiddenapi/stub-flags.csv", 1145*333d2b36SAndroid Build Coastguard Worker all_flags: "hiddenapi/all-flags.csv", 1146*333d2b36SAndroid Build Coastguard Worker }, 1147*333d2b36SAndroid Build Coastguard Worker} 1148*333d2b36SAndroid Build Coastguard Worker 1149*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 1150*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 1151*333d2b36SAndroid Build Coastguard Worker prefer: false, 1152*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1153*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1154*333d2b36SAndroid Build Coastguard Worker shared_library: false, 1155*333d2b36SAndroid Build Coastguard Worker public: { 1156*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 1157*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 1158*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 1159*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 1160*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1161*333d2b36SAndroid Build Coastguard Worker }, 1162*333d2b36SAndroid Build Coastguard Worker} 1163*333d2b36SAndroid Build Coastguard Worker` 1164*333d2b36SAndroid Build Coastguard Worker expectedCopyRules := ` 1165*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi-for-sdk-snapshot/annotation-flags.csv -> hiddenapi/annotation-flags.csv 1166*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi-for-sdk-snapshot/metadata.csv -> hiddenapi/metadata.csv 1167*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi-for-sdk-snapshot/index.csv -> hiddenapi/index.csv 1168*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi-for-sdk-snapshot/stub-flags.csv -> hiddenapi/stub-flags.csv 1169*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi-for-sdk-snapshot/all-flags.csv -> hiddenapi/all-flags.csv 1170*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 1171*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 1172*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 1173*333d2b36SAndroid Build Coastguard Worker` 1174*333d2b36SAndroid Build Coastguard Worker 1175*333d2b36SAndroid Build Coastguard Worker // On S the stub flags should only be generated from mysdklibrary as mynewsdklibrary is not part 1176*333d2b36SAndroid Build Coastguard Worker // of the snapshot. 1177*333d2b36SAndroid Build Coastguard Worker expectedStubFlagsInputs := []string{ 1178*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mysdklibrary.stubs.exportable/android_common/dex/mysdklibrary.stubs.exportable.jar", 1179*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mysdklibrary.impl/android_common/aligned/mysdklibrary.jar", 1180*333d2b36SAndroid Build Coastguard Worker } 1181*333d2b36SAndroid Build Coastguard Worker 1182*333d2b36SAndroid Build Coastguard Worker testSnapshotWithBootClasspathFragment_MinSdkVersion(t, "S", 1183*333d2b36SAndroid Build Coastguard Worker expectedSnapshot, expectedCopyRules, expectedStubFlagsInputs, "-for-sdk-snapshot") 1184*333d2b36SAndroid Build Coastguard Worker }) 1185*333d2b36SAndroid Build Coastguard Worker 1186*333d2b36SAndroid Build Coastguard Worker t.Run("target-Tiramisu-build", func(t *testing.T) { 1187*333d2b36SAndroid Build Coastguard Worker expectedSnapshot := ` 1188*333d2b36SAndroid Build Coastguard Worker// This is auto-generated. DO NOT EDIT. 1189*333d2b36SAndroid Build Coastguard Worker 1190*333d2b36SAndroid Build Coastguard Workerprebuilt_bootclasspath_fragment { 1191*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 1192*333d2b36SAndroid Build Coastguard Worker prefer: false, 1193*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1194*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1195*333d2b36SAndroid Build Coastguard Worker contents: [ 1196*333d2b36SAndroid Build Coastguard Worker "mysdklibrary", 1197*333d2b36SAndroid Build Coastguard Worker "mynewsdklibrary", 1198*333d2b36SAndroid Build Coastguard Worker ], 1199*333d2b36SAndroid Build Coastguard Worker hidden_api: { 1200*333d2b36SAndroid Build Coastguard Worker annotation_flags: "hiddenapi/annotation-flags.csv", 1201*333d2b36SAndroid Build Coastguard Worker metadata: "hiddenapi/metadata.csv", 1202*333d2b36SAndroid Build Coastguard Worker index: "hiddenapi/index.csv", 1203*333d2b36SAndroid Build Coastguard Worker signature_patterns: "hiddenapi/signature-patterns.csv", 1204*333d2b36SAndroid Build Coastguard Worker filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv", 1205*333d2b36SAndroid Build Coastguard Worker filtered_flags: "hiddenapi/filtered-flags.csv", 1206*333d2b36SAndroid Build Coastguard Worker }, 1207*333d2b36SAndroid Build Coastguard Worker} 1208*333d2b36SAndroid Build Coastguard Worker 1209*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 1210*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 1211*333d2b36SAndroid Build Coastguard Worker prefer: false, 1212*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1213*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1214*333d2b36SAndroid Build Coastguard Worker shared_library: false, 1215*333d2b36SAndroid Build Coastguard Worker public: { 1216*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mysdklibrary-stubs.jar"], 1217*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mysdklibrary_stub_sources"], 1218*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mysdklibrary.txt", 1219*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mysdklibrary-removed.txt", 1220*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1221*333d2b36SAndroid Build Coastguard Worker }, 1222*333d2b36SAndroid Build Coastguard Worker} 1223*333d2b36SAndroid Build Coastguard Worker 1224*333d2b36SAndroid Build Coastguard Workerjava_sdk_library_import { 1225*333d2b36SAndroid Build Coastguard Worker name: "mynewsdklibrary", 1226*333d2b36SAndroid Build Coastguard Worker prefer: false, 1227*333d2b36SAndroid Build Coastguard Worker visibility: ["//visibility:public"], 1228*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1229*333d2b36SAndroid Build Coastguard Worker shared_library: true, 1230*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 1231*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mynewsdklibrary"], 1232*333d2b36SAndroid Build Coastguard Worker public: { 1233*333d2b36SAndroid Build Coastguard Worker jars: ["sdk_library/public/mynewsdklibrary-stubs.jar"], 1234*333d2b36SAndroid Build Coastguard Worker stub_srcs: ["sdk_library/public/mynewsdklibrary_stub_sources"], 1235*333d2b36SAndroid Build Coastguard Worker current_api: "sdk_library/public/mynewsdklibrary.txt", 1236*333d2b36SAndroid Build Coastguard Worker removed_api: "sdk_library/public/mynewsdklibrary-removed.txt", 1237*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1238*333d2b36SAndroid Build Coastguard Worker }, 1239*333d2b36SAndroid Build Coastguard Worker} 1240*333d2b36SAndroid Build Coastguard Worker` 1241*333d2b36SAndroid Build Coastguard Worker expectedCopyRules := ` 1242*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/annotation-flags.csv -> hiddenapi/annotation-flags.csv 1243*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/metadata.csv -> hiddenapi/metadata.csv 1244*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/index.csv -> hiddenapi/index.csv 1245*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/signature-patterns.csv -> hiddenapi/signature-patterns.csv 1246*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-stub-flags.csv -> hiddenapi/filtered-stub-flags.csv 1247*333d2b36SAndroid Build Coastguard Worker.intermediates/mybootclasspathfragment/android_common_myapex/modular-hiddenapi/filtered-flags.csv -> hiddenapi/filtered-flags.csv 1248*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.exportable/android_common/combined/mysdklibrary.stubs.exportable.jar -> sdk_library/public/mysdklibrary-stubs.jar 1249*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_api.txt -> sdk_library/public/mysdklibrary.txt 1250*333d2b36SAndroid Build Coastguard Worker.intermediates/mysdklibrary.stubs.source/android_common/exportable/mysdklibrary.stubs.source_removed.txt -> sdk_library/public/mysdklibrary-removed.txt 1251*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewsdklibrary.stubs.exportable/android_common/combined/mynewsdklibrary.stubs.exportable.jar -> sdk_library/public/mynewsdklibrary-stubs.jar 1252*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewsdklibrary.stubs.source/android_common/exportable/mynewsdklibrary.stubs.source_api.txt -> sdk_library/public/mynewsdklibrary.txt 1253*333d2b36SAndroid Build Coastguard Worker.intermediates/mynewsdklibrary.stubs.source/android_common/exportable/mynewsdklibrary.stubs.source_removed.txt -> sdk_library/public/mynewsdklibrary-removed.txt 1254*333d2b36SAndroid Build Coastguard Worker` 1255*333d2b36SAndroid Build Coastguard Worker 1256*333d2b36SAndroid Build Coastguard Worker // On tiramisu the stub flags should be generated from both mynewsdklibrary and mysdklibrary as 1257*333d2b36SAndroid Build Coastguard Worker // they are both part of the snapshot. 1258*333d2b36SAndroid Build Coastguard Worker expectedStubFlagsInputs := []string{ 1259*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mynewsdklibrary.stubs.exportable/android_common/dex/mynewsdklibrary.stubs.exportable.jar", 1260*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mynewsdklibrary.impl/android_common/aligned/mynewsdklibrary.jar", 1261*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mysdklibrary.stubs.exportable/android_common/dex/mysdklibrary.stubs.exportable.jar", 1262*333d2b36SAndroid Build Coastguard Worker "out/soong/.intermediates/mysdklibrary.impl/android_common/aligned/mysdklibrary.jar", 1263*333d2b36SAndroid Build Coastguard Worker } 1264*333d2b36SAndroid Build Coastguard Worker 1265*333d2b36SAndroid Build Coastguard Worker testSnapshotWithBootClasspathFragment_MinSdkVersion(t, "Tiramisu", 1266*333d2b36SAndroid Build Coastguard Worker expectedSnapshot, expectedCopyRules, expectedStubFlagsInputs, "") 1267*333d2b36SAndroid Build Coastguard Worker }) 1268*333d2b36SAndroid Build Coastguard Worker} 1269*333d2b36SAndroid Build Coastguard Worker 1270*333d2b36SAndroid Build Coastguard Workerfunc TestSnapshotWithEmptyBootClasspathFragment(t *testing.T) { 1271*333d2b36SAndroid Build Coastguard Worker result := android.GroupFixturePreparers( 1272*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithJava, 1273*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaDefaultModules, 1274*333d2b36SAndroid Build Coastguard Worker java.PrepareForTestWithJavaSdkLibraryFiles, 1275*333d2b36SAndroid Build Coastguard Worker java.FixtureWithLastReleaseApis("mysdklibrary", "mynewsdklibrary"), 1276*333d2b36SAndroid Build Coastguard Worker java.FixtureConfigureApexBootJars("myapex:mysdklibrary", "myapex:mynewsdklibrary"), 1277*333d2b36SAndroid Build Coastguard Worker prepareForSdkTestWithApex, 1278*333d2b36SAndroid Build Coastguard Worker // Add a platform_bootclasspath that depends on the fragment. 1279*333d2b36SAndroid Build Coastguard Worker fixtureAddPlatformBootclasspathForBootclasspathFragment("myapex", "mybootclasspathfragment"), 1280*333d2b36SAndroid Build Coastguard Worker android.FixtureMergeEnv(map[string]string{ 1281*333d2b36SAndroid Build Coastguard Worker "SOONG_SDK_SNAPSHOT_TARGET_BUILD_RELEASE": "S", 1282*333d2b36SAndroid Build Coastguard Worker }), 1283*333d2b36SAndroid Build Coastguard Worker android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) { 1284*333d2b36SAndroid Build Coastguard Worker variables.Platform_version_active_codenames = []string{"VanillaIceCream"} 1285*333d2b36SAndroid Build Coastguard Worker }), 1286*333d2b36SAndroid Build Coastguard Worker android.FixtureWithRootAndroidBp(` 1287*333d2b36SAndroid Build Coastguard Worker sdk { 1288*333d2b36SAndroid Build Coastguard Worker name: "mysdk", 1289*333d2b36SAndroid Build Coastguard Worker apexes: ["myapex"], 1290*333d2b36SAndroid Build Coastguard Worker } 1291*333d2b36SAndroid Build Coastguard Worker apex { 1292*333d2b36SAndroid Build Coastguard Worker name: "myapex", 1293*333d2b36SAndroid Build Coastguard Worker key: "myapex.key", 1294*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "S", 1295*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragments: ["mybootclasspathfragment"], 1296*333d2b36SAndroid Build Coastguard Worker } 1297*333d2b36SAndroid Build Coastguard Worker bootclasspath_fragment { 1298*333d2b36SAndroid Build Coastguard Worker name: "mybootclasspathfragment", 1299*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1300*333d2b36SAndroid Build Coastguard Worker contents: ["mysdklibrary", "mynewsdklibrary"], 1301*333d2b36SAndroid Build Coastguard Worker hidden_api: { 1302*333d2b36SAndroid Build Coastguard Worker split_packages: [], 1303*333d2b36SAndroid Build Coastguard Worker }, 1304*333d2b36SAndroid Build Coastguard Worker } 1305*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 1306*333d2b36SAndroid Build Coastguard Worker name: "mysdklibrary", 1307*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1308*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 1309*333d2b36SAndroid Build Coastguard Worker shared_library: false, 1310*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 1311*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "Tiramisu", 1312*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1313*333d2b36SAndroid Build Coastguard Worker } 1314*333d2b36SAndroid Build Coastguard Worker java_sdk_library { 1315*333d2b36SAndroid Build Coastguard Worker name: "mynewsdklibrary", 1316*333d2b36SAndroid Build Coastguard Worker apex_available: ["myapex"], 1317*333d2b36SAndroid Build Coastguard Worker srcs: ["Test.java"], 1318*333d2b36SAndroid Build Coastguard Worker compile_dex: true, 1319*333d2b36SAndroid Build Coastguard Worker public: {enabled: true}, 1320*333d2b36SAndroid Build Coastguard Worker min_sdk_version: "Tiramisu", 1321*333d2b36SAndroid Build Coastguard Worker permitted_packages: ["mynewsdklibrary"], 1322*333d2b36SAndroid Build Coastguard Worker sdk_version: "current", 1323*333d2b36SAndroid Build Coastguard Worker } 1324*333d2b36SAndroid Build Coastguard Worker `), 1325*333d2b36SAndroid Build Coastguard Worker ).RunTest(t) 1326*333d2b36SAndroid Build Coastguard Worker 1327*333d2b36SAndroid Build Coastguard Worker CheckSnapshot(t, result, "mysdk", "", checkAndroidBpContents(`// This is auto-generated. DO NOT EDIT.`)) 1328*333d2b36SAndroid Build Coastguard Worker} 1329