| Index: components/cronet/android/cronet_url_request_context.cc
|
| diff --git a/components/cronet/android/cronet_url_request_context.cc b/components/cronet/android/cronet_url_request_context.cc
|
| index a9b6014217c7ffd110f42fa9a90a4eea5a3227da..bae03804261989a7972809698ea250060b9514d3 100644
|
| --- a/components/cronet/android/cronet_url_request_context.cc
|
| +++ b/components/cronet/android/cronet_url_request_context.cc
|
| @@ -33,7 +33,8 @@ bool CronetUrlRequestContextRegisterJni(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| }
|
|
|
| -// Sets global user-agent to be used for all subsequent requests.
|
| +// Creates RequestContextAdater if config is valid URLRequestContextConfig,
|
| +// returns 0 otherwise.
|
| static jlong CreateRequestContextAdapter(JNIEnv* env,
|
| jobject jcaller,
|
| jobject japp_context,
|
| @@ -45,19 +46,8 @@ static jlong CreateRequestContextAdapter(JNIEnv* env,
|
| if (!context_config->LoadFromJSON(config_string))
|
| return 0;
|
|
|
| - // Set application context.
|
| - base::android::ScopedJavaLocalRef<jobject> scoped_context(env, japp_context);
|
| - base::android::InitApplicationContext(env, scoped_context);
|
| -
|
| - base::android::ScopedJavaGlobalRef<jobject> jcaller_ref;
|
| - jcaller_ref.Reset(env, jcaller);
|
| -
|
| CronetURLRequestContextAdapter* context_adapter =
|
| - new CronetURLRequestContextAdapter();
|
| - base::Closure init_java_network_thread = base::Bind(&initJavaNetworkThread,
|
| - jcaller_ref);
|
| - context_adapter->Initialize(context_config.Pass(), init_java_network_thread);
|
| -
|
| + new CronetURLRequestContextAdapter(context_config.Pass());
|
| return reinterpret_cast<jlong>(context_adapter);
|
| }
|
|
|
| @@ -106,4 +96,22 @@ static jint SetMinLogLevel(JNIEnv* env, jobject jcaller, jint jlog_level) {
|
| return old_log_level;
|
| }
|
|
|
| +// Called on application's main Java thread.
|
| +static void InitRequestContextOnMainThread(JNIEnv* env,
|
| + jobject jcaller,
|
| + jlong jurl_request_context_adapter) {
|
| + if (jurl_request_context_adapter == 0)
|
| + return;
|
| +
|
| + CronetURLRequestContextAdapter* context_adapter =
|
| + reinterpret_cast<CronetURLRequestContextAdapter*>(
|
| + jurl_request_context_adapter);
|
| +
|
| + base::android::ScopedJavaGlobalRef<jobject> jcaller_ref;
|
| + jcaller_ref.Reset(env, jcaller);
|
| + base::Closure init_java_network_thread = base::Bind(&initJavaNetworkThread,
|
| + jcaller_ref);
|
| + context_adapter->InitRequestContextOnMainThread(init_java_network_thread);
|
| +}
|
| +
|
| } // namespace cronet
|
|
|