Allow pre-singleton types to be registered in RegistrationContext
Bug: 181070625 Test: m droid Change-Id: I708b78ed0b42ec55b0442307f40531cfe1233c2b
This commit is contained in:
@@ -168,6 +168,7 @@ func ModuleTypeFactoriesForDocs() map[string]reflect.Value {
|
|||||||
type RegistrationContext interface {
|
type RegistrationContext interface {
|
||||||
RegisterModuleType(name string, factory ModuleFactory)
|
RegisterModuleType(name string, factory ModuleFactory)
|
||||||
RegisterSingletonModuleType(name string, factory SingletonModuleFactory)
|
RegisterSingletonModuleType(name string, factory SingletonModuleFactory)
|
||||||
|
RegisterPreSingletonType(name string, factory SingletonFactory)
|
||||||
RegisterSingletonType(name string, factory SingletonFactory)
|
RegisterSingletonType(name string, factory SingletonFactory)
|
||||||
PreArchMutators(f RegisterMutatorFunc)
|
PreArchMutators(f RegisterMutatorFunc)
|
||||||
|
|
||||||
@@ -208,6 +209,7 @@ var _ RegistrationContext = (*TestContext)(nil)
|
|||||||
type initRegistrationContext struct {
|
type initRegistrationContext struct {
|
||||||
moduleTypes map[string]ModuleFactory
|
moduleTypes map[string]ModuleFactory
|
||||||
singletonTypes map[string]SingletonFactory
|
singletonTypes map[string]SingletonFactory
|
||||||
|
preSingletonTypes map[string]SingletonFactory
|
||||||
moduleTypesForDocs map[string]reflect.Value
|
moduleTypesForDocs map[string]reflect.Value
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -238,6 +240,14 @@ func (ctx *initRegistrationContext) RegisterSingletonType(name string, factory S
|
|||||||
RegisterSingletonType(name, factory)
|
RegisterSingletonType(name, factory)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ctx *initRegistrationContext) RegisterPreSingletonType(name string, factory SingletonFactory) {
|
||||||
|
if _, present := ctx.preSingletonTypes[name]; present {
|
||||||
|
panic(fmt.Sprintf("pre singleton type %q is already registered", name))
|
||||||
|
}
|
||||||
|
ctx.preSingletonTypes[name] = factory
|
||||||
|
RegisterPreSingletonType(name, factory)
|
||||||
|
}
|
||||||
|
|
||||||
func (ctx *initRegistrationContext) PreArchMutators(f RegisterMutatorFunc) {
|
func (ctx *initRegistrationContext) PreArchMutators(f RegisterMutatorFunc) {
|
||||||
PreArchMutators(f)
|
PreArchMutators(f)
|
||||||
}
|
}
|
||||||
|
@@ -140,6 +140,10 @@ func (ctx *TestContext) RegisterSingletonType(name string, factory SingletonFact
|
|||||||
ctx.Context.RegisterSingletonType(name, SingletonFactoryAdaptor(ctx.Context, factory))
|
ctx.Context.RegisterSingletonType(name, SingletonFactoryAdaptor(ctx.Context, factory))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ctx *TestContext) RegisterPreSingletonType(name string, factory SingletonFactory) {
|
||||||
|
ctx.Context.RegisterPreSingletonType(name, SingletonFactoryAdaptor(ctx.Context, factory))
|
||||||
|
}
|
||||||
|
|
||||||
func (ctx *TestContext) ModuleForTests(name, variant string) TestingModule {
|
func (ctx *TestContext) ModuleForTests(name, variant string) TestingModule {
|
||||||
var module Module
|
var module Module
|
||||||
ctx.VisitAllModules(func(m blueprint.Module) {
|
ctx.VisitAllModules(func(m blueprint.Module) {
|
||||||
|
@@ -74,8 +74,8 @@ func testContext(config android.Config) *android.TestContext {
|
|||||||
|
|
||||||
ctx.PreDepsMutators(python.RegisterPythonPreDepsMutators)
|
ctx.PreDepsMutators(python.RegisterPythonPreDepsMutators)
|
||||||
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
|
ctx.PostDepsMutators(android.RegisterOverridePostDepsMutators)
|
||||||
ctx.RegisterPreSingletonType("overlay", android.SingletonFactoryAdaptor(ctx.Context, OverlaySingletonFactory))
|
ctx.RegisterPreSingletonType("overlay", OverlaySingletonFactory)
|
||||||
ctx.RegisterPreSingletonType("sdk_versions", android.SingletonFactoryAdaptor(ctx.Context, sdkPreSingletonFactory))
|
ctx.RegisterPreSingletonType("sdk_versions", sdkPreSingletonFactory)
|
||||||
|
|
||||||
android.RegisterPrebuiltMutators(ctx)
|
android.RegisterPrebuiltMutators(ctx)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user