Use android javacopts for java_proto_library-related compilations.

--
MOS_MIGRATED_REVID=138104417
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 901b0d9..c5bc348 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -778,6 +778,7 @@
         "rules/java/proto/JavaProtoLibrary.java",
         "rules/java/proto/JavaProtoLibraryTransitiveFilesToBuildProvider.java",
         "rules/java/proto/JavaSourceJarsAspectProvider.java",
+        "rules/java/proto/ProtoJavacOpts.java",
         "rules/java/proto/StrictDepsUtils.java",
     ],
     deps = [
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
index b1b72dc..38b6894 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSemantics.java
@@ -95,6 +95,8 @@
 
   /** The java_toolchain.compatible_javacopts key for Java 7 javacopts */
   public static final String JAVA7_JAVACOPTS_KEY = "java7";
+  /** The java_toolchain.compatible_javacopts key for Android javacopts */
+  public static final String ANDROID_JAVACOPTS_KEY = "android";
 
   LateBoundLabel<BuildConfiguration> JAVA_TOOLCHAIN =
       new LateBoundLabel<BuildConfiguration>(JAVA_TOOLCHAIN_LABEL, JavaConfiguration.class) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
index 9908324..4e0c5c8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoAspect.java
@@ -52,7 +52,6 @@
 import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
 import com.google.devtools.build.lib.rules.java.JavaSemantics;
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
-import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
 import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
 import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
 import com.google.devtools.build.lib.rules.proto.ProtoLangToolchainProvider;
@@ -214,7 +213,7 @@
           new JavaLibraryHelper(ruleContext)
               .setOutput(outputJar)
               .addSourceJars(sourceJar)
-              .setJavacOpts(getAndroidCompatibleJavacOpts());
+              .setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
       helper.addDep(dependencyCompilationArgs);
       TransitiveInfoCollection runtime = getProtoToolchainProvider().runtime();
       if (runtime != null) {
@@ -239,22 +238,6 @@
       return ruleContext.getBinArtifact("lib" + ruleContext.getLabel().getName() + "-lite.jar");
     }
 
-    /**
-     * Returns javacopts for compiling the Java source files generated by the proto compiler.
-     * Ensures that they are compiled so that they can be used by Android targets.
-     *
-     * <p>See java_toolchain.compatible_javacopts for the javacopts required for android.
-     */
-    private ImmutableList<String> getAndroidCompatibleJavacOpts() {
-      JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
-      ImmutableList.Builder<String> listBuilder = ImmutableList.builder();
-      listBuilder.addAll(toolchain.getJavacOptions());
-      // TODO(b/30890416): Get this from AndroidSemantics.getJavacArguments()
-      listBuilder.addAll(
-          toolchain.getCompatibleJavacOptions("android"));
-      return listBuilder.build();
-    }
-
     private <C extends TransitiveInfoProvider> Iterable<C> getDeps(Class<C> clazz) {
       return ruleContext.getPrerequisites("deps", TARGET, clazz);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
index daa56da..ba6184e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoAspect.java
@@ -53,7 +53,6 @@
 import com.google.devtools.build.lib.rules.java.JavaLibraryHelper;
 import com.google.devtools.build.lib.rules.java.JavaSemantics;
 import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
-import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
 import com.google.devtools.build.lib.rules.proto.ProtoCompileActionBuilder;
 import com.google.devtools.build.lib.rules.proto.ProtoConfiguration;
 import com.google.devtools.build.lib.rules.proto.ProtoSourceFileBlacklist;
@@ -277,7 +276,7 @@
           new JavaLibraryHelper(ruleContext)
               .setOutput(outputJar)
               .addSourceJars(sourceJar)
-              .setJavacOpts(constructJavacOpts());
+              .setJavacOpts(ProtoJavacOpts.constructJavacOpts(ruleContext));
       helper
           .addDep(dependencyCompilationArgs)
           .addDep(
@@ -297,18 +296,6 @@
       return ruleContext.getBinArtifact("lib" + ruleContext.getLabel().getName() + "-speed.jar");
     }
 
-    /**
-     * Returns javacopts for compiling the Java source files generated by the proto compiler.
-     * Ensures that they are compiled so that they can be used by App Engine targets.
-     */
-    private ImmutableList<String> constructJavacOpts() {
-      JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
-      return ImmutableList.<String>builder()
-          .addAll(toolchain.getJavacOptions())
-          .addAll(toolchain.getCompatibleJavacOptions(JavaSemantics.JAVA7_JAVACOPTS_KEY))
-          .build();
-    }
-
     private <C extends TransitiveInfoProvider> Iterable<C> getDeps(Class<C> clazz) {
       return ruleContext.getPrerequisites("deps", TARGET, clazz);
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java
new file mode 100644
index 0000000..86a1a69
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/ProtoJavacOpts.java
@@ -0,0 +1,43 @@
+// Copyright 2016 The Bazel Authors. All rights reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//    http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.devtools.build.lib.rules.java.proto;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.rules.java.JavaSemantics;
+import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
+
+/**
+ * Helper class to centralize Javac flags handling.
+ */
+public class ProtoJavacOpts {
+
+  /**
+   * Returns javacopts for compiling the Java source files generated by the proto compiler.
+   * Ensures that they are compiled so that they can be used by Android targets.
+   *
+   * <p>See java_toolchain.compatible_javacopts for the javacopts required for android.
+   */
+  public static ImmutableList<String> constructJavacOpts(RuleContext ruleContext) {
+    JavaToolchainProvider toolchain = JavaToolchainProvider.fromRuleContext(ruleContext);
+    return ImmutableList.<String>builder()
+        .addAll(toolchain.getJavacOptions())
+        .addAll(toolchain.getCompatibleJavacOptions(JavaSemantics.ANDROID_JAVACOPTS_KEY))
+        .build();
+  }
+
+  // Static access only
+  private ProtoJavacOpts() {}
+}