diff options
author | Paul Duffin <paulduffin@google.com> | 2021-05-21 16:58:23 +0100 |
---|---|---|
committer | Paul Duffin <paulduffin@google.com> | 2021-05-24 18:20:07 +0100 |
commit | 9e3b906581c7b1e1019ed3d2a2a2bec67d3ef501 (patch) | |
tree | e26365d179feec77b6fb4fe2e25bd03682b67341 /java/platform_bootclasspath.go | |
parent | b40610ad00c64c2d68647cce1bd27e8627c3e43d (diff) |
Separate monolithic hidden API processing from hiddenAPIFlagFileInfo
The hiddenAPIFlagFileInfo was being used for both the input and output
of bootclasspath_fragment and platform_bootclasspath and also to pass
information around to various hidden API rule methods. Supporting
multiple different uses in this way made it hard to reason about.
This change creates a separate structure for use by the
platform_bootclasspath. Follow up changes will split out other
functionality into separate types.
Bug: 179354495
Test: m com.android.art com.android.ipsec com.android.os.statsd com.android.conscrypt
- verify that this does not change the contents of the apex files
Merged-In: Ia5c5f65ae5645486c42819c669a8601588217f88
Change-Id: Ia5c5f65ae5645486c42819c669a8601588217f88
(cherry picked from commit 438eb57a2744b9b0bd38a5526e67cacf43c42b31)
Diffstat (limited to 'java/platform_bootclasspath.go')
-rw-r--r-- | java/platform_bootclasspath.go | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/java/platform_bootclasspath.go b/java/platform_bootclasspath.go index 5db2efe40..df0ba2a42 100644 --- a/java/platform_bootclasspath.go +++ b/java/platform_bootclasspath.go @@ -279,21 +279,12 @@ func (b *platformBootclasspathModule) generateHiddenAPIBuildActions(ctx android. return } - flagFileInfo := b.properties.Hidden_api.hiddenAPIFlagFileInfo(ctx) - for _, fragment := range fragments { - if ctx.OtherModuleHasProvider(fragment, hiddenAPIFlagFileInfoProvider) { - info := ctx.OtherModuleProvider(fragment, hiddenAPIFlagFileInfoProvider).(hiddenAPIFlagFileInfo) - flagFileInfo.append(info) - } - } + monolithicInfo := b.createAndProvideMonolithicHiddenAPIInfo(ctx, fragments) - // Store the information for testing. - ctx.SetProvider(hiddenAPIFlagFileInfoProvider, flagFileInfo) + sdkKindToStubPaths := hiddenAPIGatherStubLibDexJarPaths(ctx, nil) hiddenAPIModules := gatherHiddenAPIModuleFromContents(ctx, modules) - sdkKindToStubPaths := hiddenAPIGatherStubLibDexJarPaths(ctx, nil) - // Generate the monolithic stub-flags.csv file. bootDexJars := extractBootDexJarsFromHiddenAPIModules(ctx, hiddenAPIModules) stubFlags := hiddenAPISingletonPaths(ctx).stubFlags @@ -309,7 +300,7 @@ func (b *platformBootclasspathModule) generateHiddenAPIBuildActions(ctx android. // Generate the monotlithic hiddenapi-flags.csv file. allFlags := hiddenAPISingletonPaths(ctx).flags - buildRuleToGenerateHiddenApiFlags(ctx, "hiddenAPIFlagsFile", "hiddenapi flags", allFlags, stubFlags, annotationFlags, &flagFileInfo) + buildRuleToGenerateHiddenApiFlags(ctx, "hiddenAPIFlagsFile", "hiddenapi flags", allFlags, stubFlags, annotationFlags, monolithicInfo.FlagsFilesByCategory, monolithicInfo.AllFlagsPaths) // Generate an intermediate monolithic hiddenapi-metadata.csv file directly from the annotations // in the source code. @@ -328,6 +319,17 @@ func (b *platformBootclasspathModule) generateHiddenAPIBuildActions(ctx android. buildRuleToGenerateIndex(ctx, "monolithic hidden API index", classesJars, indexCSV) } +// createAndProvideMonolithicHiddenAPIInfo creates a MonolithicHiddenAPIInfo and provides it for +// testing. +func (b *platformBootclasspathModule) createAndProvideMonolithicHiddenAPIInfo(ctx android.ModuleContext, fragments []android.Module) MonolithicHiddenAPIInfo { + flagFileInfo := b.properties.Hidden_api.hiddenAPIFlagFileInfo(ctx) + monolithicInfo := newMonolithicHiddenAPIInfo(ctx, flagFileInfo.FlagFilesByCategory, fragments) + + // Store the information for testing. + ctx.SetProvider(monolithicHiddenAPIInfoProvider, monolithicInfo) + return monolithicInfo +} + func (b *platformBootclasspathModule) buildRuleMergeCSV(ctx android.ModuleContext, desc string, inputPaths android.Paths, outputPath android.WritablePath) { rule := android.NewRuleBuilder(pctx, ctx) rule.Command(). |