gn2bp: fix jni output directories to match #include directives

This way, the genrule headers are properly included by its users.

Test: //base:base
Change-Id: I70b57072fa0f8f153e324b003064dbf098a940d6
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index d541ae6..8b0f5df 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -268,7 +268,7 @@
          "--prev_output_dir " +
          "gen/base/android_runtime_jni_headers " +
          "--output_dir " +
-         "$(genDir)/jni_headers/base/android_runtime_jni_headers " +
+         "$(genDir)/base/android_runtime_jni_headers " +
          "--includes " +
          "../../../../../../base/android/jni_generator/jni_generator_helper.h " +
          "--jar_file " +
@@ -282,8 +282,8 @@
          "--input_file " +
          "java/lang/Runtime.class",
     out: [
-        "jni_headers/base/android_runtime_jni_headers/Runnable_jni.h",
-        "jni_headers/base/android_runtime_jni_headers/Runtime_jni.h",
+        "base/android_runtime_jni_headers/Runnable_jni.h",
+        "base/android_runtime_jni_headers/Runtime_jni.h",
     ],
     tool_files: [
         "base/android/jni_generator/jni_generator.py",
@@ -1020,7 +1020,7 @@
          "--prev_output_dir " +
          "gen/base/base_jni_headers " +
          "--output_dir " +
-         "$(genDir)/jni_headers/base/base_jni_headers " +
+         "$(genDir)/base/base_jni_headers " +
          "--includes " +
          "../../../../../../base/android/jni_generator/jni_generator_helper.h " +
          "--use_proxy_hash " +
@@ -1185,46 +1185,46 @@
          "--input_file " +
          "$(location base/android/java/src/org/chromium/base/task/TaskRunnerImpl.java)",
     out: [
-        "jni_headers/base/base_jni_headers/ApkAssets_jni.h",
-        "jni_headers/base/base_jni_headers/ApplicationStatus_jni.h",
-        "jni_headers/base/base_jni_headers/BaseFeatureList_jni.h",
-        "jni_headers/base/base_jni_headers/BuildInfo_jni.h",
-        "jni_headers/base/base_jni_headers/BundleUtils_jni.h",
-        "jni_headers/base/base_jni_headers/Callback_jni.h",
-        "jni_headers/base/base_jni_headers/ChildProcessService_jni.h",
-        "jni_headers/base/base_jni_headers/CommandLine_jni.h",
-        "jni_headers/base/base_jni_headers/ContentUriUtils_jni.h",
-        "jni_headers/base/base_jni_headers/CpuFeatures_jni.h",
-        "jni_headers/base/base_jni_headers/EarlyTraceEvent_jni.h",
-        "jni_headers/base/base_jni_headers/EventLog_jni.h",
-        "jni_headers/base/base_jni_headers/FeatureList_jni.h",
-        "jni_headers/base/base_jni_headers/Features_jni.h",
-        "jni_headers/base/base_jni_headers/FieldTrialList_jni.h",
-        "jni_headers/base/base_jni_headers/FileUtils_jni.h",
-        "jni_headers/base/base_jni_headers/ImportantFileWriterAndroid_jni.h",
-        "jni_headers/base/base_jni_headers/IntStringCallback_jni.h",
-        "jni_headers/base/base_jni_headers/JNIUtils_jni.h",
-        "jni_headers/base/base_jni_headers/JankMetricUMARecorder_jni.h",
-        "jni_headers/base/base_jni_headers/JavaExceptionReporter_jni.h",
-        "jni_headers/base/base_jni_headers/JavaHandlerThread_jni.h",
-        "jni_headers/base/base_jni_headers/JavaHeapDumpGenerator_jni.h",
-        "jni_headers/base/base_jni_headers/LibraryLoader_jni.h",
-        "jni_headers/base/base_jni_headers/LibraryPrefetcher_jni.h",
-        "jni_headers/base/base_jni_headers/LocaleUtils_jni.h",
-        "jni_headers/base/base_jni_headers/MemoryPressureListener_jni.h",
-        "jni_headers/base/base_jni_headers/NativeUmaRecorder_jni.h",
-        "jni_headers/base/base_jni_headers/PathService_jni.h",
-        "jni_headers/base/base_jni_headers/PathUtils_jni.h",
-        "jni_headers/base/base_jni_headers/PostTask_jni.h",
-        "jni_headers/base/base_jni_headers/PowerMonitor_jni.h",
-        "jni_headers/base/base_jni_headers/RadioUtils_jni.h",
-        "jni_headers/base/base_jni_headers/StatisticsRecorderAndroid_jni.h",
-        "jni_headers/base/base_jni_headers/SysUtils_jni.h",
-        "jni_headers/base/base_jni_headers/TaskRunnerImpl_jni.h",
-        "jni_headers/base/base_jni_headers/ThreadUtils_jni.h",
-        "jni_headers/base/base_jni_headers/TimezoneUtils_jni.h",
-        "jni_headers/base/base_jni_headers/TraceEvent_jni.h",
-        "jni_headers/base/base_jni_headers/UnguessableToken_jni.h",
+        "base/base_jni_headers/ApkAssets_jni.h",
+        "base/base_jni_headers/ApplicationStatus_jni.h",
+        "base/base_jni_headers/BaseFeatureList_jni.h",
+        "base/base_jni_headers/BuildInfo_jni.h",
+        "base/base_jni_headers/BundleUtils_jni.h",
+        "base/base_jni_headers/Callback_jni.h",
+        "base/base_jni_headers/ChildProcessService_jni.h",
+        "base/base_jni_headers/CommandLine_jni.h",
+        "base/base_jni_headers/ContentUriUtils_jni.h",
+        "base/base_jni_headers/CpuFeatures_jni.h",
+        "base/base_jni_headers/EarlyTraceEvent_jni.h",
+        "base/base_jni_headers/EventLog_jni.h",
+        "base/base_jni_headers/FeatureList_jni.h",
+        "base/base_jni_headers/Features_jni.h",
+        "base/base_jni_headers/FieldTrialList_jni.h",
+        "base/base_jni_headers/FileUtils_jni.h",
+        "base/base_jni_headers/ImportantFileWriterAndroid_jni.h",
+        "base/base_jni_headers/IntStringCallback_jni.h",
+        "base/base_jni_headers/JNIUtils_jni.h",
+        "base/base_jni_headers/JankMetricUMARecorder_jni.h",
+        "base/base_jni_headers/JavaExceptionReporter_jni.h",
+        "base/base_jni_headers/JavaHandlerThread_jni.h",
+        "base/base_jni_headers/JavaHeapDumpGenerator_jni.h",
+        "base/base_jni_headers/LibraryLoader_jni.h",
+        "base/base_jni_headers/LibraryPrefetcher_jni.h",
+        "base/base_jni_headers/LocaleUtils_jni.h",
+        "base/base_jni_headers/MemoryPressureListener_jni.h",
+        "base/base_jni_headers/NativeUmaRecorder_jni.h",
+        "base/base_jni_headers/PathService_jni.h",
+        "base/base_jni_headers/PathUtils_jni.h",
+        "base/base_jni_headers/PostTask_jni.h",
+        "base/base_jni_headers/PowerMonitor_jni.h",
+        "base/base_jni_headers/RadioUtils_jni.h",
+        "base/base_jni_headers/StatisticsRecorderAndroid_jni.h",
+        "base/base_jni_headers/SysUtils_jni.h",
+        "base/base_jni_headers/TaskRunnerImpl_jni.h",
+        "base/base_jni_headers/ThreadUtils_jni.h",
+        "base/base_jni_headers/TimezoneUtils_jni.h",
+        "base/base_jni_headers/TraceEvent_jni.h",
+        "base/base_jni_headers/UnguessableToken_jni.h",
     ],
     tool_files: [
         "base/android/jni_generator/jni_generator.py",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 7ded1e8..aab5501 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -690,8 +690,8 @@
     module.genrule_header_libs.add('jni_headers')
     for i, val in enumerate(target.args):
       if val == '--output_dir':
-        # replace --output_dir gen/... with --output_dir $(genDir)/...
-        target.args[i + 1] = re.sub('^gen', '$(genDir)', target.args[i + 1])
+        # replace --output_dir gen/jni_headers/... with --output_dir $(genDir)/...
+        target.args[i + 1] = re.sub('^gen/jni_headers', '$(genDir)', target.args[i + 1])
       if val == '--input_file':
         # --input_file supports both .class specifiers or source files as arguments.
         # Only source files need to be wrapped inside a $(location <label>) tag.
@@ -701,6 +701,8 @@
         # TODO: put inside function
         filename = re.sub('^\.\./\.\./', '', target.args[i + 1])
         target.args[i + 1] = '$(location %s)' % filename
+    # fix target.output directory to match #include statements.
+    target.outputs = [re.sub('^jni_headers/', '', out) for out in target.outputs]
 
   script = gn_utils.label_to_path(target.script)
   module.tool_files.add(script)