Skip to content

Commit

Permalink
JNI: Remove jclass from JNI static methods
Browse files Browse the repository at this point in the history
MASS REFACTOR - please consider fixing rather than reverting.

The jclass parameter is never used in static JNI functions because we generate
bindings ourselves for functions that are called by native.

This CL removes the jclass parameter from all JNI methods by refactoring all current
JNI method declarations that contain a jclass and stops the JNI generator
from generating stubs that pass jclass to our implementation.

This change is also being done to support the conversion of all non-static native
methods to static native methods and then all static natives to the new JNI interface.
When this is done proguard will be able to obfuscate classes that contain native methods.
And native methods that don't rely on native

TBR=agrieve # wide-reaching mechanical refactor

Bug: 898660
Change-Id: Ie2932564d58933a2f4bcd23fe47723e147cf87d8
Reviewed-on: https://chromium-review.googlesource.com/c/1352518
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612772}
  • Loading branch information
Aiden Benner authored and Commit Bot committed Nov 30, 2018
1 parent e07270b commit c99e905
Show file tree
Hide file tree
Showing 218 changed files with 291 additions and 995 deletions.
8 changes: 2 additions & 6 deletions android_webview/browser/android_protocol_handler.cc
Original file line number Diff line number Diff line change
Expand Up @@ -233,16 +233,12 @@ CreateAssetFileRequestInterceptor() {
}

