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:
Jihoon Kang
2023-02-03 22:56:13 +00:00
parent fd659ef7da
commit 42b589cd61
2 changed files with 35 additions and 0 deletions

View File

@@ -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)
} }

View File

@@ -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")
}