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

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

Issue 12546016: Remove the Extensions URLRequestContext (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: android webview init fix merged in. Created 7 years, 3 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 18 matching lines...) Expand all
29 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 29 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
30 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" 30 #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h"
31 #include "chrome/browser/download/download_service.h" 31 #include "chrome/browser/download/download_service.h"
32 #include "chrome/browser/download/download_service_factory.h" 32 #include "chrome/browser/download/download_service_factory.h"
33 #include "chrome/browser/extensions/extension_info_map.h" 33 #include "chrome/browser/extensions/extension_info_map.h"
34 #include "chrome/browser/extensions/extension_protocols.h" 34 #include "chrome/browser/extensions/extension_protocols.h"
35 #include "chrome/browser/extensions/extension_resource_protocols.h" 35 #include "chrome/browser/extensions/extension_resource_protocols.h"
36 #include "chrome/browser/extensions/extension_system.h" 36 #include "chrome/browser/extensions/extension_system.h"
37 #include "chrome/browser/io_thread.h" 37 #include "chrome/browser/io_thread.h"
38 #include "chrome/browser/net/about_protocol_handler.h" 38 #include "chrome/browser/net/about_protocol_handler.h"
39 #include "chrome/browser/net/chrome_cookie_notification_details.h"
40 #include "chrome/browser/net/chrome_fraudulent_certificate_reporter.h" 39 #include "chrome/browser/net/chrome_fraudulent_certificate_reporter.h"
41 #include "chrome/browser/net/chrome_http_user_agent_settings.h" 40 #include "chrome/browser/net/chrome_http_user_agent_settings.h"
42 #include "chrome/browser/net/chrome_net_log.h" 41 #include "chrome/browser/net/chrome_net_log.h"
43 #include "chrome/browser/net/chrome_network_delegate.h" 42 #include "chrome/browser/net/chrome_network_delegate.h"
44 #include "chrome/browser/net/evicted_domain_cookie_counter.h" 43 #include "chrome/browser/net/evicted_domain_cookie_counter.h"
45 #include "chrome/browser/net/load_time_stats.h" 44 #include "chrome/browser/net/load_time_stats.h"
46 #include "chrome/browser/net/proxy_service_factory.h" 45 #include "chrome/browser/net/proxy_service_factory.h"
47 #include "chrome/browser/net/resource_prefetch_predictor_observer.h" 46 #include "chrome/browser/net/resource_prefetch_predictor_observer.h"
48 #include "chrome/browser/net/transport_security_persister.h" 47 #include "chrome/browser/net/transport_security_persister.h"
49 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 48 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
50 #include "chrome/browser/policy/url_blacklist_manager.h" 49 #include "chrome/browser/policy/url_blacklist_manager.h"
51 #include "chrome/browser/predictors/resource_prefetch_predictor.h" 50 #include "chrome/browser/predictors/resource_prefetch_predictor.h"
52 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h" 51 #include "chrome/browser/predictors/resource_prefetch_predictor_factory.h"
53 #include "chrome/browser/profiles/profile.h" 52 #include "chrome/browser/profiles/profile.h"
54 #include "chrome/browser/profiles/profile_manager.h" 53 #include "chrome/browser/profiles/profile_manager.h"
55 #include "chrome/browser/signin/signin_names_io_thread.h" 54 #include "chrome/browser/signin/signin_names_io_thread.h"
56 #include "chrome/common/chrome_paths.h" 55 #include "chrome/common/chrome_paths.h"
57 #include "chrome/common/chrome_switches.h" 56 #include "chrome/common/chrome_switches.h"
58 #include "chrome/common/pref_names.h" 57 #include "chrome/common/pref_names.h"
59 #include "chrome/common/startup_metric_utils.h" 58 #include "chrome/common/startup_metric_utils.h"
60 #include "chrome/common/url_constants.h" 59 #include "chrome/common/url_constants.h"
61 #include "content/public/browser/browser_thread.h" 60 #include "content/public/browser/browser_thread.h"
62 #include "content/public/browser/host_zoom_map.h" 61 #include "content/public/browser/host_zoom_map.h"
63 #include "content/public/browser/notification_service.h" 62 #include "content/public/browser/notification_service.h"
64 #include "content/public/browser/resource_context.h" 63 #include "content/public/browser/resource_context.h"
65 #include "extensions/common/constants.h" 64 #include "extensions/common/constants.h"
66 #include "net/cert/cert_verifier.h" 65 #include "net/cert/cert_verifier.h"
67 #include "net/cookies/canonical_cookie.h" 66 #include "net/cookies/canonical_cookie.h"
68 #include "net/cookies/cookie_monster.h"
69 #include "net/http/http_transaction_factory.h" 67 #include "net/http/http_transaction_factory.h"
70 #include "net/http/http_util.h" 68 #include "net/http/http_util.h"
71 #include "net/proxy/proxy_config_service_fixed.h" 69 #include "net/proxy/proxy_config_service_fixed.h"
72 #include "net/proxy/proxy_script_fetcher_impl.h" 70 #include "net/proxy/proxy_script_fetcher_impl.h"
73 #include "net/proxy/proxy_service.h" 71 #include "net/proxy/proxy_service.h"
74 #include "net/ssl/server_bound_cert_service.h" 72 #include "net/ssl/server_bound_cert_service.h"
75 #include "net/url_request/data_protocol_handler.h" 73 #include "net/url_request/data_protocol_handler.h"
76 #include "net/url_request/file_protocol_handler.h" 74 #include "net/url_request/file_protocol_handler.h"
77 #include "net/url_request/ftp_protocol_handler.h" 75 #include "net/url_request/ftp_protocol_handler.h"
78 #include "net/url_request/protocol_intercept_job_factory.h" 76 #include "net/url_request/protocol_intercept_job_factory.h"
(...skipping 15 matching lines...) Expand all
94 #include "chrome/browser/policy/profile_policy_connector.h" 92 #include "chrome/browser/policy/profile_policy_connector.h"
95 #include "chrome/browser/policy/profile_policy_connector_factory.h" 93 #include "chrome/browser/policy/profile_policy_connector_factory.h"
96 #endif // defined(OS_CHROMEOS) 94 #endif // defined(OS_CHROMEOS)
97 95
98 using content::BrowserContext; 96 using content::BrowserContext;
99 using content::BrowserThread; 97 using content::BrowserThread;
100 using content::ResourceContext; 98 using content::ResourceContext;
101 99
102 namespace { 100 namespace {
103 101
104 // ----------------------------------------------------------------------------
105 // CookieMonster::Delegate implementation
106 // ----------------------------------------------------------------------------
107 class ChromeCookieMonsterDelegate : public net::CookieMonster::Delegate {
108 public:
109 explicit ChromeCookieMonsterDelegate(
110 const base::Callback<Profile*(void)>& profile_getter)
111 : profile_getter_(profile_getter) {
112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
113 }
114
115 // net::CookieMonster::Delegate implementation.
116 virtual void OnCookieChanged(
117 const net::CanonicalCookie& cookie,
118 bool removed,
119 net::CookieMonster::Delegate::ChangeCause cause) OVERRIDE {
120 BrowserThread::PostTask(
121 BrowserThread::UI, FROM_HERE,
122 base::Bind(&ChromeCookieMonsterDelegate::OnCookieChangedAsyncHelper,
123 this, cookie, removed, cause));
124 }
125
126 private:
127 virtual ~ChromeCookieMonsterDelegate() {}
128
129 void OnCookieChangedAsyncHelper(
130 const net::CanonicalCookie& cookie,
131 bool removed,
132 net::CookieMonster::Delegate::ChangeCause cause) {
133 Profile* profile = profile_getter_.Run();
134 if (profile) {
135 ChromeCookieDetails cookie_details(&cookie, removed, cause);
136 content::NotificationService::current()->Notify(
137 chrome::NOTIFICATION_COOKIE_CHANGED,
138 content::Source<Profile>(profile),
139 content::Details<ChromeCookieDetails>(&cookie_details));
140 }
141 }
142
143 const base::Callback<Profile*(void)> profile_getter_;
144 };
145
146 Profile* GetProfileOnUI(ProfileManager* profile_manager, Profile* profile) {
147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
148 DCHECK(profile);
149 if (profile_manager->IsValidProfile(profile))
150 return profile;
151 return NULL;
152 }
153
154 #if defined(DEBUG_DEVTOOLS) 102 #if defined(DEBUG_DEVTOOLS)
155 bool IsSupportedDevToolsURL(const GURL& url, base::FilePath* path) { 103 bool IsSupportedDevToolsURL(const GURL& url, base::FilePath* path) {
156 std::string bundled_path_prefix(chrome::kChromeUIDevToolsBundledPath); 104 std::string bundled_path_prefix(chrome::kChromeUIDevToolsBundledPath);
157 bundled_path_prefix = "/" + bundled_path_prefix + "/"; 105 bundled_path_prefix = "/" + bundled_path_prefix + "/";
158 106
159 if (!url.SchemeIs(chrome::kChromeDevToolsScheme) || 107 if (!url.SchemeIs(chrome::kChromeDevToolsScheme) ||
160 url.host() != chrome::kChromeUIDevToolsHost || 108 url.host() != chrome::kChromeUIDevToolsHost ||
161 !StartsWithASCII(url.path(), bundled_path_prefix, false)) { 109 !StartsWithASCII(url.path(), bundled_path_prefix, false)) {
162 return false; 110 return false;
163 } 111 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 PrefService* local_state_pref_service = g_browser_process->local_state(); 195 PrefService* local_state_pref_service = g_browser_process->local_state();
248 196
249 scoped_ptr<ProfileParams> params(new ProfileParams); 197 scoped_ptr<ProfileParams> params(new ProfileParams);
250 params->path = profile->GetPath(); 198 params->path = profile->GetPath();
251 199
252 params->io_thread = g_browser_process->io_thread(); 200 params->io_thread = g_browser_process->io_thread();
253 201
254 params->cookie_settings = CookieSettings::Factory::GetForProfile(profile); 202 params->cookie_settings = CookieSettings::Factory::GetForProfile(profile);
255 params->host_content_settings_map = profile->GetHostContentSettingsMap(); 203 params->host_content_settings_map = profile->GetHostContentSettingsMap();
256 params->ssl_config_service = profile->GetSSLConfigService(); 204 params->ssl_config_service = profile->GetSSLConfigService();
257 base::Callback<Profile*(void)> profile_getter =
258 base::Bind(&GetProfileOnUI, g_browser_process->profile_manager(),
259 profile);
260 params->cookie_monster_delegate =
261 new chrome_browser_net::EvictedDomainCookieCounter(
262 new ChromeCookieMonsterDelegate(profile_getter));
263 params->extension_info_map = 205 params->extension_info_map =
264 extensions::ExtensionSystem::Get(profile)->info_map(); 206 extensions::ExtensionSystem::Get(profile)->info_map();
265 207
266 if (predictors::ResourcePrefetchPredictor* predictor = 208 if (predictors::ResourcePrefetchPredictor* predictor =
267 predictors::ResourcePrefetchPredictorFactory::GetForProfile( 209 predictors::ResourcePrefetchPredictorFactory::GetForProfile(
268 profile)) { 210 profile)) {
269 resource_prefetch_predictor_observer_.reset( 211 resource_prefetch_predictor_observer_.reset(
270 new chrome_browser_net::ResourcePrefetchPredictorObserver(predictor)); 212 new chrome_browser_net::ResourcePrefetchPredictorObserver(predictor));
271 } 213 }
272 214
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 } 316 }
375 317
376 ProfileIOData::MediaRequestContext::~MediaRequestContext() {} 318 ProfileIOData::MediaRequestContext::~MediaRequestContext() {}
377 319
378 ProfileIOData::AppRequestContext::AppRequestContext( 320 ProfileIOData::AppRequestContext::AppRequestContext(
379 chrome_browser_net::LoadTimeStats* load_time_stats) 321 chrome_browser_net::LoadTimeStats* load_time_stats)
380 : ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_APP, 322 : ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_APP,
381 load_time_stats) { 323 load_time_stats) {
382 } 324 }
383 325
384 void ProfileIOData::AppRequestContext::SetCookieStore(
385 net::CookieStore* cookie_store) {
386 cookie_store_ = cookie_store;
387 set_cookie_store(cookie_store);
388 }
389
390 void ProfileIOData::AppRequestContext::SetHttpTransactionFactory( 326 void ProfileIOData::AppRequestContext::SetHttpTransactionFactory(
391 scoped_ptr<net::HttpTransactionFactory> http_factory) { 327 scoped_ptr<net::HttpTransactionFactory> http_factory) {
392 http_factory_ = http_factory.Pass(); 328 http_factory_ = http_factory.Pass();
393 set_http_transaction_factory(http_factory_.get()); 329 set_http_transaction_factory(http_factory_.get());
394 } 330 }
395 331
396 void ProfileIOData::AppRequestContext::SetJobFactory( 332 void ProfileIOData::AppRequestContext::SetJobFactory(
397 scoped_ptr<net::URLRequestJobFactory> job_factory) { 333 scoped_ptr<net::URLRequestJobFactory> job_factory) {
398 job_factory_ = job_factory.Pass(); 334 job_factory_ = job_factory.Pass();
399 set_job_factory(job_factory_.get()); 335 set_job_factory(job_factory_.get());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 ++it, ++current_context) { 402 ++it, ++current_context) {
467 media_context_cache[current_context] = it->second; 403 media_context_cache[current_context] = it->second;
468 memcpy(&media_context_vtable_cache[current_context], 404 memcpy(&media_context_vtable_cache[current_context],
469 static_cast<void*>(it->second), sizeof(void*)); 405 static_cast<void*>(it->second), sizeof(void*));
470 } 406 }
471 407
472 // TODO(ajwong): These AssertNoURLRequests() calls are unnecessary since they 408 // TODO(ajwong): These AssertNoURLRequests() calls are unnecessary since they
473 // are already done in the URLRequestContext destructor. 409 // are already done in the URLRequestContext destructor.
474 if (main_request_context_) 410 if (main_request_context_)
475 main_request_context_->AssertNoURLRequests(); 411 main_request_context_->AssertNoURLRequests();
476 if (extensions_request_context_)
477 extensions_request_context_->AssertNoURLRequests();
478 412
479 current_context = 0; 413 current_context = 0;
480 for (URLRequestContextMap::iterator it = app_request_context_map_.begin(); 414 for (URLRequestContextMap::iterator it = app_request_context_map_.begin();
481 it != app_request_context_map_.end(); ++it) { 415 it != app_request_context_map_.end(); ++it) {
482 if (current_context < kMaxCachedContexts) { 416 if (current_context < kMaxCachedContexts) {
483 CHECK_EQ(app_context_cache[current_context], it->second); 417 CHECK_EQ(app_context_cache[current_context], it->second);
484 memcpy(&tmp_vtable, static_cast<void*>(it->second), sizeof(void*)); 418 memcpy(&tmp_vtable, static_cast<void*>(it->second), sizeof(void*));
485 CHECK_EQ(app_context_vtable_cache[current_context], tmp_vtable); 419 CHECK_EQ(app_context_vtable_cache[current_context], tmp_vtable);
486 } 420 }
487 it->second->AssertNoURLRequests(); 421 it->second->AssertNoURLRequests();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 return main_request_context_.get(); 506 return main_request_context_.get();
573 } 507 }
574 508
575 ChromeURLRequestContext* ProfileIOData::GetMediaRequestContext() const { 509 ChromeURLRequestContext* ProfileIOData::GetMediaRequestContext() const {
576 DCHECK(initialized_); 510 DCHECK(initialized_);
577 ChromeURLRequestContext* context = AcquireMediaRequestContext(); 511 ChromeURLRequestContext* context = AcquireMediaRequestContext();
578 DCHECK(context); 512 DCHECK(context);
579 return context; 513 return context;
580 } 514 }
581 515
582 ChromeURLRequestContext* ProfileIOData::GetExtensionsRequestContext() const {
583 DCHECK(initialized_);
584 return extensions_request_context_.get();
585 }
586
587 ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext( 516 ChromeURLRequestContext* ProfileIOData::GetIsolatedAppRequestContext(
588 ChromeURLRequestContext* main_context, 517 ChromeURLRequestContext* main_context,
589 const StoragePartitionDescriptor& partition_descriptor, 518 const StoragePartitionDescriptor& partition_descriptor,
590 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> 519 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>
591 protocol_handler_interceptor, 520 protocol_handler_interceptor,
592 content::ProtocolHandlerMap* protocol_handlers) const { 521 content::ProtocolHandlerMap* protocol_handlers) const {
593 DCHECK(initialized_); 522 DCHECK(initialized_);
594 ChromeURLRequestContext* context = NULL; 523 ChromeURLRequestContext* context = NULL;
595 if (ContainsKey(app_request_context_map_, partition_descriptor)) { 524 if (ContainsKey(app_request_context_map_, partition_descriptor)) {
596 context = app_request_context_map_[partition_descriptor]; 525 context = app_request_context_map_[partition_descriptor];
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 685
757 IOThread* const io_thread = profile_params_->io_thread; 686 IOThread* const io_thread = profile_params_->io_thread;
758 IOThread::Globals* const io_thread_globals = io_thread->globals(); 687 IOThread::Globals* const io_thread_globals = io_thread->globals();
759 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); 688 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
760 load_time_stats_ = GetLoadTimeStats(io_thread_globals); 689 load_time_stats_ = GetLoadTimeStats(io_thread_globals);
761 690
762 // Create the common request contexts. 691 // Create the common request contexts.
763 main_request_context_.reset( 692 main_request_context_.reset(
764 new ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_MAIN, 693 new ChromeURLRequestContext(ChromeURLRequestContext::CONTEXT_TYPE_MAIN,
765 load_time_stats_)); 694 load_time_stats_));
766 extensions_request_context_.reset(
767 new ChromeURLRequestContext(
768 ChromeURLRequestContext::CONTEXT_TYPE_EXTENSIONS,
769 load_time_stats_));
770 695
771 ChromeNetworkDelegate* network_delegate = 696 ChromeNetworkDelegate* network_delegate =
772 new ChromeNetworkDelegate( 697 new ChromeNetworkDelegate(
773 io_thread_globals->extension_event_router_forwarder.get(), 698 io_thread_globals->extension_event_router_forwarder.get(),
774 &enable_referrers_); 699 &enable_referrers_);
775 network_delegate->set_extension_info_map( 700 network_delegate->set_extension_info_map(
776 profile_params_->extension_info_map.get()); 701 profile_params_->extension_info_map.get());
777 network_delegate->set_url_blacklist_manager(url_blacklist_manager_.get()); 702 network_delegate->set_url_blacklist_manager(url_blacklist_manager_.get());
778 network_delegate->set_profile(profile_params_->profile); 703 network_delegate->set_profile(profile_params_->profile);
779 network_delegate->set_cookie_settings(profile_params_->cookie_settings.get()); 704 network_delegate->set_cookie_settings(profile_params_->cookie_settings.get());
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 void ProfileIOData::SetCookieSettingsForTesting( 901 void ProfileIOData::SetCookieSettingsForTesting(
977 CookieSettings* cookie_settings) { 902 CookieSettings* cookie_settings) {
978 DCHECK(!cookie_settings_.get()); 903 DCHECK(!cookie_settings_.get());
979 cookie_settings_ = cookie_settings; 904 cookie_settings_ = cookie_settings;
980 } 905 }
981 906
982 void ProfileIOData::set_signin_names_for_testing( 907 void ProfileIOData::set_signin_names_for_testing(
983 SigninNamesOnIOThread* signin_names) { 908 SigninNamesOnIOThread* signin_names) {
984 signin_names_.reset(signin_names); 909 signin_names_.reset(signin_names);
985 } 910 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_io_data.h ('k') | chrome/browser/profiles/profile_loader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698