Add android_test#data to android deploy info.

--
MOS_MIGRATED_REVID=130016248
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index f93299c..b42d29b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -457,12 +457,19 @@
     filesBuilder.add(zipAlignedApk);
     NestedSet<Artifact> filesToBuild = filesBuilder.build();
 
+    Iterable<Artifact> dataDeps = ImmutableList.of();
+    if (ruleContext.getAttribute("data") != null
+        && ruleContext.getAttributeMode("data") == Mode.DATA) {
+      dataDeps = ruleContext.getPrerequisiteArtifacts("data", Mode.DATA).list();
+    }
+
     Artifact deployInfo = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.DEPLOY_INFO);
     AndroidDeployInfoAction.createDeployInfoAction(ruleContext,
         deployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest));
+        Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest),
+        dataDeps);
 
     NestedSet<Artifact> coverageMetadata = (androidCommon.getInstrumentedJar() != null)
         ? NestedSetBuilder.create(Order.STABLE_ORDER, androidCommon.getInstrumentedJar())
@@ -536,7 +543,8 @@
         incrementalDeployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        ImmutableList.<Artifact>of());
+        ImmutableList.<Artifact>of(),
+        dataDeps);
 
     NestedSet<Artifact> fullInstallOutputGroup = NestedSetBuilder.<Artifact>stableOrder()
         .add(fullDeployMarker)
@@ -634,7 +642,8 @@
         splitDeployInfo,
         applicationManifest.getManifest(),
         additionalMergedManifests,
-        ImmutableList.<Artifact>of());
+        ImmutableList.<Artifact>of(),
+        dataDeps);
 
     NestedSet<Artifact> splitInstallOutputGroup = NestedSetBuilder.<Artifact>stableOrder()
         .addTransitive(allSplitApks)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
index cae2cec..1f38303 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java
@@ -44,12 +44,14 @@
   private static Iterable<Artifact> makeInputs(
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
 
     return ImmutableList.<Artifact>builder()
         .add(mergedManifest)
         .addAll(additionalMergedManifests)
         .addAll(apksToDeploy)
+        .addAll(dataDeps)
         .build();
   }
 
@@ -61,8 +63,9 @@
       Artifact outputFile,
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
-    super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy),
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
+    super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps),
         outputFile, false);
     AndroidDeployInfoOuterClass.AndroidDeployInfo.Builder builder =
         AndroidDeployInfoOuterClass.AndroidDeployInfo.newBuilder();
@@ -73,6 +76,9 @@
     for (Artifact apk : apksToDeploy) {
       builder.addApksToDeploy(makeArtifactProto(apk));
     }
+    for (Artifact dataDep : dataDeps) {
+      builder.addDataToDeploy(makeArtifactProto(dataDep));
+    }
     this.byteString = builder.build().toByteString();
   }
 
@@ -81,9 +87,10 @@
       Artifact deployInfo,
       Artifact mergedManifest,
       Iterable<Artifact> additionalMergedManifests,
-      Iterable<Artifact> apksToDeploy) {
+      Iterable<Artifact> apksToDeploy,
+      Iterable<Artifact> dataDeps) {
     Action action = new AndroidDeployInfoAction(ruleContext.getActionOwner(),
-        deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy);
+        deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps);
     ruleContext.registerAction(action);
   }
 
diff --git a/src/main/protobuf/android_deploy_info.proto b/src/main/protobuf/android_deploy_info.proto
index c93c9dc..30c7328 100644
--- a/src/main/protobuf/android_deploy_info.proto
+++ b/src/main/protobuf/android_deploy_info.proto
@@ -33,4 +33,7 @@
   // If the build supports an external deploy, this will have the APKs.
   // mobile-install does its own deployment, so this list will be empty
   repeated Artifact apks_to_deploy = 3;
+
+  // Any data files to deploy
+  repeated Artifact data_to_deploy = 4;
 }