Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(166)

Side by Side Diff: chrome/browser/profiles/profile_io_data.cc

Issue 282103004: Rename ProtocolInterceptJobFactory and make it not use ProtocolHandlers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Response to jam's comments (And a merge) Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/profiles/profile_io_data.h" 5 #include "chrome/browser/profiles/profile_io_data.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 #include "net/http/http_util.h" 64 #include "net/http/http_util.h"
65 #include "net/http/transport_security_persister.h" 65 #include "net/http/transport_security_persister.h"
66 #include "net/proxy/proxy_config_service_fixed.h" 66 #include "net/proxy/proxy_config_service_fixed.h"
67 #include "net/proxy/proxy_script_fetcher_impl.h" 67 #include "net/proxy/proxy_script_fetcher_impl.h"
68 #include "net/proxy/proxy_service.h" 68 #include "net/proxy/proxy_service.h"
69 #include "net/ssl/client_cert_store.h" 69 #include "net/ssl/client_cert_store.h"
70 #include "net/ssl/server_bound_cert_service.h" 70 #include "net/ssl/server_bound_cert_service.h"
71 #include "net/url_request/data_protocol_handler.h" 71 #include "net/url_request/data_protocol_handler.h"
72 #include "net/url_request/file_protocol_handler.h" 72 #include "net/url_request/file_protocol_handler.h"
73 #include "net/url_request/ftp_protocol_handler.h" 73 #include "net/url_request/ftp_protocol_handler.h"
74 #include "net/url_request/protocol_intercept_job_factory.h"
75 #include "net/url_request/url_request.h" 74 #include "net/url_request/url_request.h"
76 #include "net/url_request/url_request_file_job.h" 75 #include "net/url_request/url_request_file_job.h"
76 #include "net/url_request/url_request_intercepting_job_factory.h"
77 #include "net/url_request/url_request_interceptor.h"
77 #include "net/url_request/url_request_job_factory_impl.h" 78 #include "net/url_request/url_request_job_factory_impl.h"
78 79
79 #if defined(ENABLE_CONFIGURATION_POLICY) 80 #if defined(ENABLE_CONFIGURATION_POLICY)
80 #include "chrome/browser/policy/cloud/policy_header_service_factory.h" 81 #include "chrome/browser/policy/cloud/policy_header_service_factory.h"
81 #include "chrome/browser/policy/policy_helpers.h" 82 #include "chrome/browser/policy/policy_helpers.h"
82 #include "components/policy/core/browser/url_blacklist_manager.h" 83 #include "components/policy/core/browser/url_blacklist_manager.h"
83 #include "components/policy/core/common/cloud/policy_header_io_helper.h" 84 #include "components/policy/core/common/cloud/policy_header_io_helper.h"
84 #include "components/policy/core/common/cloud/policy_header_service.h" 85 #include "components/policy/core/common/cloud/policy_header_service.h"
85 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" 86 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
86 #endif 87 #endif
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 if (!PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) 172 if (!PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir))
172 return false; 173 return false;
173 174
174 if (inspector_dir.empty()) 175 if (inspector_dir.empty())
175 return false; 176 return false;
176 177
177 *path = inspector_dir.AppendASCII(relative_path); 178 *path = inspector_dir.AppendASCII(relative_path);
178 return true; 179 return true;
179 } 180 }
180 181
181 class DebugDevToolsInterceptor 182 class DebugDevToolsInterceptor : public net::URLRequestInterceptor {
182 : public net::URLRequestJobFactory::ProtocolHandler {
183 public: 183 public:
184 DebugDevToolsInterceptor() {} 184 DebugDevToolsInterceptor() {}
185 virtual ~DebugDevToolsInterceptor() {} 185 virtual ~DebugDevToolsInterceptor() {}
186 186
187 virtual net::URLRequestJob* MaybeCreateJob( 187 // net::URLRequestInterceptor implementation.
188 virtual net::URLRequestJob* MaybeInterceptRequest(
188 net::URLRequest* request, 189 net::URLRequest* request,
189 net::NetworkDelegate* network_delegate) const OVERRIDE { 190 net::NetworkDelegate* network_delegate) const OVERRIDE {
190 base::FilePath path; 191 base::FilePath path;
191 if (IsSupportedDevToolsURL(request->url(), &path)) 192 if (IsSupportedDevToolsURL(request->url(), &path))
192 return new net::URLRequestFileJob( 193 return new net::URLRequestFileJob(
193 request, network_delegate, path, 194 request, network_delegate, path,
194 content::BrowserThread::GetBlockingPool()-> 195 content::BrowserThread::GetBlockingPool()->
195 GetTaskRunnerWithShutdownBehavior( 196 GetTaskRunnerWithShutdownBehavior(
196 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); 197 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN));
197 198
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
683 DCHECK(initialized_); 684 DCHECK(initialized_);
684 return extensions_request_context_.get(); 685 return extensions_request_context_.get();
685 } 686 }
686 687
687 ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext( 688 ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext(
688 ChromeURLRequestContext* main_context, 689 ChromeURLRequestContext* main_context,
689 const StoragePartitionDescriptor& partition_descriptor, 690 const StoragePartitionDescriptor& partition_descriptor,
690 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 691 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
691 protocol_handler_interceptor, 692 protocol_handler_interceptor,
692 content::ProtocolHandlerMap* protocol_handlers, 693 content::ProtocolHandlerMap* protocol_handlers,
693 content::ProtocolHandlerScopedVector protocol_interceptors) const { 694 content::URLRequestInterceptorScopedVector request_interceptors) const {
694 DCHECK(initialized_); 695 DCHECK(initialized_);
695 ChromeURLRequestContext* context = NULL; 696 ChromeURLRequestContext* context = NULL;
696 if (ContainsKey(app_request_context_map_, partition_descriptor)) { 697 if (ContainsKey(app_request_context_map_, partition_descriptor)) {
697 context = app_request_context_map_[partition_descriptor]; 698 context = app_request_context_map_[partition_descriptor];
698 } else { 699 } else {
699 context = 700 context =
700 AcquireIsolatedAppRequestContext(main_context, 701 AcquireIsolatedAppRequestContext(main_context,
701 partition_descriptor, 702 partition_descriptor,
702 protocol_handler_interceptor.Pass(), 703 protocol_handler_interceptor.Pass(),
703 protocol_handlers, 704 protocol_handlers,
704 protocol_interceptors.Pass()); 705 request_interceptors.Pass());
705 app_request_context_map_[partition_descriptor] = context; 706 app_request_context_map_[partition_descriptor] = context;
706 } 707 }
707 DCHECK(context); 708 DCHECK(context);
708 return context; 709 return context;
709 } 710 }
710 711
711 ChromeURLRequestContext* ProfileIOData::GetIsolatedMediaRequestContext( 712 ChromeURLRequestContext* ProfileIOData::GetIsolatedMediaRequestContext(
712 ChromeURLRequestContext* app_context, 713 ChromeURLRequestContext* app_context,
713 const StoragePartitionDescriptor& partition_descriptor) const { 714 const StoragePartitionDescriptor& partition_descriptor) const {
714 DCHECK(initialized_); 715 DCHECK(initialized_);
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 // The SSL session cache is partitioned by setting a string. This returns a 903 // The SSL session cache is partitioned by setting a string. This returns a
903 // unique string to partition the SSL session cache. Each time we create a 904 // unique string to partition the SSL session cache. Each time we create a
904 // new profile, we'll get a fresh SSL session cache which is separate from 905 // new profile, we'll get a fresh SSL session cache which is separate from
905 // the other profiles. 906 // the other profiles.
906 static unsigned ssl_session_cache_instance = 0; 907 static unsigned ssl_session_cache_instance = 0;
907 return base::StringPrintf("profile/%u", ssl_session_cache_instance++); 908 return base::StringPrintf("profile/%u", ssl_session_cache_instance++);
908 } 909 }
909 910
910 void ProfileIOData::Init( 911 void ProfileIOData::Init(
911 content::ProtocolHandlerMap* protocol_handlers, 912 content::ProtocolHandlerMap* protocol_handlers,
912 content::ProtocolHandlerScopedVector protocol_interceptors) const { 913 content::URLRequestInterceptorScopedVector request_interceptors) const {
913 // The basic logic is implemented here. The specific initialization 914 // The basic logic is implemented here. The specific initialization
914 // is done in InitializeInternal(), implemented by subtypes. Static helper 915 // is done in InitializeInternal(), implemented by subtypes. Static helper
915 // functions have been provided to assist in common operations. 916 // functions have been provided to assist in common operations.
916 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 917 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
917 DCHECK(!initialized_); 918 DCHECK(!initialized_);
918 919
919 startup_metric_utils::ScopedSlowStartupUMA 920 startup_metric_utils::ScopedSlowStartupUMA
920 scoped_timer("Startup.SlowStartupProfileIODataInit"); 921 scoped_timer("Startup.SlowStartupProfileIODataInit");
921 922
922 // TODO(jhawkins): Remove once crbug.com/102004 is fixed. 923 // TODO(jhawkins): Remove once crbug.com/102004 is fixed.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 } else { 1002 } else {
1002 main_request_context_->set_cert_verifier( 1003 main_request_context_->set_cert_verifier(
1003 new net::MultiThreadedCertVerifier(verify_proc.get())); 1004 new net::MultiThreadedCertVerifier(verify_proc.get()));
1004 } 1005 }
1005 #else 1006 #else
1006 main_request_context_->set_cert_verifier( 1007 main_request_context_->set_cert_verifier(
1007 io_thread_globals->cert_verifier.get()); 1008 io_thread_globals->cert_verifier.get());
1008 #endif 1009 #endif
1009 1010
1010 InitializeInternal( 1011 InitializeInternal(
1011 profile_params_.get(), protocol_handlers, protocol_interceptors.Pass()); 1012 profile_params_.get(), protocol_handlers, request_interceptors.Pass());
1012 1013
1013 profile_params_.reset(); 1014 profile_params_.reset();
1014 initialized_ = true; 1015 initialized_ = true;
1015 } 1016 }
1016 1017
1017 void ProfileIOData::ApplyProfileParamsToContext( 1018 void ProfileIOData::ApplyProfileParamsToContext(
1018 ChromeURLRequestContext* context) const { 1019 ChromeURLRequestContext* context) const {
1019 context->set_http_user_agent_settings( 1020 context->set_http_user_agent_settings(
1020 chrome_http_user_agent_settings_.get()); 1021 chrome_http_user_agent_settings_.get());
1021 context->set_ssl_config_service(profile_params_->ssl_config_service.get()); 1022 context->set_ssl_config_service(profile_params_->ssl_config_service.get());
1022 } 1023 }
1023 1024
1024 scoped_ptr<net::URLRequestJobFactory> ProfileIOData::SetUpJobFactoryDefaults( 1025 scoped_ptr<net::URLRequestJobFactory> ProfileIOData::SetUpJobFactoryDefaults(
1025 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory, 1026 scoped_ptr<net::URLRequestJobFactoryImpl> job_factory,
1026 content::ProtocolHandlerScopedVector protocol_interceptors, 1027 content::URLRequestInterceptorScopedVector request_interceptors,
1027 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 1028 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
1028 protocol_handler_interceptor, 1029 protocol_handler_interceptor,
1029 net::NetworkDelegate* network_delegate, 1030 net::NetworkDelegate* network_delegate,
1030 net::FtpTransactionFactory* ftp_transaction_factory) const { 1031 net::FtpTransactionFactory* ftp_transaction_factory) const {
1031 // NOTE(willchan): Keep these protocol handlers in sync with 1032 // NOTE(willchan): Keep these protocol handlers in sync with
1032 // ProfileIOData::IsHandledProtocol(). 1033 // ProfileIOData::IsHandledProtocol().
1033 bool set_protocol = job_factory->SetProtocolHandler( 1034 bool set_protocol = job_factory->SetProtocolHandler(
1034 url::kFileScheme, 1035 url::kFileScheme,
1035 new net::FileProtocolHandler( 1036 new net::FileProtocolHandler(
1036 content::BrowserThread::GetBlockingPool()-> 1037 content::BrowserThread::GetBlockingPool()->
(...skipping 28 matching lines...) Expand all
1065 job_factory->SetProtocolHandler( 1066 job_factory->SetProtocolHandler(
1066 content::kAboutScheme, new chrome_browser_net::AboutProtocolHandler()); 1067 content::kAboutScheme, new chrome_browser_net::AboutProtocolHandler());
1067 #if !defined(DISABLE_FTP_SUPPORT) 1068 #if !defined(DISABLE_FTP_SUPPORT)
1068 DCHECK(ftp_transaction_factory); 1069 DCHECK(ftp_transaction_factory);
1069 job_factory->SetProtocolHandler( 1070 job_factory->SetProtocolHandler(
1070 url::kFtpScheme, 1071 url::kFtpScheme,
1071 new net::FtpProtocolHandler(ftp_transaction_factory)); 1072 new net::FtpProtocolHandler(ftp_transaction_factory));
1072 #endif // !defined(DISABLE_FTP_SUPPORT) 1073 #endif // !defined(DISABLE_FTP_SUPPORT)
1073 1074
1074 #if defined(DEBUG_DEVTOOLS) 1075 #if defined(DEBUG_DEVTOOLS)
1075 protocol_interceptors.push_back(new DebugDevToolsInterceptor); 1076 request_interceptors.push_back(new DebugDevToolsInterceptor);
1076 #endif 1077 #endif
1077 1078
1078 // Set up interceptors in the reverse order. 1079 // Set up interceptors in the reverse order.
1079 scoped_ptr<net::URLRequestJobFactory> top_job_factory = 1080 scoped_ptr<net::URLRequestJobFactory> top_job_factory =
1080 job_factory.PassAs<net::URLRequestJobFactory>(); 1081 job_factory.PassAs<net::URLRequestJobFactory>();
1081 for (content::ProtocolHandlerScopedVector::reverse_iterator i = 1082 for (content::URLRequestInterceptorScopedVector::reverse_iterator i =
1082 protocol_interceptors.rbegin(); 1083 request_interceptors.rbegin();
1083 i != protocol_interceptors.rend(); 1084 i != request_interceptors.rend();
1084 ++i) { 1085 ++i) {
1085 top_job_factory.reset(new net::ProtocolInterceptJobFactory( 1086 top_job_factory.reset(new net::URLRequestInterceptingJobFactory(
1086 top_job_factory.Pass(), make_scoped_ptr(*i))); 1087 top_job_factory.Pass(), make_scoped_ptr(*i)));
1087 } 1088 }
1088 protocol_interceptors.weak_clear(); 1089 request_interceptors.weak_clear();
1089 1090
1090 if (protocol_handler_interceptor) { 1091 if (protocol_handler_interceptor) {
1091 protocol_handler_interceptor->Chain(top_job_factory.Pass()); 1092 protocol_handler_interceptor->Chain(top_job_factory.Pass());
1092 return protocol_handler_interceptor.PassAs<net::URLRequestJobFactory>(); 1093 return protocol_handler_interceptor.PassAs<net::URLRequestJobFactory>();
1093 } else { 1094 } else {
1094 return top_job_factory.Pass(); 1095 return top_job_factory.Pass();
1095 } 1096 }
1096 } 1097 }
1097 1098
1098 void ProfileIOData::ShutdownOnUIThread() { 1099 void ProfileIOData::ShutdownOnUIThread() {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1169 void ProfileIOData::SetCookieSettingsForTesting( 1170 void ProfileIOData::SetCookieSettingsForTesting(
1170 CookieSettings* cookie_settings) { 1171 CookieSettings* cookie_settings) {
1171 DCHECK(!cookie_settings_.get()); 1172 DCHECK(!cookie_settings_.get());
1172 cookie_settings_ = cookie_settings; 1173 cookie_settings_ = cookie_settings;
1173 } 1174 }
1174 1175
1175 void ProfileIOData::set_signin_names_for_testing( 1176 void ProfileIOData::set_signin_names_for_testing(
1176 SigninNamesOnIOThread* signin_names) { 1177 SigninNamesOnIOThread* signin_names) {
1177 signin_names_.reset(signin_names); 1178 signin_names_.reset(signin_names);
1178 } 1179 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_io_data.h ('k') | chrome/browser/ui/app_list/test/fake_profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698