From 19604de13e1a531dc0b3695932c6689ac629c0d4 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Tue, 24 Mar 2020 16:44:11 +0900 Subject: [PATCH] add aidl.export_include_dirs to java_import module type This allows a java prebuilt to export AIDL files to its clients. Bug: 151933053 Test: m Change-Id: I21b5d5ce647141a7c76f62490adbccb858b10323 --- java/java.go | 11 ++++++++++- java/java_test.go | 24 ++++++++++++++++++++++++ java/testing.go | 2 ++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/java/java.go b/java/java.go index 22d14ecfe..390ee26ee 100644 --- a/java/java.go +++ b/java/java.go @@ -2338,6 +2338,12 @@ type ImportProperties struct { // set the name of the output Stem *string + + Aidl struct { + // directories that should be added as include directories for any aidl sources of modules + // that depend on this module, as well as to aidl for this module. + Export_include_dirs []string + } } type Import struct { @@ -2351,6 +2357,7 @@ type Import struct { combinedClasspathFile android.Path exportedSdkLibs []string + exportAidlIncludeDirs android.Paths } func (j *Import) sdkVersion() sdkSpec { @@ -2424,6 +2431,8 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) { ctx.InstallFile(android.PathForModuleInstall(ctx, "framework"), jarName, outputFile) } + + j.exportAidlIncludeDirs = android.PathsForModuleSrc(ctx, j.properties.Aidl.Export_include_dirs) } var _ Dependency = (*Import)(nil) @@ -2458,7 +2467,7 @@ func (j *Import) DexJar() android.Path { } func (j *Import) AidlIncludeDirs() android.Paths { - return nil + return j.exportAidlIncludeDirs } func (j *Import) ExportedSdkLibs() []string { diff --git a/java/java_test.go b/java/java_test.go index 6d972bebd..e8a1a7c83 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -1491,3 +1491,27 @@ func checkBootClasspathForSystemModule(t *testing.T, ctx *android.TestContext, m t.Errorf("bootclasspath of %q must start with --system and end with %q, but was %#v.", moduleName, expectedSuffix, bootClasspath) } } + +func TestAidlExportIncludeDirsFromImports(t *testing.T) { + ctx, _ := testJava(t, ` + java_library { + name: "foo", + srcs: ["aidl/foo/IFoo.aidl"], + libs: ["bar"], + } + + java_import { + name: "bar", + jars: ["a.jar"], + aidl: { + export_include_dirs: ["aidl/bar"], + }, + } + `) + + aidlCommand := ctx.ModuleForTests("foo", "android_common").Rule("aidl").RuleParams.Command + expectedAidlFlag := "-Iaidl/bar" + if !strings.Contains(aidlCommand, expectedAidlFlag) { + t.Errorf("aidl command %q does not contain %q", aidlCommand, expectedAidlFlag) + } +} diff --git a/java/testing.go b/java/testing.go index 5b6a39b2a..20fe19425 100644 --- a/java/testing.go +++ b/java/testing.go @@ -50,6 +50,8 @@ func TestConfig(buildDir string, env map[string]string, bp string, fs map[string "api/test-current.txt": nil, "api/test-removed.txt": nil, "framework/aidl/a.aidl": nil, + "aidl/foo/IFoo.aidl": nil, + "aidl/bar/IBar.aidl": nil, "assets_a/a": nil, "assets_b/b": nil,