Support data properties in java_test and android_test

Files in the data property will be passed to
LOCAL_COMPATIBILITY_SUPPORT_FILES in Make.

Test: m checkbuild
Change-Id: Ifc074317f957aba8f55daa30abc5b9737d1eceac
diff --git a/java/androidmk.go b/java/androidmk.go
index 4eae81e..384d7e8 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -114,6 +114,8 @@
 		}
 	})
 
+	androidMkWriteTestData(j.data, &data)
+
 	return data
 }
 
@@ -255,6 +257,7 @@
 			fmt.Fprintln(w, "LOCAL_FULL_TEST_CONFIG :=", a.testConfig.String())
 		}
 	})
+	androidMkWriteTestData(a.data, &data)
 
 	return data
 }
@@ -375,3 +378,15 @@
 		},
 	}
 }
+
+func androidMkWriteTestData(data android.Paths, ret *android.AndroidMkData) {
+	var testFiles []string
+	for _, d := range data {
+		testFiles = append(testFiles, d.String()+":"+d.Rel())
+	}
+	if len(testFiles) > 0 {
+		ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) {
+			fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUPPORT_FILES := "+strings.Join(testFiles, " "))
+		})
+	}
+}
diff --git a/java/app.go b/java/app.go
index 0ca7a2b..78d526d 100644
--- a/java/app.go
+++ b/java/app.go
@@ -224,6 +224,7 @@
 	testProperties testProperties
 
 	testConfig android.Path
+	data       android.Paths
 }
 
 func (a *AndroidTest) GenerateAndroidBuildActions(ctx android.ModuleContext) {
@@ -236,10 +237,12 @@
 	a.generateAndroidBuildActions(ctx)
 
 	a.testConfig = tradefed.AutoGenInstrumentationTestConfig(ctx, a.testProperties.Test_config, a.manifestPath)
+	a.data = ctx.ExpandSources(a.testProperties.Data, nil)
 }
 
 func (a *AndroidTest) DepsMutator(ctx android.BottomUpMutatorContext) {
 	android.ExtractSourceDeps(ctx, a.testProperties.Test_config)
+	android.ExtractSourcesDeps(ctx, a.testProperties.Data)
 	a.AndroidApp.DepsMutator(ctx)
 }
 
diff --git a/java/java.go b/java/java.go
index 8fe4f35..a015a99 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1357,6 +1357,10 @@
 	// the name of the test configuration (for example "AndroidTest.xml") that should be
 	// installed with the module.
 	Test_config *string `android:"arch_variant"`
+
+	// list of files or filegroup modules that provide data that should be installed alongside
+	// the test
+	Data []string
 }
 
 type Test struct {
@@ -1365,10 +1369,12 @@
 	testProperties testProperties
 
 	testConfig android.Path
+	data       android.Paths
 }
 
 func (j *Test) GenerateAndroidBuildActions(ctx android.ModuleContext) {
 	j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.testProperties.Test_config)
+	j.data = ctx.ExpandSources(j.testProperties.Data, nil)
 
 	j.Library.GenerateAndroidBuildActions(ctx)
 }
@@ -1379,6 +1385,7 @@
 		ctx.AddDependency(ctx.Module(), staticLibTag, "junit")
 	}
 	android.ExtractSourceDeps(ctx, j.testProperties.Test_config)
+	android.ExtractSourcesDeps(ctx, j.testProperties.Data)
 }
 
 func TestFactory() android.Module {