| Index: components/cronet/android/cronet_url_request_context_adapter.cc
|
| diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc
|
| index 29e9c8b01b92c6afb014dd92a6e3bab25d5f1984..7ab58ec81c9b1ab9ead851dde0e7d7ae1feb3042 100644
|
| --- a/components/cronet/android/cronet_url_request_context_adapter.cc
|
| +++ b/components/cronet/android/cronet_url_request_context_adapter.cc
|
| @@ -27,6 +27,7 @@
|
| #include "net/base/load_flags.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/network_delegate_impl.h"
|
| +#include "net/cert/cert_verifier.h"
|
| #include "net/http/http_auth_handler_factory.h"
|
| #include "net/http/http_server_properties_manager.h"
|
| #include "net/log/write_to_file_net_log_observer.h"
|
| @@ -238,6 +239,30 @@ void CronetURLRequestContextAdapter::ProvideThroughputObservations(
|
| base::Unretained(this), should));
|
| }
|
|
|
| +void CronetURLRequestContextAdapter::SetMockCertVerifierForTesting(
|
| + JNIEnv* env,
|
| + jobject jcaller,
|
| + jlong jmock_verifier) {
|
| + DCHECK(!GetNetworkTaskRunner()->BelongsToCurrentThread());
|
| + // Not using RunTaskAfterContextInitOnNetworkThread so verifier can be set
|
| + // before the context is initialized.
|
| + GetNetworkTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(&CronetURLRequestContextAdapter::
|
| + SetMockCertVerifierForTestingOnNetworkThread,
|
| + base::Unretained(this), jmock_verifier));
|
| +}
|
| +
|
| +void CronetURLRequestContextAdapter::
|
| + SetMockCertVerifierForTestingOnNetworkThread(jlong jmock_verifier) {
|
| + DCHECK(GetNetworkTaskRunner()->BelongsToCurrentThread());
|
| + DCHECK(!context_builder_);
|
| +
|
| + context_builder_.reset(new net::URLRequestContextBuilder);
|
| + net::CertVerifier* cert_verifier =
|
| + reinterpret_cast<net::CertVerifier*>(jmock_verifier);
|
| + context_builder_->set_cert_verifier(cert_verifier);
|
| +}
|
| +
|
| void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
|
| scoped_ptr<URLRequestContextConfig> config,
|
| const base::android::ScopedJavaGlobalRef<jobject>&
|
| @@ -246,7 +271,8 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
|
| DCHECK(!is_context_initialized_);
|
| DCHECK(proxy_config_service_);
|
| // TODO(mmenke): Add method to have the builder enable SPDY.
|
| - net::URLRequestContextBuilder context_builder;
|
| + if (!context_builder_)
|
| + context_builder_.reset(new net::URLRequestContextBuilder());
|
|
|
| net_log_.reset(new net::NetLog);
|
| scoped_ptr<net::NetworkDelegate> network_delegate(new BasicNetworkDelegate());
|
| @@ -264,19 +290,19 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
|
| data_reduction_proxy_->CreateNetworkDelegate(network_delegate.Pass());
|
| ScopedVector<net::URLRequestInterceptor> interceptors;
|
| interceptors.push_back(data_reduction_proxy_->CreateInterceptor());
|
| - context_builder.SetInterceptors(interceptors.Pass());
|
| + context_builder_->SetInterceptors(interceptors.Pass());
|
| }
|
| #endif // defined(DATA_REDUCTION_PROXY_SUPPORT)
|
| - context_builder.set_network_delegate(network_delegate.Pass());
|
| - context_builder.set_net_log(net_log_.get());
|
| + context_builder_->set_network_delegate(network_delegate.Pass());
|
| + context_builder_->set_net_log(net_log_.get());
|
|
|
| // Android provides a local HTTP proxy server that handles proxying when a PAC
|
| // URL is present. Create a proxy service without a resolver and rely on this
|
| // local HTTP proxy. See: crbug.com/432539.
|
| - context_builder.set_proxy_service(
|
| + context_builder_->set_proxy_service(
|
| net::ProxyService::CreateWithoutProxyResolver(
|
| proxy_config_service_.Pass(), net_log_.get()));
|
| - config->ConfigureURLRequestContextBuilder(&context_builder);
|
| + config->ConfigureURLRequestContextBuilder(context_builder_.get());
|
|
|
| // Set up pref file if storage path is specified.
|
| if (!config->storage_path.empty()) {
|
| @@ -284,7 +310,7 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
|
| filepath = filepath.Append(FILE_PATH_LITERAL("local_prefs.json"));
|
| json_pref_store_ = new JsonPrefStore(
|
| filepath, GetFileThread()->task_runner(), scoped_ptr<PrefFilter>());
|
| - context_builder.SetFileTaskRunner(GetFileThread()->task_runner());
|
| + context_builder_->SetFileTaskRunner(GetFileThread()->task_runner());
|
|
|
| // Set up HttpServerPropertiesManager.
|
| base::PrefServiceFactory factory;
|
| @@ -300,11 +326,11 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread(
|
| GetNetworkTaskRunner()));
|
| http_server_properties_manager->InitializeOnNetworkThread();
|
| http_server_properties_manager_ = http_server_properties_manager.get();
|
| - context_builder.SetHttpServerProperties(
|
| + context_builder_->SetHttpServerProperties(
|
| http_server_properties_manager.Pass());
|
| }
|
|
|
| - context_ = context_builder.Build().Pass();
|
| + context_ = context_builder_->Build().Pass();
|
|
|
| default_load_flags_ = net::LOAD_DO_NOT_SAVE_COOKIES |
|
| net::LOAD_DO_NOT_SEND_COOKIES;
|
|
|