From 438eb57a2744b9b0bd38a5526e67cacf43c42b31 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 21 May 2021 16:58:23 +0100 Subject: 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 Change-Id: Ia5c5f65ae5645486c42819c669a8601588217f88 --- java/platform_bootclasspath.go | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) (limited to 'java/platform_bootclasspath.go') 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(). -- cgit v1.2.3-59-g8ed1b