Prevent dynamically created java_api_contribution from inheriting
parent modules' visibility By default, dynamically created module inherits the parent module's visibility. When the parent module's visibility is set to "//visibility:private" or has any other specified visibility restrictions in the module definition, the created java_api_contribution module is not visible to java_api_library. Thus, override any inherited visibility properties and set the visiblity of the created java_api_contribution module to public. Test: m Change-Id: I5db60a5a1800e2ae28c9650eeb9a2f1c3b4f8989
This commit is contained in:
@@ -878,11 +878,13 @@ func (d *Droidstubs) createApiContribution(ctx android.DefaultableHookContext) {
|
|||||||
Name *string
|
Name *string
|
||||||
Api_surface *string
|
Api_surface *string
|
||||||
Api_file *string
|
Api_file *string
|
||||||
|
Visibility []string
|
||||||
}{}
|
}{}
|
||||||
|
|
||||||
props.Name = proptools.StringPtr(d.Name() + ".api.contribution")
|
props.Name = proptools.StringPtr(d.Name() + ".api.contribution")
|
||||||
props.Api_surface = api_surface
|
props.Api_surface = api_surface
|
||||||
props.Api_file = api_file
|
props.Api_file = api_file
|
||||||
|
props.Visibility = []string{"//visibility:override", "//visibility:public"}
|
||||||
|
|
||||||
ctx.CreateModule(ApiContributionFactory, &props)
|
ctx.CreateModule(ApiContributionFactory, &props)
|
||||||
}
|
}
|
||||||
|
@@ -370,3 +370,36 @@ func TestDroidStubsApiContributionGeneration(t *testing.T) {
|
|||||||
|
|
||||||
ctx.ModuleForTests("foo.api.contribution", "")
|
ctx.ModuleForTests("foo.api.contribution", "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGeneratedApiContributionVisibilityTest(t *testing.T) {
|
||||||
|
library_bp := `
|
||||||
|
java_api_library {
|
||||||
|
name: "bar",
|
||||||
|
api_surface: "public",
|
||||||
|
api_contributions: ["foo.api.contribution"],
|
||||||
|
}
|
||||||
|
`
|
||||||
|
ctx, _ := testJavaWithFS(t, `
|
||||||
|
droidstubs {
|
||||||
|
name: "foo",
|
||||||
|
srcs: ["A/a.java"],
|
||||||
|
api_surface: "public",
|
||||||
|
check_api: {
|
||||||
|
current: {
|
||||||
|
api_file: "A/current.txt",
|
||||||
|
removed_api_file: "A/removed.txt",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
visibility: ["//a"],
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
map[string][]byte{
|
||||||
|
"a/a.java": nil,
|
||||||
|
"a/current.txt": nil,
|
||||||
|
"a/removed.txt": nil,
|
||||||
|
"b/Android.bp": []byte(library_bp),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
ctx.ModuleForTests("bar", "android_common")
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user