static ScopedJavaLocalRef<jstring>
JNI_AndroidProtocolHandler_GetAndroidAssetPath(
JNIEnv* env,
const JavaParamRef<jclass>& /*clazz*/) {
JNI_AndroidProtocolHandler_GetAndroidAssetPath(JNIEnv* env) {
return ConvertUTF8ToJavaString(env, android_webview::kAndroidAssetPath);
}

static ScopedJavaLocalRef<jstring>
JNI_AndroidProtocolHandler_GetAndroidResourcePath(
JNIEnv* env,
const JavaParamRef<jclass>& /*clazz*/) {
JNI_AndroidProtocolHandler_GetAndroidResourcePath(JNIEnv* env) {
return ConvertUTF8ToJavaString(env, android_webview::kAndroidResourcePath);
}

Expand Down
18 changes: 4 additions & 14 deletions android_webview/browser/aw_contents.cc
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,6 @@ AwContents* AwContents::FromID(int render_process_id, int render_view_id) {
// static
void JNI_AwContents_UpdateDefaultLocale(
JNIEnv* env,
const JavaParamRef<jclass>&,
const JavaParamRef<jstring>& locale,
const JavaParamRef<jstring>& locale_list) {
*g_locale() = ConvertJavaStringToUTF8(env, locale);
Expand Down Expand Up @@ -423,7 +422,6 @@ void AwContents::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) {
}

static jlong JNI_AwContents_Init(JNIEnv* env,
const JavaParamRef<jclass>&,
const JavaParamRef<jobject>& browser_context) {
// TODO(joth): Use |browser_context| to get the native BrowserContext, rather
// than hard-code the default instance lookup here.
Expand All @@ -434,9 +432,7 @@ static jlong JNI_AwContents_Init(JNIEnv* env,
return reinterpret_cast<intptr_t>(new AwContents(std::move(web_contents)));
}

static jboolean JNI_AwContents_HasRequiredHardwareExtensions(
JNIEnv* env,
const JavaParamRef<jclass>&) {
static jboolean JNI_AwContents_HasRequiredHardwareExtensions(JNIEnv* env) {
ScopedAllowInitGLBindings scoped_allow_init_gl_bindings;
// Make sure GPUInfo is collected. This will initialize GL bindings,
// collect GPUInfo, and compute GpuFeatureInfo if they have not been
Expand All @@ -446,26 +442,22 @@ static jboolean JNI_AwContents_HasRequiredHardwareExtensions(
}

static void JNI_AwContents_SetAwDrawSWFunctionTable(JNIEnv* env,
const JavaParamRef<jclass>&,
jlong function_table) {
RasterHelperSetAwDrawSWFunctionTable(
reinterpret_cast<AwDrawSWFunctionTable*>(function_table));
}

static void JNI_AwContents_SetAwDrawGLFunctionTable(JNIEnv* env,
const JavaParamRef<jclass>&,
jlong function_table) {}

// static
jint JNI_AwContents_GetNativeInstanceCount(JNIEnv* env,
const JavaParamRef<jclass>&) {
jint JNI_AwContents_GetNativeInstanceCount(JNIEnv* env) {
return base::subtle::NoBarrier_Load(&g_instance_count);
}

// static
ScopedJavaLocalRef<jstring> JNI_AwContents_GetSafeBrowsingLocaleForTesting(
JNIEnv* env,
const JavaParamRef<jclass>&) {
JNIEnv* env) {
ScopedJavaLocalRef<jstring> locale =
ConvertUTF8ToJavaString(env, base::i18n::GetConfiguredLocale());
return locale;
Expand Down Expand Up @@ -1356,9 +1348,7 @@ jlong AwContents::GetAutofillProvider(
return reinterpret_cast<jlong>(autofill_provider_.get());
}

void JNI_AwContents_SetShouldDownloadFavicons(
JNIEnv* env,
const JavaParamRef<jclass>& jclazz) {
void JNI_AwContents_SetShouldDownloadFavicons(JNIEnv* env) {
g_should_download_favicons = true;
}

Expand Down
16 changes: 3 additions & 13 deletions android_webview/browser/aw_contents_statics.cc
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,7 @@ void ProxyOverrideChanged(const JavaRef<jobject>& callback) {

// static
ScopedJavaLocalRef<jstring>
JNI_AwContentsStatics_GetSafeBrowsingPrivacyPolicyUrl(
JNIEnv* env,
const JavaParamRef<jclass>&) {
JNI_AwContentsStatics_GetSafeBrowsingPrivacyPolicyUrl(JNIEnv* env) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
GURL privacy_policy_url(
security_interstitials::kSafeBrowsingPrivacyPolicyUrl);
Expand All @@ -81,7 +79,6 @@ JNI_AwContentsStatics_GetSafeBrowsingPrivacyPolicyUrl(
// static
void JNI_AwContentsStatics_ClearClientCertPreferences(
JNIEnv* env,
const JavaParamRef<jclass>&,
const JavaParamRef<jobject>& callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
base::PostTaskWithTraitsAndReply(
Expand All @@ -93,24 +90,21 @@ void JNI_AwContentsStatics_ClearClientCertPreferences(

// static
ScopedJavaLocalRef<jstring> JNI_AwContentsStatics_GetUnreachableWebDataUrl(
JNIEnv* env,
const JavaParamRef<jclass>&) {
JNIEnv* env) {
return base::android::ConvertUTF8ToJavaString(
env, content::kUnreachableWebDataURL);
}

// static
ScopedJavaLocalRef<jstring> JNI_AwContentsStatics_GetProductVersion(
JNIEnv* env,
const JavaParamRef<jclass>&) {
JNIEnv* env) {
return base::android::ConvertUTF8ToJavaString(
env, version_info::GetVersionNumber());
}

// static
void JNI_AwContentsStatics_SetSafeBrowsingWhitelist(
JNIEnv* env,
const JavaParamRef<jclass>&,
const JavaParamRef<jobjectArray>& jrules,
const JavaParamRef<jobject>& callback) {
std::vector<std::string> rules;
Expand All @@ -126,7 +120,6 @@ void JNI_AwContentsStatics_SetSafeBrowsingWhitelist(
// static
void JNI_AwContentsStatics_SetServiceWorkerIoThreadClient(
JNIEnv* env,
const JavaParamRef<jclass>&,
const base::android::JavaParamRef<jobject>& io_thread_client,
const base::android::JavaParamRef<jobject>& browser_context) {
AwContentsIoThreadClient::SetServiceWorkerIoThreadClient(io_thread_client,
Expand All @@ -136,15 +129,13 @@ void JNI_AwContentsStatics_SetServiceWorkerIoThreadClient(
// static
void JNI_AwContentsStatics_SetCheckClearTextPermitted(
JNIEnv* env,
const JavaParamRef<jclass>&,
jboolean permitted) {
AwURLRequestContextGetter::set_check_cleartext_permitted(permitted);
}

// static
void JNI_AwContentsStatics_SetProxyOverride(
JNIEnv* env,
const JavaParamRef<jclass>&,
const base::android::JavaParamRef<jstring>& jhost,
jint port,
const base::android::JavaParamRef<jobjectArray>& jexclusion_list,
Expand All @@ -163,7 +154,6 @@ void JNI_AwContentsStatics_SetProxyOverride(
// static
void JNI_AwContentsStatics_ClearProxyOverride(
JNIEnv* env,
const JavaParamRef<jclass>&,
const JavaParamRef<jobject>& callback) {
AwBrowserContext::GetDefault()->GetAwURLRequestContext()->ClearProxyOverride(
base::BindOnce(&ProxyOverrideChanged,
Expand Down
13 changes: 3 additions & 10 deletions android_webview/browser/aw_debug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ namespace android_webview {

static jboolean JNI_AwDebug_DumpWithoutCrashing(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& dump_path) {
// This may be called from any thread, and we might be in a state
// where it is impossible to post tasks, so we have to be prepared
Expand All @@ -37,23 +36,17 @@ static jboolean JNI_AwDebug_DumpWithoutCrashing(
return crash_reporter::DumpWithoutCrashingToFd(target.TakePlatformFile());
}

static void JNI_AwDebug_InitCrashKeysForWebViewTesting(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
static void JNI_AwDebug_InitCrashKeysForWebViewTesting(JNIEnv* env) {
crash_keys::InitCrashKeysForWebViewTesting();
}

static void JNI_AwDebug_SetWhiteListedKeyForTesting(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
static void JNI_AwDebug_SetWhiteListedKeyForTesting(JNIEnv* env) {
static ::crash_reporter::CrashKeyString<32> crash_key(
"AW_WHITELISTED_DEBUG_KEY");
crash_key.Set("AW_DEBUG_VALUE");
}

static void JNI_AwDebug_SetNonWhiteListedKeyForTesting(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
static void JNI_AwDebug_SetNonWhiteListedKeyForTesting(JNIEnv* env) {
static ::crash_reporter::CrashKeyString<32> crash_key(
"AW_NONWHITELISTED_DEBUG_KEY");
crash_key.Set("AW_DEBUG_VALUE");
Expand Down
1 change: 0 additions & 1 deletion android_webview/browser/aw_feature_list.cc
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ const base::Feature kWebViewUmaLogAppPackageName{

static jboolean JNI_AwFeatureList_IsEnabled(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jfeature_name) {
const base::Feature* feature =
FindFeatureExposedToJava(ConvertJavaStringToUTF8(env, jfeature_name));
Expand Down
4 changes: 2 additions & 2 deletions android_webview/browser/aw_form_database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ AwFormDatabaseService* GetFormDatabaseService() {
} // anonymous namespace

// static
jboolean JNI_AwFormDatabase_HasFormData(JNIEnv*, const JavaParamRef<jclass>&) {
jboolean JNI_AwFormDatabase_HasFormData(JNIEnv*) {
return GetFormDatabaseService()->HasFormData();
}

// static
void JNI_AwFormDatabase_ClearFormData(JNIEnv*, const JavaParamRef<jclass>&) {
void JNI_AwFormDatabase_ClearFormData(JNIEnv*) {
GetFormDatabaseService()->ClearFormData();
}

Expand Down
8 changes: 2 additions & 6 deletions android_webview/browser/aw_gl_functor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -92,21 +92,17 @@ jlong AwGLFunctor::GetCompositorFrameConsumer(
return reinterpret_cast<intptr_t>(GetCompositorFrameConsumer());
}

static jint JNI_AwGLFunctor_GetNativeInstanceCount(
JNIEnv* env,
const JavaParamRef<jclass>&) {
static jint JNI_AwGLFunctor_GetNativeInstanceCount(JNIEnv* env) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return g_instance_count;
}

static jlong JNI_AwGLFunctor_GetAwDrawGLFunction(JNIEnv* env,
const JavaParamRef<jclass>&) {
static jlong JNI_AwGLFunctor_GetAwDrawGLFunction(JNIEnv* env) {
return reinterpret_cast<intptr_t>(&DrawGLFunction);
}

static jlong JNI_AwGLFunctor_Create(
JNIEnv* env,
const JavaParamRef<jclass>&,
const base::android::JavaParamRef<jobject>& obj) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
return reinterpret_cast<intptr_t>(
Expand Down
1 change: 0 additions & 1 deletion android_webview/browser/aw_metrics_service_client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,6 @@ AwMetricsServiceClient::~AwMetricsServiceClient() {}
// static
void JNI_AwMetricsServiceClient_SetHaveMetricsConsent(
JNIEnv* env,
const base::android::JavaParamRef<jclass>& jcaller,
jboolean consent) {
g_lazy_instance_.Pointer()->SetHaveMetricsConsent(consent);
}
Expand Down
3 changes: 1 addition & 2 deletions android_webview/browser/aw_quota_manager_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,7 @@ void RunOnUIThread(base::OnceClosure task) {

// static
jlong JNI_AwQuotaManagerBridge_GetDefaultNativeAwQuotaManagerBridge(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
JNIEnv* env) {
AwBrowserContext* browser_context =
AwContentBrowserClient::GetAwBrowserContext();

Expand Down
3 changes: 1 addition & 2 deletions android_webview/browser/aw_settings.cc
Original file line number Diff line number Diff line change
Expand Up @@ -502,8 +502,7 @@ static jlong JNI_AwSettings_Init(JNIEnv* env,
}

static ScopedJavaLocalRef<jstring> JNI_AwSettings_GetDefaultUserAgent(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
JNIEnv* env) {
return base::android::ConvertUTF8ToJavaString(env, GetUserAgent());
}

Expand Down
1 change: 0 additions & 1 deletion android_webview/browser/aw_web_contents_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,6 @@ AwWebContentsDelegate::TakeFileSelectListener() {

static void JNI_AwWebContentsDelegate_FilesSelectedInChooser(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
jint process_id,
jint render_id,
jint mode_flags,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,7 @@ std::unique_ptr<HttpResponse> HandleImageOnloadHtml(

// static
ScopedJavaLocalRef<jlongArray> JNI_AwEmbeddedTestServerImpl_GetHandlers(
JNIEnv* env,
const JavaParamRef<jclass>&) {
JNIEnv* env) {
std::vector<int64_t> handlers = {
reinterpret_cast<int64_t>(&HandleClickRedirect),
reinterpret_cast<int64_t>(&HandleEchoHeaderAndSetData),
Expand Down
1 change: 0 additions & 1 deletion base/android/application_status_listener.cc
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,6 @@ ApplicationState ApplicationStatusListener::GetState() {

static void JNI_ApplicationStatus_OnApplicationStateChange(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
jint new_state) {
ApplicationState application_state = static_cast<ApplicationState>(new_state);
ApplicationStatusListener::NotifyApplicationStateChange(application_state);
Expand Down
5 changes: 1 addition & 4 deletions base/android/child_process_service.cc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ namespace android {

void JNI_ChildProcessService_RegisterFileDescriptors(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobjectArray>& j_keys,
const JavaParamRef<jintArray>& j_ids,
const JavaParamRef<jintArray>& j_fds,
Expand Down Expand Up @@ -67,9 +66,7 @@ void JNI_ChildProcessService_RegisterFileDescriptors(
}
}

void JNI_ChildProcessService_ExitChildProcess(
JNIEnv* env,
const JavaParamRef<jclass>& clazz) {
void JNI_ChildProcessService_ExitChildProcess(JNIEnv* env) {
VLOG(0) << "ChildProcessService: Exiting child process.";
base::android::LibraryLoaderExitHook();
_exit(0);
Expand Down
6 changes: 0 additions & 6 deletions base/android/command_line_android.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,13 @@ void JNI_CommandLine_AppendJavaStringArrayToCommandLine(

static jboolean JNI_CommandLine_HasSwitch(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jswitch) {
std::string switch_string(ConvertJavaStringToUTF8(env, jswitch));
return CommandLine::ForCurrentProcess()->HasSwitch(switch_string);
}

static ScopedJavaLocalRef<jstring> JNI_CommandLine_GetSwitchValue(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jswitch) {
std::string switch_string(ConvertJavaStringToUTF8(env, jswitch));
std::string value(CommandLine::ForCurrentProcess()->GetSwitchValueNative(
Expand All @@ -53,15 +51,13 @@ static ScopedJavaLocalRef<jstring> JNI_CommandLine_GetSwitchValue(
}

static void JNI_CommandLine_AppendSwitch(JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jswitch) {
std::string switch_string(ConvertJavaStringToUTF8(env, jswitch));
CommandLine::ForCurrentProcess()->AppendSwitch(switch_string);
}

static void JNI_CommandLine_AppendSwitchWithValue(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jstring>& jswitch,
const JavaParamRef<jstring>& jvalue) {
std::string switch_string(ConvertJavaStringToUTF8(env, jswitch));
Expand All @@ -72,14 +68,12 @@ static void JNI_CommandLine_AppendSwitchWithValue(

static void JNI_CommandLine_AppendSwitchesAndArguments(
JNIEnv* env,
const JavaParamRef<jclass>& clazz,
const JavaParamRef<jobjectArray>& array) {
JNI_CommandLine_AppendJavaStringArrayToCommandLine(env, array, false);
}

static void JNI_CommandLine_Init(
JNIEnv* env,
const JavaParamRef<jclass>& jclazz,
const JavaParamRef<jobjectArray>& init_command_line) {
// TODO(port): Make an overload of Init() that takes StringVector rather than
// have to round-trip via AppendArguments.
Expand Down
4 changes: 2 additions & 2 deletions base/android/cpu_features.cc
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@
namespace base {
namespace android {

jint JNI_CpuFeatures_GetCoreCount(JNIEnv*, const JavaParamRef<jclass>&) {
jint JNI_CpuFeatures_GetCoreCount(JNIEnv*) {
return android_getCpuCount();
}

jlong JNI_CpuFeatures_GetCpuFeatures(JNIEnv*, const JavaParamRef<jclass>&) {
jlong JNI_CpuFeatures_GetCpuFeatures(JNIEnv*) {
return android_getCpuFeatures();
}

Expand Down
Loading

0 comments on commit c99e905

Please sign in to comment.