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 28220ed7d568fe5fffcc91be493b13d153ab02a6..bd5d0e12b53b0a163933297ae22b2ebc8ef14ae1 100644 |
--- a/net/url_request/url_request_context_builder.cc |
+++ b/net/url_request/url_request_context_builder.cc |
@@ -26,9 +26,13 @@ |
#include "net/http/http_network_session.h" |
#include "net/http/http_server_properties_impl.h" |
#include "net/proxy/proxy_service.h" |
+#include "net/url_request/data_protocol_handler.h" |
+#include "net/url_request/file_protocol_handler.h" |
+#include "net/url_request/ftp_protocol_handler.h" |
#include "net/url_request/static_http_user_agent_settings.h" |
#include "net/url_request/url_request_context.h" |
#include "net/url_request/url_request_context_storage.h" |
+#include "net/url_request/url_request_job_factory_impl.h" |
namespace net { |
@@ -180,7 +184,9 @@ URLRequestContextBuilder::HttpNetworkSessionParams::~HttpNetworkSessionParams() |
{} |
URLRequestContextBuilder::URLRequestContextBuilder() |
- : ftp_enabled_(false), |
+ : data_enabled_(false), |
+ file_enabled_(false), |
+ ftp_enabled_(false), |
http_cache_enabled_(true) {} |
URLRequestContextBuilder::~URLRequestContextBuilder() {} |
@@ -204,11 +210,6 @@ URLRequestContext* URLRequestContextBuilder::Build() { |
storage->set_host_resolver(net::HostResolver::CreateDefaultResolver(NULL)); |
- if (ftp_enabled_) { |
- storage->set_ftp_transaction_factory( |
- new FtpNetworkLayer(context->host_resolver())); |
- } |
- |
context->StartFileThread(); |
// TODO(willchan): Switch to using this code when |
@@ -290,6 +291,19 @@ URLRequestContext* URLRequestContextBuilder::Build() { |
} |
storage->set_http_transaction_factory(http_transaction_factory); |
+ URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl; |
+ if (data_enabled_) |
+ job_factory->SetProtocolHandler("data", new DataProtocolHandler); |
+ if (file_enabled_) |
+ job_factory->SetProtocolHandler("file", new FileProtocolHandler); |
+ if (ftp_enabled_) { |
+ ftp_transaction_factory_.reset( |
+ new FtpNetworkLayer(context->host_resolver())); |
+ job_factory->SetProtocolHandler("ftp", |
+ new FtpProtocolHandler(ftp_transaction_factory_.get())); |
+ } |
+ storage->set_job_factory(job_factory); |
+ |
// TODO(willchan): Support sdch. |
return context; |