| 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
|
| deleted file mode 100644
|
| index 303dd1761bfd0312645c30b2e2733390f233effe..0000000000000000000000000000000000000000
|
| --- a/net/url_request/url_request_context_builder.cc
|
| +++ /dev/null
|
| @@ -1,419 +0,0 @@
|
| -// Copyright (c) 2012 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 "net/url_request/url_request_context_builder.h"
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/logging.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "base/threading/thread.h"
|
| -#include "net/base/cache_type.h"
|
| -#include "net/base/net_errors.h"
|
| -#include "net/base/network_delegate_impl.h"
|
| -#include "net/cert/cert_verifier.h"
|
| -#include "net/cookies/cookie_monster.h"
|
| -#include "net/dns/host_resolver.h"
|
| -#include "net/ftp/ftp_network_layer.h"
|
| -#include "net/http/http_auth_handler_factory.h"
|
| -#include "net/http/http_cache.h"
|
| -#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/transport_security_persister.h"
|
| -#include "net/http/transport_security_state.h"
|
| -#include "net/ssl/channel_id_service.h"
|
| -#include "net/ssl/default_channel_id_store.h"
|
| -#include "net/ssl/ssl_config_service_defaults.h"
|
| -#include "net/url_request/data_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"
|
| -#include "net/url_request/url_request_throttler_manager.h"
|
| -
|
| -#if !defined(DISABLE_FILE_SUPPORT)
|
| -#include "net/url_request/file_protocol_handler.h"
|
| -#endif
|
| -
|
| -#if !defined(DISABLE_FTP_SUPPORT)
|
| -#include "net/url_request/ftp_protocol_handler.h"
|
| -#endif
|
| -
|
| -namespace net {
|
| -
|
| -namespace {
|
| -
|
| -class BasicNetworkDelegate : public NetworkDelegateImpl {
|
| - public:
|
| - BasicNetworkDelegate() {}
|
| - ~BasicNetworkDelegate() override {}
|
| -
|
| - private:
|
| - int OnBeforeURLRequest(URLRequest* request,
|
| - const CompletionCallback& callback,
|
| - GURL* new_url) override {
|
| - return OK;
|
| - }
|
| -
|
| - int OnBeforeSendHeaders(URLRequest* request,
|
| - const CompletionCallback& callback,
|
| - HttpRequestHeaders* headers) override {
|
| - return OK;
|
| - }
|
| -
|
| - void OnSendHeaders(URLRequest* request,
|
| - const HttpRequestHeaders& headers) override {}
|
| -
|
| - int OnHeadersReceived(
|
| - URLRequest* request,
|
| - const CompletionCallback& callback,
|
| - const HttpResponseHeaders* original_response_headers,
|
| - scoped_refptr<HttpResponseHeaders>* override_response_headers,
|
| - GURL* allowed_unsafe_redirect_url) override {
|
| - return OK;
|
| - }
|
| -
|
| - void OnBeforeRedirect(URLRequest* request,
|
| - const GURL& new_location) override {}
|
| -
|
| - void OnResponseStarted(URLRequest* request) override {}
|
| -
|
| - void OnRawBytesRead(const URLRequest& request, int bytes_read) override {}
|
| -
|
| - void OnCompleted(URLRequest* request, bool started) override {}
|
| -
|
| - void OnURLRequestDestroyed(URLRequest* request) override {}
|
| -
|
| - void OnPACScriptError(int line_number, const base::string16& error) override {
|
| - }
|
| -
|
| - NetworkDelegate::AuthRequiredResponse OnAuthRequired(
|
| - URLRequest* request,
|
| - const AuthChallengeInfo& auth_info,
|
| - const AuthCallback& callback,
|
| - AuthCredentials* credentials) override {
|
| - return NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION;
|
| - }
|
| -
|
| - bool OnCanGetCookies(const URLRequest& request,
|
| - const CookieList& cookie_list) override {
|
| - return true;
|
| - }
|
| -
|
| - bool OnCanSetCookie(const URLRequest& request,
|
| - const std::string& cookie_line,
|
| - CookieOptions* options) override {
|
| - return true;
|
| - }
|
| -
|
| - bool OnCanAccessFile(const net::URLRequest& request,
|
| - const base::FilePath& path) const override {
|
| - return true;
|
| - }
|
| -
|
| - bool OnCanThrottleRequest(const URLRequest& request) const override {
|
| - // Returning true will only enable throttling if there's also a
|
| - // URLRequestThrottlerManager, which there isn't, by default.
|
| - return true;
|
| - }
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BasicNetworkDelegate);
|
| -};
|
| -
|
| -class BasicURLRequestContext : public URLRequestContext {
|
| - public:
|
| - BasicURLRequestContext()
|
| - : storage_(this) {}
|
| -
|
| - URLRequestContextStorage* storage() {
|
| - return &storage_;
|
| - }
|
| -
|
| - base::Thread* GetCacheThread() {
|
| - if (!cache_thread_) {
|
| - cache_thread_.reset(new base::Thread("Network Cache Thread"));
|
| - cache_thread_->StartWithOptions(
|
| - base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
|
| - }
|
| - return cache_thread_.get();
|
| - }
|
| -
|
| - base::Thread* GetFileThread() {
|
| - if (!file_thread_) {
|
| - file_thread_.reset(new base::Thread("Network File Thread"));
|
| - file_thread_->StartWithOptions(
|
| - base::Thread::Options(base::MessageLoop::TYPE_DEFAULT, 0));
|
| - }
|
| - return file_thread_.get();
|
| - }
|
| -
|
| - void set_transport_security_persister(
|
| - scoped_ptr<TransportSecurityPersister> transport_security_persister) {
|
| - transport_security_persister = transport_security_persister.Pass();
|
| - }
|
| -
|
| - protected:
|
| - ~BasicURLRequestContext() override { AssertNoURLRequests(); }
|
| -
|
| - private:
|
| - // Threads should be torn down last.
|
| - scoped_ptr<base::Thread> cache_thread_;
|
| - scoped_ptr<base::Thread> file_thread_;
|
| -
|
| - URLRequestContextStorage storage_;
|
| - scoped_ptr<TransportSecurityPersister> transport_security_persister_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(BasicURLRequestContext);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -URLRequestContextBuilder::HttpCacheParams::HttpCacheParams()
|
| - : type(IN_MEMORY),
|
| - max_size(0) {}
|
| -URLRequestContextBuilder::HttpCacheParams::~HttpCacheParams() {}
|
| -
|
| -URLRequestContextBuilder::HttpNetworkSessionParams::HttpNetworkSessionParams()
|
| - : ignore_certificate_errors(false),
|
| - host_mapping_rules(NULL),
|
| - testing_fixed_http_port(0),
|
| - testing_fixed_https_port(0),
|
| - next_protos(NextProtosDefaults()),
|
| - use_alternate_protocols(true),
|
| - enable_quic(false) {
|
| -}
|
| -
|
| -URLRequestContextBuilder::HttpNetworkSessionParams::~HttpNetworkSessionParams()
|
| -{}
|
| -
|
| -URLRequestContextBuilder::SchemeFactory::SchemeFactory(
|
| - const std::string& auth_scheme,
|
| - net::HttpAuthHandlerFactory* auth_handler_factory)
|
| - : scheme(auth_scheme), factory(auth_handler_factory) {
|
| -}
|
| -
|
| -URLRequestContextBuilder::SchemeFactory::~SchemeFactory() {
|
| -}
|
| -
|
| -URLRequestContextBuilder::URLRequestContextBuilder()
|
| - : data_enabled_(false),
|
| -#if !defined(DISABLE_FILE_SUPPORT)
|
| - file_enabled_(false),
|
| -#endif
|
| -#if !defined(DISABLE_FTP_SUPPORT)
|
| - ftp_enabled_(false),
|
| -#endif
|
| - http_cache_enabled_(true),
|
| - throttling_enabled_(false) {
|
| -}
|
| -
|
| -URLRequestContextBuilder::~URLRequestContextBuilder() {}
|
| -
|
| -void URLRequestContextBuilder::EnableHttpCache(const HttpCacheParams& params) {
|
| - http_cache_enabled_ = true;
|
| - http_cache_params_ = params;
|
| -}
|
| -
|
| -void URLRequestContextBuilder::DisableHttpCache() {
|
| - http_cache_enabled_ = false;
|
| - http_cache_params_ = HttpCacheParams();
|
| -}
|
| -
|
| -void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled,
|
| - bool quic_enabled) {
|
| - http_network_session_params_.next_protos =
|
| - NextProtosWithSpdyAndQuic(spdy_enabled, quic_enabled);
|
| - http_network_session_params_.enable_quic = quic_enabled;
|
| -}
|
| -
|
| -void URLRequestContextBuilder::SetCookieAndChannelIdStores(
|
| - const scoped_refptr<CookieStore>& cookie_store,
|
| - scoped_ptr<ChannelIDService> channel_id_service) {
|
| - DCHECK(cookie_store);
|
| - cookie_store_ = cookie_store;
|
| - channel_id_service_ = channel_id_service.Pass();
|
| -}
|
| -
|
| -URLRequestContext* URLRequestContextBuilder::Build() {
|
| - BasicURLRequestContext* context = new BasicURLRequestContext;
|
| - URLRequestContextStorage* storage = context->storage();
|
| -
|
| - storage->set_http_user_agent_settings(new StaticHttpUserAgentSettings(
|
| - accept_language_, user_agent_));
|
| -
|
| - if (!network_delegate_)
|
| - network_delegate_.reset(new BasicNetworkDelegate);
|
| - NetworkDelegate* network_delegate = network_delegate_.release();
|
| - storage->set_network_delegate(network_delegate);
|
| -
|
| - if (net_log_) {
|
| - storage->set_net_log(net_log_.release());
|
| - } else {
|
| - storage->set_net_log(new net::NetLog);
|
| - }
|
| -
|
| - if (!host_resolver_) {
|
| - host_resolver_ = net::HostResolver::CreateDefaultResolver(
|
| - context->net_log());
|
| - }
|
| - storage->set_host_resolver(host_resolver_.Pass());
|
| -
|
| - if (!proxy_service_) {
|
| - // TODO(willchan): Switch to using this code when
|
| - // ProxyService::CreateSystemProxyConfigService()'s signature doesn't suck.
|
| - #if defined(OS_LINUX) || defined(OS_ANDROID)
|
| - ProxyConfigService* proxy_config_service = proxy_config_service_.release();
|
| - #else
|
| - ProxyConfigService* proxy_config_service = NULL;
|
| - if (proxy_config_service_) {
|
| - proxy_config_service = proxy_config_service_.release();
|
| - } else {
|
| - proxy_config_service =
|
| - ProxyService::CreateSystemProxyConfigService(
|
| - base::ThreadTaskRunnerHandle::Get().get(),
|
| - context->GetFileThread()->task_runner());
|
| - }
|
| - #endif // defined(OS_LINUX) || defined(OS_ANDROID)
|
| - proxy_service_.reset(
|
| - ProxyService::CreateUsingSystemProxyResolver(
|
| - proxy_config_service,
|
| - 0, // This results in using the default value.
|
| - context->net_log()));
|
| - }
|
| - storage->set_proxy_service(proxy_service_.release());
|
| -
|
| - storage->set_ssl_config_service(new net::SSLConfigServiceDefaults);
|
| - HttpAuthHandlerRegistryFactory* http_auth_handler_registry_factory =
|
| - net::HttpAuthHandlerRegistryFactory::CreateDefault(
|
| - context->host_resolver());
|
| - for (size_t i = 0; i < extra_http_auth_handlers_.size(); ++i) {
|
| - http_auth_handler_registry_factory->RegisterSchemeFactory(
|
| - extra_http_auth_handlers_[i].scheme,
|
| - extra_http_auth_handlers_[i].factory);
|
| - }
|
| - storage->set_http_auth_handler_factory(http_auth_handler_registry_factory);
|
| -
|
| - if (cookie_store_) {
|
| - storage->set_cookie_store(cookie_store_.get());
|
| - storage->set_channel_id_service(channel_id_service_.Pass());
|
| - } else {
|
| - storage->set_cookie_store(new CookieMonster(NULL, NULL));
|
| - // TODO(mmenke): This always creates a file thread, even when it ends up
|
| - // not being used. Consider lazily creating the thread.
|
| - storage->set_channel_id_service(make_scoped_ptr(
|
| - new ChannelIDService(new DefaultChannelIDStore(NULL),
|
| - context->GetFileThread()->message_loop_proxy())));
|
| - }
|
| -
|
| - storage->set_transport_security_state(new net::TransportSecurityState());
|
| - if (!transport_security_persister_path_.empty()) {
|
| - context->set_transport_security_persister(
|
| - make_scoped_ptr<TransportSecurityPersister>(
|
| - new TransportSecurityPersister(
|
| - context->transport_security_state(),
|
| - transport_security_persister_path_,
|
| - context->GetFileThread()->message_loop_proxy(),
|
| - false)));
|
| - }
|
| -
|
| - storage->set_http_server_properties(
|
| - scoped_ptr<net::HttpServerProperties>(
|
| - new net::HttpServerPropertiesImpl()));
|
| - storage->set_cert_verifier(CertVerifier::CreateDefault());
|
| -
|
| - if (throttling_enabled_)
|
| - storage->set_throttler_manager(new URLRequestThrottlerManager());
|
| -
|
| - net::HttpNetworkSession::Params network_session_params;
|
| - network_session_params.host_resolver = context->host_resolver();
|
| - network_session_params.cert_verifier = context->cert_verifier();
|
| - network_session_params.transport_security_state =
|
| - context->transport_security_state();
|
| - network_session_params.proxy_service = context->proxy_service();
|
| - network_session_params.ssl_config_service =
|
| - context->ssl_config_service();
|
| - network_session_params.http_auth_handler_factory =
|
| - context->http_auth_handler_factory();
|
| - network_session_params.network_delegate = network_delegate;
|
| - network_session_params.http_server_properties =
|
| - context->http_server_properties();
|
| - network_session_params.net_log = context->net_log();
|
| -
|
| - network_session_params.ignore_certificate_errors =
|
| - http_network_session_params_.ignore_certificate_errors;
|
| - network_session_params.host_mapping_rules =
|
| - http_network_session_params_.host_mapping_rules;
|
| - network_session_params.testing_fixed_http_port =
|
| - http_network_session_params_.testing_fixed_http_port;
|
| - network_session_params.testing_fixed_https_port =
|
| - http_network_session_params_.testing_fixed_https_port;
|
| - network_session_params.use_alternate_protocols =
|
| - http_network_session_params_.use_alternate_protocols;
|
| - network_session_params.trusted_spdy_proxy =
|
| - http_network_session_params_.trusted_spdy_proxy;
|
| - network_session_params.next_protos = http_network_session_params_.next_protos;
|
| - network_session_params.enable_quic = http_network_session_params_.enable_quic;
|
| - network_session_params.quic_connection_options =
|
| - http_network_session_params_.quic_connection_options;
|
| -
|
| - HttpTransactionFactory* http_transaction_factory = NULL;
|
| - if (http_cache_enabled_) {
|
| - network_session_params.channel_id_service =
|
| - context->channel_id_service();
|
| - HttpCache::BackendFactory* http_cache_backend = NULL;
|
| - if (http_cache_params_.type == HttpCacheParams::DISK) {
|
| - http_cache_backend = new HttpCache::DefaultBackend(
|
| - DISK_CACHE,
|
| - net::CACHE_BACKEND_DEFAULT,
|
| - http_cache_params_.path,
|
| - http_cache_params_.max_size,
|
| - context->GetCacheThread()->task_runner());
|
| - } else {
|
| - http_cache_backend =
|
| - HttpCache::DefaultBackend::InMemory(http_cache_params_.max_size);
|
| - }
|
| -
|
| - http_transaction_factory = new HttpCache(
|
| - network_session_params, http_cache_backend);
|
| - } else {
|
| - scoped_refptr<net::HttpNetworkSession> network_session(
|
| - new net::HttpNetworkSession(network_session_params));
|
| -
|
| - http_transaction_factory = new HttpNetworkLayer(network_session.get());
|
| - }
|
| - storage->set_http_transaction_factory(http_transaction_factory);
|
| -
|
| - URLRequestJobFactoryImpl* job_factory = new URLRequestJobFactoryImpl;
|
| - if (data_enabled_)
|
| - job_factory->SetProtocolHandler("data", new DataProtocolHandler);
|
| -
|
| -#if !defined(DISABLE_FILE_SUPPORT)
|
| - if (file_enabled_) {
|
| - job_factory->SetProtocolHandler(
|
| - "file",
|
| - new FileProtocolHandler(context->GetFileThread()->message_loop_proxy()));
|
| - }
|
| -#endif // !defined(DISABLE_FILE_SUPPORT)
|
| -
|
| -#if !defined(DISABLE_FTP_SUPPORT)
|
| - if (ftp_enabled_) {
|
| - ftp_transaction_factory_.reset(
|
| - new FtpNetworkLayer(context->host_resolver()));
|
| - job_factory->SetProtocolHandler("ftp",
|
| - new FtpProtocolHandler(ftp_transaction_factory_.get()));
|
| - }
|
| -#endif // !defined(DISABLE_FTP_SUPPORT)
|
| -
|
| - storage->set_job_factory(job_factory);
|
| -
|
| - // TODO(willchan): Support sdch.
|
| -
|
| - return context;
|
| -}
|
| -
|
| -} // namespace net
|
|
|