diff options
author | 2022-02-15 12:55:11 +0000 | |
---|---|---|
committer | 2022-02-21 16:43:43 +0000 | |
commit | 3a3f169b5634ef6a7c9ad1040e7cf92dd60a37da (patch) | |
tree | e9cf98d7bdf017d4225e0b2baef544eb456734ea /java/testing.go | |
parent | 377318b33fca4bde6cea3b5d5059c3aceab73890 (diff) |
Add support for sdk extensions in prebuilt_apis
This makes it possible to pass an extensions_dir containing finalized
module APIs to prebuilt_apis. The extension versions are compared to the
api level versions to figure out what the "latest" finalized API is for
each module. This is done using the base_sdk_extension_version, such
that any extension higher than than base_sdk_extension_version is
assumed to be finalized after any of the existing api level versions.
Bug: 220086085
Test: prebuilt_apis_test.go
Test: existing module in prebuilts/sdk
Change-Id: Ib792f84202d436f594ba5e8716c6a187f9cd60dc
Diffstat (limited to 'java/testing.go')
-rw-r--r-- | java/testing.go | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/java/testing.go b/java/testing.go index 6c49bc866..82aa29b61 100644 --- a/java/testing.go +++ b/java/testing.go @@ -146,6 +146,10 @@ var PrepareForTestWithPrebuiltsOfCurrentApi = FixtureWithPrebuiltApis(map[string // This defines a file in the mock file system in a predefined location (prebuilts/sdk/Android.bp) // and so only one instance of this can be used in each fixture. func FixtureWithPrebuiltApis(release2Modules map[string][]string) android.FixturePreparer { + return FixtureWithPrebuiltApisAndExtensions(release2Modules, nil) +} + +func FixtureWithPrebuiltApisAndExtensions(apiLevel2Modules map[string][]string, extensionLevel2Modules map[string][]string) android.FixturePreparer { mockFS := android.MockFS{} path := "prebuilts/sdk/Android.bp" @@ -153,14 +157,20 @@ func FixtureWithPrebuiltApis(release2Modules map[string][]string) android.Fixtur prebuilt_apis { name: "sdk", api_dirs: ["%s"], + extensions_dir: "extensions", imports_sdk_version: "none", imports_compile_dex: true, } - `, strings.Join(android.SortedStringKeys(release2Modules), `", "`)) + `, strings.Join(android.SortedStringKeys(apiLevel2Modules), `", "`)) - for release, modules := range release2Modules { + for release, modules := range apiLevel2Modules { mockFS.Merge(prebuiltApisFilesForModules([]string{release}, modules)) } + if extensionLevel2Modules != nil { + for release, modules := range extensionLevel2Modules { + mockFS.Merge(prebuiltExtensionApiFiles([]string{release}, modules)) + } + } return android.GroupFixturePreparers( android.FixtureAddTextFile(path, bp), android.FixtureMergeMockFs(mockFS), @@ -198,6 +208,19 @@ func prebuiltApisFilesForModules(apiLevels []string, modules []string) map[strin return fs } +func prebuiltExtensionApiFiles(extensionLevels []string, modules []string) map[string][]byte { + fs := make(map[string][]byte) + for _, level := range extensionLevels { + for _, sdkKind := range []android.SdkKind{android.SdkPublic, android.SdkSystem, android.SdkModule, android.SdkSystemServer} { + for _, lib := range modules { + fs[fmt.Sprintf("prebuilts/sdk/extensions/%s/%s/api/%s.txt", level, sdkKind, lib)] = nil + fs[fmt.Sprintf("prebuilts/sdk/extensions/%s/%s/api/%s-removed.txt", level, sdkKind, lib)] = nil + } + } + } + return fs +} + // FixtureConfigureBootJars configures the boot jars in both the dexpreopt.GlobalConfig and // Config.productVariables structs. As a side effect that enables dexpreopt. func FixtureConfigureBootJars(bootJars ...string) android.FixturePreparer { |