gn2bp: Generate `JniProcessor` manually

Test: update_results && m cronet_aml_components_cronet_android_cronet
Change-Id: Iefa8dd1224921cf91c075bf3347c2f5469d20eab
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 35c48b5..8378cb5 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -9860,6 +9860,19 @@
             "base/android/java/src/",
         ],
     },
+    plugins: [
+        "cronet_aml_java_jni_annotation_preprocessor",
+    ],
+}
+
+// GN: //base/android/jni_generator:jni_processor
+java_plugin {
+    name: "cronet_aml_java_jni_annotation_preprocessor",
+    srcs: [
+        "base/android/jni_generator/java/src/org/chromium/jni_generator/JniProcessor.java",
+        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
+        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
+    ],
 }
 
 // GN: //net/android:net_android_java_enums_srcjar
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 3f1fb83..9303c91 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -318,6 +318,7 @@
     self.stem = None
     self.compile_multilib = None
     self.aidl = dict()
+    self.plugins = set()
 
   def to_string(self, output):
     if self.comment:
@@ -368,6 +369,7 @@
     self._output_field(output, 'stem')
     self._output_field(output, 'compile_multilib')
     self._output_field(output, 'aidl')
+    self._output_field(output, 'plugins')
     if self.rtti:
       self._output_field(output, 'rtti')
 
@@ -1302,6 +1304,20 @@
                     (dep_module.name, target.name, dep_module.type))
   return module
 
+def create_java_jni_preprocessor(blueprint):
+  bp_module_name = module_prefix + 'java_jni_annotation_preprocessor'
+  module = Module('java_plugin', bp_module_name, '//base/android/jni_generator:jni_processor')
+  module.srcs.update(
+  [
+    "base/android/jni_generator/java/src/org/chromium/jni_generator/JniProcessor.java",
+    # Avoids a circular dependency with base:base_java. This is okay because
+    # no target should ever expect to package an annotation processor.
+    "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
+    "build/android/java/src/org/chromium/build/annotations/MainDex.java",
+  ])
+  blueprint.add_module(module)
+  return module
+
 def create_java_module(blueprint, gn):
   bp_module_name = module_prefix + 'java'
   module = Module('java_library', bp_module_name, '//gn:java')
@@ -1318,6 +1334,8 @@
       module.srcs.add(':' + create_gcc_preprocess_modules(blueprint, target).name)
     else:
       module.srcs.add(':' + create_action_module(blueprint, target, 'java_genrule').name)
+  preprocessor_module = create_java_jni_preprocessor(blueprint)
+  module.plugins.add(preprocessor_module.name)
   blueprint.add_module(module)
 
 def update_jni_registration_module(module, gn):