OLD | NEW |
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_impl_io_data.h" | 5 #include "chrome/browser/profiles/profile_impl_io_data.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 io_data_->ShutdownOnUIThread(); | 67 io_data_->ShutdownOnUIThread(); |
68 } | 68 } |
69 | 69 |
70 void ProfileImplIOData::Handle::Init( | 70 void ProfileImplIOData::Handle::Init( |
71 const base::FilePath& cookie_path, | 71 const base::FilePath& cookie_path, |
72 const base::FilePath& server_bound_cert_path, | 72 const base::FilePath& server_bound_cert_path, |
73 const base::FilePath& cache_path, | 73 const base::FilePath& cache_path, |
74 int cache_max_size, | 74 int cache_max_size, |
75 const base::FilePath& media_cache_path, | 75 const base::FilePath& media_cache_path, |
76 int media_cache_max_size, | 76 int media_cache_max_size, |
77 const base::FilePath& extensions_cookie_path, | 77 const base::FilePath& extension_cookie_path, |
78 const base::FilePath& profile_path, | 78 const base::FilePath& profile_path, |
79 const base::FilePath& infinite_cache_path, | 79 const base::FilePath& infinite_cache_path, |
80 chrome_browser_net::Predictor* predictor, | 80 chrome_browser_net::Predictor* predictor, |
81 bool restore_old_session_cookies, | 81 bool restore_old_session_cookies, |
82 quota::SpecialStoragePolicy* special_storage_policy) { | 82 quota::SpecialStoragePolicy* special_storage_policy) { |
83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
84 DCHECK(!io_data_->lazy_params_.get()); | 84 DCHECK(!io_data_->lazy_params_.get()); |
85 DCHECK(predictor); | 85 DCHECK(predictor); |
86 | 86 |
87 LazyParams* lazy_params = new LazyParams; | 87 LazyParams* lazy_params = new LazyParams; |
88 | 88 |
89 lazy_params->cookie_path = cookie_path; | 89 lazy_params->cookie_path = cookie_path; |
90 lazy_params->server_bound_cert_path = server_bound_cert_path; | 90 lazy_params->server_bound_cert_path = server_bound_cert_path; |
91 lazy_params->cache_path = cache_path; | 91 lazy_params->cache_path = cache_path; |
92 lazy_params->cache_max_size = cache_max_size; | 92 lazy_params->cache_max_size = cache_max_size; |
93 lazy_params->media_cache_path = media_cache_path; | 93 lazy_params->media_cache_path = media_cache_path; |
94 lazy_params->media_cache_max_size = media_cache_max_size; | 94 lazy_params->media_cache_max_size = media_cache_max_size; |
95 lazy_params->extensions_cookie_path = extensions_cookie_path; | 95 lazy_params->extension_cookie_path = extension_cookie_path; |
96 lazy_params->infinite_cache_path = infinite_cache_path; | 96 lazy_params->infinite_cache_path = infinite_cache_path; |
97 lazy_params->restore_old_session_cookies = restore_old_session_cookies; | 97 lazy_params->restore_old_session_cookies = restore_old_session_cookies; |
98 lazy_params->special_storage_policy = special_storage_policy; | 98 lazy_params->special_storage_policy = special_storage_policy; |
99 | 99 |
100 io_data_->lazy_params_.reset(lazy_params); | 100 io_data_->lazy_params_.reset(lazy_params); |
101 | 101 |
102 // Keep track of profile path and cache sizes separately so we can use them | 102 // Keep track of profile path and cache sizes separately so we can use them |
103 // on demand when creating storage isolated URLRequestContextGetters. | 103 // on demand when creating storage isolated URLRequestContextGetters. |
104 io_data_->profile_path_ = profile_path; | 104 io_data_->profile_path_ = profile_path; |
105 io_data_->app_cache_max_size_ = cache_max_size; | 105 io_data_->app_cache_max_size_ = cache_max_size; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 LazyInitialize(); | 166 LazyInitialize(); |
167 if (!media_request_context_getter_) { | 167 if (!media_request_context_getter_) { |
168 media_request_context_getter_ = | 168 media_request_context_getter_ = |
169 ChromeURLRequestContextGetter::CreateOriginalForMedia( | 169 ChromeURLRequestContextGetter::CreateOriginalForMedia( |
170 profile_, io_data_); | 170 profile_, io_data_); |
171 } | 171 } |
172 return media_request_context_getter_; | 172 return media_request_context_getter_; |
173 } | 173 } |
174 | 174 |
175 scoped_refptr<ChromeURLRequestContextGetter> | 175 scoped_refptr<ChromeURLRequestContextGetter> |
176 ProfileImplIOData::Handle::GetExtensionsRequestContextGetter() const { | |
177 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
178 LazyInitialize(); | |
179 if (!extensions_request_context_getter_) { | |
180 extensions_request_context_getter_ = | |
181 ChromeURLRequestContextGetter::CreateOriginalForExtensions( | |
182 profile_, io_data_); | |
183 } | |
184 return extensions_request_context_getter_; | |
185 } | |
186 | |
187 scoped_refptr<ChromeURLRequestContextGetter> | |
188 ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter( | 176 ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter( |
189 const base::FilePath& partition_path, | 177 const base::FilePath& partition_path, |
190 bool in_memory, | 178 bool in_memory, |
191 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 179 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
192 blob_protocol_handler, | 180 blob_protocol_handler, |
193 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 181 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
194 file_system_protocol_handler, | 182 file_system_protocol_handler, |
195 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 183 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
196 developer_protocol_handler, | 184 developer_protocol_handler, |
197 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 185 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 main_job_factory.Pass(), | 452 main_job_factory.Pass(), |
465 profile_params->protocol_handler_interceptor.Pass(), | 453 profile_params->protocol_handler_interceptor.Pass(), |
466 network_delegate(), | 454 network_delegate(), |
467 main_context->ftp_transaction_factory(), | 455 main_context->ftp_transaction_factory(), |
468 main_context->ftp_auth_cache()); | 456 main_context->ftp_auth_cache()); |
469 main_job_factory_.reset(new net::ProtocolInterceptJobFactory( | 457 main_job_factory_.reset(new net::ProtocolInterceptJobFactory( |
470 main_job_factory_.Pass(), developer_protocol_handler.Pass())); | 458 main_job_factory_.Pass(), developer_protocol_handler.Pass())); |
471 main_context->set_job_factory(main_job_factory_.get()); | 459 main_context->set_job_factory(main_job_factory_.get()); |
472 | 460 |
473 #if defined(ENABLE_EXTENSIONS) | 461 #if defined(ENABLE_EXTENSIONS) |
474 InitializeExtensionsRequestContext(profile_params); | 462 extension_cookie_store_ = |
| 463 new net::CookieMonster( |
| 464 new SQLitePersistentCookieStore( |
| 465 lazy_params_->extension_cookie_path, |
| 466 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), |
| 467 BrowserThread::GetBlockingPool()->GetSequencedTaskRunner( |
| 468 BrowserThread::GetBlockingPool()->GetSequenceToken()), |
| 469 lazy_params_->restore_old_session_cookies, NULL), NULL); |
475 #endif | 470 #endif |
476 | 471 |
477 // Create a media request context based on the main context, but using a | 472 // Create a media request context based on the main context, but using a |
478 // media cache. It shares the same job factory as the main context. | 473 // media cache. It shares the same job factory as the main context. |
479 StoragePartitionDescriptor details(profile_path_, false); | 474 StoragePartitionDescriptor details(profile_path_, false); |
480 media_request_context_.reset(InitializeMediaRequestContext(main_context, | 475 media_request_context_.reset(InitializeMediaRequestContext(main_context, |
481 details)); | 476 details)); |
482 | 477 |
483 lazy_params_.reset(); | 478 lazy_params_.reset(); |
484 } | 479 } |
485 | 480 |
486 void ProfileImplIOData:: | |
487 InitializeExtensionsRequestContext(ProfileParams* profile_params) const { | |
488 ChromeURLRequestContext* extensions_context = extensions_request_context(); | |
489 IOThread* const io_thread = profile_params->io_thread; | |
490 IOThread::Globals* const io_thread_globals = io_thread->globals(); | |
491 ApplyProfileParamsToContext(extensions_context); | |
492 | |
493 extensions_context->set_transport_security_state(transport_security_state()); | |
494 | |
495 extensions_context->set_net_log(io_thread->net_log()); | |
496 | |
497 extensions_context->set_throttler_manager( | |
498 io_thread_globals->throttler_manager.get()); | |
499 | |
500 net::CookieMonster* extensions_cookie_store = | |
501 new net::CookieMonster( | |
502 new SQLitePersistentCookieStore( | |
503 lazy_params_->extensions_cookie_path, | |
504 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO), | |
505 BrowserThread::GetBlockingPool()->GetSequencedTaskRunner( | |
506 BrowserThread::GetBlockingPool()->GetSequenceToken()), | |
507 lazy_params_->restore_old_session_cookies, NULL), NULL); | |
508 // Enable cookies for devtools and extension URLs. | |
509 const char* schemes[] = {chrome::kChromeDevToolsScheme, | |
510 extensions::kExtensionScheme}; | |
511 extensions_cookie_store->SetCookieableSchemes(schemes, 2); | |
512 extensions_context->set_cookie_store(extensions_cookie_store); | |
513 | |
514 #if !defined(DISABLE_FTP_SUPPORT) | |
515 DCHECK(ftp_factory_.get()); | |
516 extensions_context->set_ftp_transaction_factory(ftp_factory_.get()); | |
517 #endif // !defined(DISABLE_FTP_SUPPORT) | |
518 | |
519 scoped_ptr<net::URLRequestJobFactoryImpl> extensions_job_factory( | |
520 new net::URLRequestJobFactoryImpl()); | |
521 // TODO(shalev): The extensions_job_factory has a NULL NetworkDelegate. | |
522 // Without a network_delegate, this protocol handler will never | |
523 // handle file: requests, but as a side effect it makes | |
524 // job_factory::IsHandledProtocol return true, which prevents attempts to | |
525 // handle the protocol externally. We pass NULL in to | |
526 // SetUpJobFactory() to get this effect. | |
527 extensions_job_factory_ = SetUpJobFactoryDefaults( | |
528 extensions_job_factory.Pass(), | |
529 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory>(NULL), | |
530 NULL, | |
531 extensions_context->ftp_transaction_factory(), | |
532 extensions_context->ftp_auth_cache()); | |
533 extensions_context->set_job_factory(extensions_job_factory_.get()); | |
534 } | |
535 | |
536 ChromeURLRequestContext* | 481 ChromeURLRequestContext* |
537 ProfileImplIOData::InitializeAppRequestContext( | 482 ProfileImplIOData::InitializeAppRequestContext( |
538 ChromeURLRequestContext* main_context, | 483 ChromeURLRequestContext* main_context, |
539 const StoragePartitionDescriptor& partition_descriptor, | 484 const StoragePartitionDescriptor& partition_descriptor, |
540 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> | 485 scoped_ptr<ProtocolHandlerRegistry::JobInterceptorFactory> |
541 protocol_handler_interceptor, | 486 protocol_handler_interceptor, |
542 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 487 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
543 blob_protocol_handler, | 488 blob_protocol_handler, |
544 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> | 489 scoped_ptr<net::URLRequestJobFactory::ProtocolHandler> |
545 file_system_protocol_handler, | 490 file_system_protocol_handler, |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
758 const base::Closure& completion) { | 703 const base::Closure& completion) { |
759 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 704 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
760 DCHECK(initialized()); | 705 DCHECK(initialized()); |
761 | 706 |
762 DCHECK(transport_security_state()); | 707 DCHECK(transport_security_state()); |
763 // Completes synchronously. | 708 // Completes synchronously. |
764 transport_security_state()->DeleteAllDynamicDataSince(time); | 709 transport_security_state()->DeleteAllDynamicDataSince(time); |
765 DCHECK(http_server_properties_manager_); | 710 DCHECK(http_server_properties_manager_); |
766 http_server_properties_manager_->Clear(completion); | 711 http_server_properties_manager_->Clear(completion); |
767 } | 712 } |
OLD | NEW |