Index: net/url_request/url_request_context_builder.cc |
diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc |
index 771bc3f25f28e91c929b3e60c4baae85ce8ca54b..7eae6bc492c8425a76273165039522b58812b18b 100644 |
--- a/net/url_request/url_request_context_builder.cc |
+++ b/net/url_request/url_request_context_builder.cc |
@@ -26,6 +26,7 @@ |
#include "net/http/http_network_layer.h" |
#include "net/http/http_network_session.h" |
#include "net/http/http_server_properties_impl.h" |
+#include "net/http/http_transaction_factory.h" |
#include "net/http/transport_security_persister.h" |
#include "net/http/transport_security_state.h" |
#include "net/ssl/channel_id_service.h" |
@@ -129,7 +130,7 @@ class BasicURLRequestContext : public URLRequestContext { |
const scoped_refptr<base::SingleThreadTaskRunner>& file_task_runner) |
: file_task_runner_(file_task_runner), storage_(this) {} |
- URLRequestContextStorage* storage() { |
+ URLRequestContextStorage* storage() override { |
return &storage_; |
} |
@@ -203,7 +204,14 @@ URLRequestContextBuilder::URLRequestContextBuilder() |
#endif |
http_cache_enabled_(true), |
throttling_enabled_(false), |
- sdch_enabled_(false) { |
+ sdch_enabled_(false), |
+ net_log_unowned_(nullptr), |
+ http_user_agent_settings_unowned_(nullptr), |
+ host_resolver_unowned_(nullptr), |
+ cert_transparency_verifier_unowned_(nullptr), |
+ http_auth_handler_factory_unowned_(nullptr), |
+ network_quality_estimator_unowned_(nullptr), |
+ proxy_service_unowned_(nullptr) { |
} |
URLRequestContextBuilder::~URLRequestContextBuilder() {} |
@@ -243,6 +251,123 @@ void URLRequestContextBuilder::SetFileTaskRunner( |
file_task_runner_ = task_runner; |
} |
+void URLRequestContextBuilder::set_sdch_manager(SdchManager* manager) { |
+ sdch_manager_.reset(manager); |
+} |
+ |
+void URLRequestContextBuilder::set_job_factory( |
+ scoped_ptr<URLRequestJobFactory> factory) { |
+ job_factory_ = factory.Pass(); |
+} |
+ |
+URLRequestContext* URLRequestContextBuilder::BuildMainContext() { |
+ BasicURLRequestContext* context = |
+ new BasicURLRequestContext(file_task_runner_); |
+ URLRequestContextStorage* storage = context->storage(); |
+ |
+ // The ordering of the code in this function is important. For example, |
+ // the HttpTransactionFactory cannot be created before setting the |
+ // CertVerifier. |
+ // Do not change the ordering unless you are sure you know what depends on |
+ // what. |
+ // TODO(wjmaclean): Can this function provide default creation of the |
+ // various elements in a manner that would work for a main context? |
+ if (fraudulent_certificate_reporter_factory_) { |
+ storage->set_fraudulent_certificate_reporter( |
+ fraudulent_certificate_reporter_factory_->Create(context)); |
+ } else { |
+ NOTIMPLEMENTED(); |
+ } |
+ |
+ if (cert_verifier_delegate_) |
+ context->set_cert_verifier(cert_verifier_delegate_->Get(context)); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (transport_security_state_.get()) |
+ storage->set_transport_security_state(transport_security_state_.release()); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (http_user_agent_settings_unowned_) |
+ context->set_http_user_agent_settings(http_user_agent_settings_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (ssl_config_service_) |
+ context->set_ssl_config_service(ssl_config_service_.get()); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (net_log_unowned_) |
+ context->set_net_log(net_log_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (network_delegate_) |
+ storage->set_network_delegate(network_delegate_.release()); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (http_server_properties_) |
+ context->set_http_server_properties(http_server_properties_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (host_resolver_unowned_) |
+ context->set_host_resolver(host_resolver_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (cert_transparency_verifier_unowned_) |
+ context->set_cert_transparency_verifier(cert_transparency_verifier_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (http_auth_handler_factory_unowned_) |
+ context->set_http_auth_handler_factory(http_auth_handler_factory_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (proxy_service_unowned_) |
+ context->set_proxy_service(proxy_service_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (cookie_store_) { |
+ storage->set_cookie_store(cookie_store_.get()); |
+ storage->set_channel_id_service(channel_id_service_.Pass()); |
+ } else { |
+ NOTIMPLEMENTED(); |
+ } |
+ |
+ |
+ if (http_transaction_factory_factory_) { |
+ storage->set_http_transaction_factory( |
+ http_transaction_factory_factory_->Create(context)); |
+ } else { |
+ NOTIMPLEMENTED(); |
+ } |
+ |
+ if (sdch_manager_) |
+ storage->set_sdch_manager(sdch_manager_.Pass()); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ if (job_factory_) |
+ storage->set_job_factory(job_factory_.release()); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ |
+ if (network_quality_estimator_unowned_) |
+ context->set_network_quality_estimator(network_quality_estimator_unowned_); |
+ else |
+ NOTIMPLEMENTED(); |
+ |
+ return context; |
+} |
+ |
URLRequestContext* URLRequestContextBuilder::Build() { |
BasicURLRequestContext* context = |
new BasicURLRequestContext(file_task_runner_); |