Merge changes I6f80b7b3,Ida8f046c

* changes:
  Don't dexpreopt when compile_dex but not installable
  Don't dexpreopt or strip java_test modules
diff --git a/java/dexpreopt.go b/java/dexpreopt.go
index de9c5f3..1dc3e9f 100644
--- a/java/dexpreopt.go
+++ b/java/dexpreopt.go
@@ -28,10 +28,11 @@
 type dexpreopter struct {
 	dexpreoptProperties DexpreoptProperties
 
-	installPath  android.OutputPath
-	isPrivApp    bool
-	isSDKLibrary bool
-	isTest       bool
+	installPath   android.OutputPath
+	isPrivApp     bool
+	isSDKLibrary  bool
+	isTest        bool
+	isInstallable bool
 
 	builtInstalled []string
 }
@@ -74,6 +75,10 @@
 		return true
 	}
 
+	if !d.isInstallable {
+		return true
+	}
+
 	// TODO: contains no java code
 
 	return false
diff --git a/java/dexpreopt_test.go b/java/dexpreopt_test.go
index 5b55799..6838bd2 100644
--- a/java/dexpreopt_test.go
+++ b/java/dexpreopt_test.go
@@ -83,6 +83,15 @@
 			enabled: false,
 		},
 		{
+			name: "java test",
+			bp: `
+				java_test {
+					name: "foo",
+					srcs: ["a.java"],
+				}`,
+			enabled: false,
+		},
+		{
 			name: "android test",
 			bp: `
 				android_test {
@@ -100,6 +109,16 @@
 				}`,
 			enabled: false,
 		},
+		{
+			name: "compile_dex",
+			bp: `
+				java_library {
+					name: "foo",
+					srcs: ["a.java"],
+					compile_dex: true,
+				}`,
+			enabled: false,
+		},
 	}
 
 	for _, test := range tests {
diff --git a/java/java.go b/java/java.go
index c02ccd3..5e67193 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1326,6 +1326,7 @@
 
 		j.dexJarFile = dexOutputFile
 
+		j.dexpreopter.isInstallable = Bool(j.properties.Installable)
 		dexOutputFile = j.dexpreopt(ctx, dexOutputFile)
 
 		j.maybeStrippedDexJarFile = dexOutputFile
@@ -1601,6 +1602,7 @@
 		&module.testProperties)
 
 	module.Module.properties.Installable = proptools.BoolPtr(true)
+	module.Module.dexpreopter.isTest = true
 
 	InitJavaModule(module, android.HostAndDeviceSupported)
 	return module