Commit 4756a23a authored by Andrew Grieve's avatar Andrew Grieve Committed by Commit Bot

generate_jni_registrations: Use @JniIgnoreNatives rather a GN blacklist

Change motivated by JNI refactorings, which are made simpler by not
having to specify this blacklist in GN.

TBR=agrieve  # Trivial build refactor

Bug: 898261
Change-Id: Ic81e99a460f54e5c02fedfd9f8467390045ee21c
Reviewed-on: https://chromium-review.googlesource.com/c/1317341
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: default avatarTibor Goldschwendt <tiborg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605778}
parent dc44b72a
...@@ -2967,6 +2967,7 @@ if (is_android) { ...@@ -2967,6 +2967,7 @@ if (is_android) {
"android/java/src/org/chromium/base/annotations/DoNotInline.java", "android/java/src/org/chromium/base/annotations/DoNotInline.java",
"android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java", "android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
"android/java/src/org/chromium/base/annotations/JNINamespace.java", "android/java/src/org/chromium/base/annotations/JNINamespace.java",
"android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
"android/java/src/org/chromium/base/annotations/MainDex.java", "android/java/src/org/chromium/base/annotations/MainDex.java",
"android/java/src/org/chromium/base/annotations/NativeCall.java", "android/java/src/org/chromium/base/annotations/NativeCall.java",
"android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java", "android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.base.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Causes generate_jni_registration() to skip native methods in a file.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface JniIgnoreNatives {}
...@@ -17,6 +17,7 @@ import org.chromium.base.SysUtils; ...@@ -17,6 +17,7 @@ import org.chromium.base.SysUtils;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.AccessedByNative; import org.chromium.base.annotations.AccessedByNative;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JniIgnoreNatives;
import org.chromium.base.annotations.MainDex; import org.chromium.base.annotations.MainDex;
import java.util.HashMap; import java.util.HashMap;
...@@ -150,6 +151,7 @@ import javax.annotation.Nullable; ...@@ -150,6 +151,7 @@ import javax.annotation.Nullable;
* *
* This method also ensures the process uses the shared RELROs. * This method also ensures the process uses the shared RELROs.
*/ */
@JniIgnoreNatives
public class Linker { public class Linker {
// Log tag for this class. // Log tag for this class.
private static final String TAG = "LibraryLoader"; private static final String TAG = "LibraryLoader";
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//base/android/jni_generator/jni_exception_list.gni")
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
import("//testing/test.gni") import("//testing/test.gni")
...@@ -72,7 +71,6 @@ android_apk("sample_jni_apk") { ...@@ -72,7 +71,6 @@ android_apk("sample_jni_apk") {
generate_jni_registration("sample_jni_registration") { generate_jni_registration("sample_jni_registration") {
target = ":sample_jni_apk" target = ":sample_jni_apk"
output = "$target_gen_dir/${target_name}.h" output = "$target_gen_dir/${target_name}.h"
exception_files = jni_exception_files
} }
# Serves to test that generated bindings compile properly. # Serves to test that generated bindings compile properly.
......
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//device/vr/buildflags/buildflags.gni")
jni_exception_files =
[ "//base/android/java/src/org/chromium/base/library_loader/Linker.java" ]
# Exclude it from JNI registration if VR is not enabled.
if (!enable_vr) {
jni_exception_files += [ "//chrome/android/java/src/org/chromium/chrome/browser/vr/VrModuleProvider.java" ]
}
...@@ -71,6 +71,9 @@ def GenerateJNIHeader(java_file_paths, output_file, args): ...@@ -71,6 +71,9 @@ def GenerateJNIHeader(java_file_paths, output_file, args):
def _DictForPath(path): def _DictForPath(path):
with open(path) as f: with open(path) as f:
contents = jni_generator.RemoveComments(f.read()) contents = jni_generator.RemoveComments(f.read())
if '@JniIgnoreNatives' in contents:
return None
fully_qualified_class = jni_generator.ExtractFullyQualifiedJavaClassName( fully_qualified_class = jni_generator.ExtractFullyQualifiedJavaClassName(
path, contents) path, contents)
natives = jni_generator.ExtractNatives(contents, 'long') natives = jni_generator.ExtractNatives(contents, 'long')
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//base/android/jni_generator/jni_exception_list.gni")
import("//build/config/android/chrome_version.gni") import("//build/config/android/chrome_version.gni")
import("//build/config/android/config.gni") import("//build/config/android/config.gni")
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
...@@ -63,6 +62,16 @@ if (enable_resource_whitelist_generation) { ...@@ -63,6 +62,16 @@ if (enable_resource_whitelist_generation) {
"$target_gen_dir/monochrome_locale_whitelist.txt" "$target_gen_dir/monochrome_locale_whitelist.txt"
} }
# Exclude it from JNI registration if VR is not enabled.
jni_exception_files = []
if (!enable_vr) {
jni_exception_files += [ "//chrome/android/java/src/org/chromium/chrome/browser/vr/VrModuleProvider.java" ]
}
chrome_jni_registration_header =
"$root_build_dir/gen/chrome/browser/android/chrome_jni_registration.h"
chrome_jni_for_test_registration_header = "$root_build_dir/gen/chrome/browser/android/chrome_jni_for_test_registration.h"
chrome_sync_shell_jni_registration_header = "$root_build_dir/gen/chrome/browser/android/chrome_sync_shell_jni_registration.h"
jinja_template("chrome_public_android_manifest") { jinja_template("chrome_public_android_manifest") {
input = "java/AndroidManifest.xml" input = "java/AndroidManifest.xml"
output = chrome_public_android_manifest output = chrome_public_android_manifest
...@@ -1045,6 +1054,7 @@ template("chrome_shared_library") { ...@@ -1045,6 +1054,7 @@ template("chrome_shared_library") {
chrome_shared_library("libchrome") { chrome_shared_library("libchrome") {
sources = [ sources = [
"../browser/android/chrome_entry_point.cc", "../browser/android/chrome_entry_point.cc",
chrome_jni_registration_header,
] ]
deps = [ deps = [
":chrome_jni_registration($default_toolchain)", ":chrome_jni_registration($default_toolchain)",
...@@ -1060,6 +1070,7 @@ chrome_shared_library("libchromefortest") { ...@@ -1060,6 +1070,7 @@ chrome_shared_library("libchromefortest") {
testonly = true testonly = true
sources = [ sources = [
"../browser/android/chrome_entry_point_for_test.cc", "../browser/android/chrome_entry_point_for_test.cc",
chrome_jni_for_test_registration_header,
] ]
deps = [ deps = [
":browser_test_support", ":browser_test_support",
...@@ -1084,21 +1095,21 @@ chrome_shared_library("libchromefortest") { ...@@ -1084,21 +1095,21 @@ chrome_shared_library("libchromefortest") {
if (current_toolchain == default_toolchain) { if (current_toolchain == default_toolchain) {
generate_jni_registration("chrome_jni_registration") { generate_jni_registration("chrome_jni_registration") {
target = ":chrome_public_base_module_java" target = ":chrome_public_base_module_java"
output = "$root_gen_dir/chrome/browser/android/${target_name}.h" output = chrome_jni_registration_header
exception_files = jni_exception_files exception_files = jni_exception_files
} }
generate_jni_registration("chrome_jni_for_test_registration") { generate_jni_registration("chrome_jni_for_test_registration") {
testonly = true testonly = true
target = ":chrome_public_base_module_java_for_test" target = ":chrome_public_base_module_java_for_test"
output = "$root_gen_dir/chrome/browser/android/${target_name}.h" output = chrome_jni_for_test_registration_header
exception_files = jni_exception_files exception_files = jni_exception_files
} }
generate_jni_registration("chrome_sync_shell_jni_registration") { generate_jni_registration("chrome_sync_shell_jni_registration") {
testonly = true testonly = true
target = ":chrome_sync_shell_java" target = ":chrome_sync_shell_java"
output = "$root_gen_dir/chrome/browser/android/${target_name}.h" output = chrome_sync_shell_jni_registration_header
exception_files = jni_exception_files exception_files = jni_exception_files
} }
...@@ -1277,6 +1288,7 @@ shared_library("chrome_sync_shell") { ...@@ -1277,6 +1288,7 @@ shared_library("chrome_sync_shell") {
testonly = true testonly = true
sources = [ sources = [
"../browser/android/chrome_sync_shell_entry_point.cc", "../browser/android/chrome_sync_shell_entry_point.cc",
chrome_sync_shell_jni_registration_header,
] ]
deps = [ deps = [
":chrome_sync_shell_jni_registration($default_toolchain)", ":chrome_sync_shell_jni_registration($default_toolchain)",
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//base/android/jni_generator/jni_exception_list.gni")
import("//build/buildflag_header.gni") import("//build/buildflag_header.gni")
import("//build/config/android/config.gni") import("//build/config/android/config.gni")
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
...@@ -41,9 +40,8 @@ generate_jni("cronet_jni_headers") { ...@@ -41,9 +40,8 @@ generate_jni("cronet_jni_headers") {
generate_jni_registration("cronet_jni_registration") { generate_jni_registration("cronet_jni_registration") {
target = ":cronet_jni_apk" target = ":cronet_jni_apk"
output = "$root_gen_dir/components/cronet/android/${target_name}.h" output = "$root_gen_dir/components/cronet/android/${target_name}.h"
exception_files = jni_exception_files
exception_files += [ exception_files = [
"//base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java", "//base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java",
"//base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java", "//base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java",
"//base/android/java/src/org/chromium/base/SysUtils.java", "//base/android/java/src/org/chromium/base/SysUtils.java",
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# Use of this source code is governed by a BSD-style license that can be # Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. # found in the LICENSE file.
import("//base/android/jni_generator/jni_exception_list.gni")
import("//build/config/android/config.gni") import("//build/config/android/config.gni")
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
import("//third_party/icu/config.gni") import("//third_party/icu/config.gni")
...@@ -326,7 +325,6 @@ if (current_cpu != "x64") { ...@@ -326,7 +325,6 @@ if (current_cpu != "x64") {
target = ":chromium_linker_test_apk__apk" target = ":chromium_linker_test_apk__apk"
output = output =
"$root_gen_dir/content/shell/android/linker_test_apk/${target_name}.h" "$root_gen_dir/content/shell/android/linker_test_apk/${target_name}.h"
exception_files = jni_exception_files
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment