diff --git a/components/cronet.gypi b/components/cronet.gypi index 865f80348734b7..4c608037e8ec71 100644 --- a/components/cronet.gypi +++ b/components/cronet.gypi @@ -60,11 +60,13 @@ '../net/net.gyp:net', ], 'sources': [ + 'cronet/android/cronet_jni.cc', 'cronet/android/org_chromium_net_UrlRequest.cc', 'cronet/android/org_chromium_net_UrlRequest.h', 'cronet/android/org_chromium_net_UrlRequest_error_list.h', 'cronet/android/org_chromium_net_UrlRequest_priority_list.h', 'cronet/android/org_chromium_net_UrlRequestContext.cc', + 'cronet/android/org_chromium_net_UrlRequestContext.h', 'cronet/android/url_request_context_peer.cc', 'cronet/android/url_request_context_peer.h', 'cronet/android/url_request_peer.cc', diff --git a/components/cronet/android/cronet_jni.cc b/components/cronet/android/cronet_jni.cc new file mode 100644 index 00000000000000..c4fef7c971ffc4 --- /dev/null +++ b/components/cronet/android/cronet_jni.cc @@ -0,0 +1,55 @@ +// Copyright 2014 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. + +#include "base/android/base_jni_registrar.h" +#include "base/android/jni_android.h" +#include "base/android/jni_registrar.h" +#include "base/at_exit.h" +#include "base/i18n/icu_util.h" +#include "components/cronet/android/org_chromium_net_UrlRequest.h" +#include "components/cronet/android/org_chromium_net_UrlRequestContext.h" +#include "net/android/net_jni_registrar.h" + +namespace { + +const base::android::RegistrationMethod kCronetRegisteredMethods[] = { + {"BaseAndroid", base::android::RegisterJni}, + {"NetAndroid", net::android::RegisterJni}, + {"UrlRequest", cronet::UrlRequestRegisterJni}, + {"UrlRequestContext", cronet::UrlRequestContextRegisterJni}, +}; + +base::AtExitManager* g_at_exit_manager = NULL; + + +} // namespace + +// Checks the available version of JNI. Also, caches Java reflection artifacts. +extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) { + JNIEnv* env; + if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { + return -1; + } + + base::android::InitVM(vm); + + if (!base::android::RegisterNativeMethods( + env, kCronetRegisteredMethods, arraysize(kCronetRegisteredMethods))) { + return -1; + } + + g_at_exit_manager = new base::AtExitManager(); + + base::i18n::InitializeICU(); + + return JNI_VERSION_1_6; +} + +extern "C" void JNIEXPORT JNICALL JNI_OnUnLoad(JavaVM* jvm, void* reserved) { + if (g_at_exit_manager) { + delete g_at_exit_manager; + g_at_exit_manager = NULL; + } +} + diff --git a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/LibraryLoader.java b/components/cronet/android/java/src/org/chromium/net/LibraryLoader.java similarity index 93% rename from components/cronet/android/sample/src/org/chromium/cronet_sample_apk/LibraryLoader.java rename to components/cronet/android/java/src/org/chromium/net/LibraryLoader.java index 60caa20e859979..286439fda7f849 100644 --- a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/LibraryLoader.java +++ b/components/cronet/android/java/src/org/chromium/net/LibraryLoader.java @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -package org.chromium.cronet_sample_apk; +package org.chromium.net; import android.util.Log; diff --git a/components/cronet/android/org_chromium_net_UrlRequestContext.cc b/components/cronet/android/org_chromium_net_UrlRequestContext.cc index 1cfc989a71324b..2beaeeb6f4e642 100644 --- a/components/cronet/android/org_chromium_net_UrlRequestContext.cc +++ b/components/cronet/android/org_chromium_net_UrlRequestContext.cc @@ -2,18 +2,15 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/android/base_jni_registrar.h" +#include "components/cronet/android/org_chromium_net_UrlRequestContext.h" + #include "base/android/jni_android.h" -#include "base/android/jni_registrar.h" #include "base/android/jni_string.h" -#include "base/at_exit.h" -#include "base/i18n/icu_util.h" #include "base/metrics/statistics_recorder.h" #include "components/cronet/android/org_chromium_net_UrlRequest.h" #include "components/cronet/android/url_request_context_peer.h" #include "components/cronet/android/url_request_peer.h" #include "jni/UrlRequestContext_jni.h" -#include "net/android/net_jni_registrar.h" // Version of this build of Chromium NET. #define CHROMIUM_NET_VERSION "1" @@ -22,15 +19,6 @@ namespace { const char kVersion[] = CHROMIUM_VERSION "/" CHROMIUM_NET_VERSION; -const base::android::RegistrationMethod kCronetRegisteredMethods[] = { - {"BaseAndroid", base::android::RegisterJni}, - {"NetAndroid", net::android::RegisterJni}, - {"UrlRequest", cronet::UrlRequestRegisterJni}, - {"UrlRequestContext", cronet::RegisterNativesImpl}, -}; - -base::AtExitManager* g_at_exit_manager = NULL; - // Delegate of URLRequestContextPeer that delivers callbacks to the Java layer. class JniURLRequestContextPeerDelegate : public cronet::URLRequestContextPeer::URLRequestContextPeerDelegate { @@ -59,36 +47,13 @@ class JniURLRequestContextPeerDelegate } // namespace -// Checks the available version of JNI. Also, caches Java reflection artifacts. -extern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) { - JNIEnv* env; - if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { - return -1; - } - - base::android::InitVM(vm); - - if (!base::android::RegisterNativeMethods( - env, kCronetRegisteredMethods, arraysize(kCronetRegisteredMethods))) { - return -1; - } - - g_at_exit_manager = new base::AtExitManager(); - - base::i18n::InitializeICU(); - - return JNI_VERSION_1_6; -} +namespace cronet { -extern "C" void JNIEXPORT JNICALL JNI_OnUnLoad(JavaVM* jvm, void* reserved) { - if (g_at_exit_manager) { - delete g_at_exit_manager; - g_at_exit_manager = NULL; - } +// Explicitly register static JNI functions. +bool UrlRequestContextRegisterJni(JNIEnv* env) { + return RegisterNativesImpl(env); } -namespace cronet { - static jstring GetVersion(JNIEnv* env, jclass unused) { return env->NewStringUTF(kVersion); } diff --git a/components/cronet/android/org_chromium_net_UrlRequestContext.h b/components/cronet/android/org_chromium_net_UrlRequestContext.h new file mode 100644 index 00000000000000..4052e5ff0fdd8f --- /dev/null +++ b/components/cronet/android/org_chromium_net_UrlRequestContext.h @@ -0,0 +1,16 @@ +// Copyright 2014 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. + +#ifndef COMPONENTS_CRONET_ANDROID_URLREQUEST_CONTEXT_H_ +#define COMPONENTS_CRONET_ANDROID_URLREQUEST_CONTEXT_H_ + +#include + +namespace cronet { + +bool UrlRequestContextRegisterJni(JNIEnv* env); + +} // namespace cronet + +#endif // COMPONENTS_CRONET_ANDROID_URLREQUEST_CONTEXT_H_ diff --git a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java index 4d15f415ac653a..4dd9d48a6397e8 100644 --- a/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java +++ b/components/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java @@ -16,6 +16,7 @@ import org.chromium.net.HttpUrlRequest; import org.chromium.net.HttpUrlRequestFactory; import org.chromium.net.HttpUrlRequestListener; +import org.chromium.net.LibraryLoader; import org.chromium.net.UrlRequest; import org.chromium.net.UrlRequestContext; import org.chromium.net.UrlRequestPriority;