Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 08abf727 authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Ensure boot jar modules have been initialized properly for hidden API"

parents b448c34b 1ba24673
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -111,6 +111,13 @@ type hiddenAPIIntf interface {

var _ hiddenAPIIntf = (*hiddenAPI)(nil)

// hiddenAPISupportingModule is the interface that is implemented by any module that supports
// contributing to the hidden API processing.
type hiddenAPISupportingModule interface {
	android.Module
	hiddenAPIIntf
}

// Initialize the hiddenapi structure
func (h *hiddenAPI) initHiddenAPI(ctx android.BaseModuleContext, configurationName string) {
	// If hiddenapi processing is disabled treat this as inactive.
+25 −5
Original line number Diff line number Diff line
@@ -303,15 +303,35 @@ func (b *platformBootclasspathModule) generateHiddenAPIBuildActions(ctx android.
		return
	}

	moduleSpecificFlagsPaths := android.Paths{}
	hiddenAPISupportingModules := []hiddenAPISupportingModule{}
	for _, module := range modules {
		if h, ok := module.(hiddenAPIIntf); ok {
			if csv := h.flagsCSV(); csv != nil {
				moduleSpecificFlagsPaths = append(moduleSpecificFlagsPaths, csv)
		if h, ok := module.(hiddenAPISupportingModule); ok {
			if h.bootDexJar() == nil {
				ctx.ModuleErrorf("module %s does not provide a bootDexJar file", module)
			}
			if h.flagsCSV() == nil {
				ctx.ModuleErrorf("module %s does not provide a flagsCSV file", module)
			}
			if h.indexCSV() == nil {
				ctx.ModuleErrorf("module %s does not provide an indexCSV file", module)
			}
			if h.metadataCSV() == nil {
				ctx.ModuleErrorf("module %s does not provide a metadataCSV file", module)
			}

			if ctx.Failed() {
				continue
			}

			hiddenAPISupportingModules = append(hiddenAPISupportingModules, h)
		} else {
			ctx.ModuleErrorf("module %s of type %s does not implement hiddenAPIIntf", module, ctx.OtherModuleType(module))
			ctx.ModuleErrorf("module %s of type %s does not support hidden API processing", module, ctx.OtherModuleType(module))
		}
	}

	moduleSpecificFlagsPaths := android.Paths{}
	for _, module := range hiddenAPISupportingModules {
		moduleSpecificFlagsPaths = append(moduleSpecificFlagsPaths, module.flagsCSV())
	}

	augmentationInfo := b.properties.Hidden_api.hiddenAPIAugmentationInfo(ctx)