| 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 <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 } | 104 } |
| 105 | 105 |
| 106 } // namespace | 106 } // namespace |
| 107 | 107 |
| 108 using content::BrowserThread; | 108 using content::BrowserThread; |
| 109 | 109 |
| 110 ProfileImplIOData::Handle::Handle(Profile* profile) | 110 ProfileImplIOData::Handle::Handle(Profile* profile) |
| 111 : io_data_(new ProfileImplIOData), | 111 : io_data_(new ProfileImplIOData), |
| 112 profile_(profile), | 112 profile_(profile), |
| 113 initialized_(false) { | 113 initialized_(false) { |
| 114 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 114 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 115 DCHECK(profile); | 115 DCHECK(profile); |
| 116 } | 116 } |
| 117 | 117 |
| 118 ProfileImplIOData::Handle::~Handle() { | 118 ProfileImplIOData::Handle::~Handle() { |
| 119 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 119 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 120 if (io_data_->predictor_ != NULL) { | 120 if (io_data_->predictor_ != NULL) { |
| 121 // io_data_->predictor_ might be NULL if Init() was never called | 121 // io_data_->predictor_ might be NULL if Init() was never called |
| 122 // (i.e. we shut down before ProfileImpl::DoFinalInit() got called). | 122 // (i.e. we shut down before ProfileImpl::DoFinalInit() got called). |
| 123 bool save_prefs = true; | 123 bool save_prefs = true; |
| 124 #if defined(OS_CHROMEOS) | 124 #if defined(OS_CHROMEOS) |
| 125 save_prefs = !chromeos::ProfileHelper::IsSigninProfile(profile_); | 125 save_prefs = !chromeos::ProfileHelper::IsSigninProfile(profile_); |
| 126 #endif | 126 #endif |
| 127 if (save_prefs) | 127 if (save_prefs) |
| 128 io_data_->predictor_->SaveStateForNextStartupAndTrim(); | 128 io_data_->predictor_->SaveStateForNextStartupAndTrim(); |
| 129 io_data_->predictor_->ShutdownOnUIThread(); | 129 io_data_->predictor_->ShutdownOnUIThread(); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 147 int cache_max_size, | 147 int cache_max_size, |
| 148 const base::FilePath& media_cache_path, | 148 const base::FilePath& media_cache_path, |
| 149 int media_cache_max_size, | 149 int media_cache_max_size, |
| 150 const base::FilePath& extensions_cookie_path, | 150 const base::FilePath& extensions_cookie_path, |
| 151 const base::FilePath& profile_path, | 151 const base::FilePath& profile_path, |
| 152 chrome_browser_net::Predictor* predictor, | 152 chrome_browser_net::Predictor* predictor, |
| 153 content::CookieStoreConfig::SessionCookieMode session_cookie_mode, | 153 content::CookieStoreConfig::SessionCookieMode session_cookie_mode, |
| 154 storage::SpecialStoragePolicy* special_storage_policy, | 154 storage::SpecialStoragePolicy* special_storage_policy, |
| 155 scoped_ptr<domain_reliability::DomainReliabilityMonitor> | 155 scoped_ptr<domain_reliability::DomainReliabilityMonitor> |
| 156 domain_reliability_monitor) { | 156 domain_reliability_monitor) { |
| 157 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 157 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 158 DCHECK(!io_data_->lazy_params_); | 158 DCHECK(!io_data_->lazy_params_); |
| 159 DCHECK(predictor); | 159 DCHECK(predictor); |
| 160 | 160 |
| 161 LazyParams* lazy_params = new LazyParams(); | 161 LazyParams* lazy_params = new LazyParams(); |
| 162 | 162 |
| 163 lazy_params->cookie_path = cookie_path; | 163 lazy_params->cookie_path = cookie_path; |
| 164 lazy_params->channel_id_path = channel_id_path; | 164 lazy_params->channel_id_path = channel_id_path; |
| 165 lazy_params->cache_path = cache_path; | 165 lazy_params->cache_path = cache_path; |
| 166 lazy_params->cache_max_size = cache_max_size; | 166 lazy_params->cache_max_size = cache_max_size; |
| 167 lazy_params->media_cache_path = media_cache_path; | 167 lazy_params->media_cache_path = media_cache_path; |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 | 200 |
| 201 DataReductionProxyChromeSettingsFactory::GetForBrowserContext(profile_)-> | 201 DataReductionProxyChromeSettingsFactory::GetForBrowserContext(profile_)-> |
| 202 InitDataReductionProxySettings( | 202 InitDataReductionProxySettings( |
| 203 io_data_->data_reduction_proxy_io_data(), profile_->GetPrefs(), | 203 io_data_->data_reduction_proxy_io_data(), profile_->GetPrefs(), |
| 204 profile_->GetRequestContext(), | 204 profile_->GetRequestContext(), |
| 205 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)); | 205 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI)); |
| 206 } | 206 } |
| 207 | 207 |
| 208 content::ResourceContext* | 208 content::ResourceContext* |
| 209 ProfileImplIOData::Handle::GetResourceContext() const { | 209 ProfileImplIOData::Handle::GetResourceContext() const { |
| 210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 210 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 211 LazyInitialize(); | 211 LazyInitialize(); |
| 212 return GetResourceContextNoInit(); | 212 return GetResourceContextNoInit(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 content::ResourceContext* | 215 content::ResourceContext* |
| 216 ProfileImplIOData::Handle::GetResourceContextNoInit() const { | 216 ProfileImplIOData::Handle::GetResourceContextNoInit() const { |
| 217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 217 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 218 // Don't call LazyInitialize here, since the resource context is created at | 218 // Don't call LazyInitialize here, since the resource context is created at |
| 219 // the beginning of initalization and is used by some members while they're | 219 // the beginning of initalization and is used by some members while they're |
| 220 // being initialized (i.e. AppCacheService). | 220 // being initialized (i.e. AppCacheService). |
| 221 return io_data_->GetResourceContext(); | 221 return io_data_->GetResourceContext(); |
| 222 } | 222 } |
| 223 | 223 |
| 224 scoped_refptr<ChromeURLRequestContextGetter> | 224 scoped_refptr<ChromeURLRequestContextGetter> |
| 225 ProfileImplIOData::Handle::CreateMainRequestContextGetter( | 225 ProfileImplIOData::Handle::CreateMainRequestContextGetter( |
| 226 content::ProtocolHandlerMap* protocol_handlers, | 226 content::ProtocolHandlerMap* protocol_handlers, |
| 227 content::URLRequestInterceptorScopedVector request_interceptors, | 227 content::URLRequestInterceptorScopedVector request_interceptors, |
| 228 PrefService* local_state, | 228 PrefService* local_state, |
| 229 IOThread* io_thread) const { | 229 IOThread* io_thread) const { |
| 230 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 230 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 231 LazyInitialize(); | 231 LazyInitialize(); |
| 232 DCHECK(!main_request_context_getter_.get()); | 232 DCHECK(!main_request_context_getter_.get()); |
| 233 main_request_context_getter_ = ChromeURLRequestContextGetter::Create( | 233 main_request_context_getter_ = ChromeURLRequestContextGetter::Create( |
| 234 profile_, io_data_, protocol_handlers, request_interceptors.Pass()); | 234 profile_, io_data_, protocol_handlers, request_interceptors.Pass()); |
| 235 | 235 |
| 236 io_data_->predictor_ | 236 io_data_->predictor_ |
| 237 ->InitNetworkPredictor(profile_->GetPrefs(), | 237 ->InitNetworkPredictor(profile_->GetPrefs(), |
| 238 local_state, | 238 local_state, |
| 239 io_thread, | 239 io_thread, |
| 240 main_request_context_getter_.get(), | 240 main_request_context_getter_.get(), |
| 241 io_data_); | 241 io_data_); |
| 242 | 242 |
| 243 content::NotificationService::current()->Notify( | 243 content::NotificationService::current()->Notify( |
| 244 chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED, | 244 chrome::NOTIFICATION_PROFILE_URL_REQUEST_CONTEXT_GETTER_INITIALIZED, |
| 245 content::Source<Profile>(profile_), | 245 content::Source<Profile>(profile_), |
| 246 content::NotificationService::NoDetails()); | 246 content::NotificationService::NoDetails()); |
| 247 return main_request_context_getter_; | 247 return main_request_context_getter_; |
| 248 } | 248 } |
| 249 | 249 |
| 250 scoped_refptr<ChromeURLRequestContextGetter> | 250 scoped_refptr<ChromeURLRequestContextGetter> |
| 251 ProfileImplIOData::Handle::GetMediaRequestContextGetter() const { | 251 ProfileImplIOData::Handle::GetMediaRequestContextGetter() const { |
| 252 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 252 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 253 LazyInitialize(); | 253 LazyInitialize(); |
| 254 if (!media_request_context_getter_.get()) { | 254 if (!media_request_context_getter_.get()) { |
| 255 media_request_context_getter_ = | 255 media_request_context_getter_ = |
| 256 ChromeURLRequestContextGetter::CreateForMedia(profile_, io_data_); | 256 ChromeURLRequestContextGetter::CreateForMedia(profile_, io_data_); |
| 257 } | 257 } |
| 258 return media_request_context_getter_; | 258 return media_request_context_getter_; |
| 259 } | 259 } |
| 260 | 260 |
| 261 scoped_refptr<ChromeURLRequestContextGetter> | 261 scoped_refptr<ChromeURLRequestContextGetter> |
| 262 ProfileImplIOData::Handle::GetExtensionsRequestContextGetter() const { | 262 ProfileImplIOData::Handle::GetExtensionsRequestContextGetter() const { |
| 263 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 263 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 264 LazyInitialize(); | 264 LazyInitialize(); |
| 265 if (!extensions_request_context_getter_.get()) { | 265 if (!extensions_request_context_getter_.get()) { |
| 266 extensions_request_context_getter_ = | 266 extensions_request_context_getter_ = |
| 267 ChromeURLRequestContextGetter::CreateForExtensions(profile_, io_data_); | 267 ChromeURLRequestContextGetter::CreateForExtensions(profile_, io_data_); |
| 268 } | 268 } |
| 269 return extensions_request_context_getter_; | 269 return extensions_request_context_getter_; |
| 270 } | 270 } |
| 271 | 271 |
| 272 scoped_refptr<ChromeURLRequestContextGetter> | 272 scoped_refptr<ChromeURLRequestContextGetter> |
| 273 ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter( | 273 ProfileImplIOData::Handle::CreateIsolatedAppRequestContextGetter( |
| 274 const base::FilePath& partition_path, | 274 const base::FilePath& partition_path, |
| 275 bool in_memory, | 275 bool in_memory, |
| 276 content::ProtocolHandlerMap* protocol_handlers, | 276 content::ProtocolHandlerMap* protocol_handlers, |
| 277 content::URLRequestInterceptorScopedVector request_interceptors) const { | 277 content::URLRequestInterceptorScopedVector request_interceptors) const { |
| 278 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 278 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 279 // Check that the partition_path is not the same as the base profile path. We | 279 // Check that the partition_path is not the same as the base profile path. We |
| 280 // expect isolated partition, which will never go to the default profile path. | 280 // expect isolated partition, which will never go to the default profile path. |
| 281 CHECK(partition_path != profile_->GetPath()); | 281 CHECK(partition_path != profile_->GetPath()); |
| 282 LazyInitialize(); | 282 LazyInitialize(); |
| 283 | 283 |
| 284 // Keep a map of request context getters, one per requested storage partition. | 284 // Keep a map of request context getters, one per requested storage partition. |
| 285 StoragePartitionDescriptor descriptor(partition_path, in_memory); | 285 StoragePartitionDescriptor descriptor(partition_path, in_memory); |
| 286 ChromeURLRequestContextGetterMap::iterator iter = | 286 ChromeURLRequestContextGetterMap::iterator iter = |
| 287 app_request_context_getter_map_.find(descriptor); | 287 app_request_context_getter_map_.find(descriptor); |
| 288 if (iter != app_request_context_getter_map_.end()) | 288 if (iter != app_request_context_getter_map_.end()) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 302 request_interceptors.Pass()); | 302 request_interceptors.Pass()); |
| 303 app_request_context_getter_map_[descriptor] = context; | 303 app_request_context_getter_map_[descriptor] = context; |
| 304 | 304 |
| 305 return context; | 305 return context; |
| 306 } | 306 } |
| 307 | 307 |
| 308 scoped_refptr<ChromeURLRequestContextGetter> | 308 scoped_refptr<ChromeURLRequestContextGetter> |
| 309 ProfileImplIOData::Handle::GetIsolatedMediaRequestContextGetter( | 309 ProfileImplIOData::Handle::GetIsolatedMediaRequestContextGetter( |
| 310 const base::FilePath& partition_path, | 310 const base::FilePath& partition_path, |
| 311 bool in_memory) const { | 311 bool in_memory) const { |
| 312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 312 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 313 // We must have a non-default path, or this will act like the default media | 313 // We must have a non-default path, or this will act like the default media |
| 314 // context. | 314 // context. |
| 315 CHECK(partition_path != profile_->GetPath()); | 315 CHECK(partition_path != profile_->GetPath()); |
| 316 LazyInitialize(); | 316 LazyInitialize(); |
| 317 | 317 |
| 318 // Keep a map of request context getters, one per requested storage partition. | 318 // Keep a map of request context getters, one per requested storage partition. |
| 319 StoragePartitionDescriptor descriptor(partition_path, in_memory); | 319 StoragePartitionDescriptor descriptor(partition_path, in_memory); |
| 320 ChromeURLRequestContextGetterMap::iterator iter = | 320 ChromeURLRequestContextGetterMap::iterator iter = |
| 321 isolated_media_request_context_getter_map_.find(descriptor); | 321 isolated_media_request_context_getter_map_.find(descriptor); |
| 322 if (iter != isolated_media_request_context_getter_map_.end()) | 322 if (iter != isolated_media_request_context_getter_map_.end()) |
| 323 return iter->second; | 323 return iter->second; |
| 324 | 324 |
| 325 // Get the app context as the starting point for the media context, so that | 325 // Get the app context as the starting point for the media context, so that |
| 326 // it uses the app's cookie store. | 326 // it uses the app's cookie store. |
| 327 ChromeURLRequestContextGetterMap::const_iterator app_iter = | 327 ChromeURLRequestContextGetterMap::const_iterator app_iter = |
| 328 app_request_context_getter_map_.find(descriptor); | 328 app_request_context_getter_map_.find(descriptor); |
| 329 DCHECK(app_iter != app_request_context_getter_map_.end()); | 329 DCHECK(app_iter != app_request_context_getter_map_.end()); |
| 330 ChromeURLRequestContextGetter* app_context = app_iter->second.get(); | 330 ChromeURLRequestContextGetter* app_context = app_iter->second.get(); |
| 331 ChromeURLRequestContextGetter* context = | 331 ChromeURLRequestContextGetter* context = |
| 332 ChromeURLRequestContextGetter::CreateForIsolatedMedia( | 332 ChromeURLRequestContextGetter::CreateForIsolatedMedia( |
| 333 profile_, app_context, io_data_, descriptor); | 333 profile_, app_context, io_data_, descriptor); |
| 334 isolated_media_request_context_getter_map_[descriptor] = context; | 334 isolated_media_request_context_getter_map_[descriptor] = context; |
| 335 | 335 |
| 336 return context; | 336 return context; |
| 337 } | 337 } |
| 338 | 338 |
| 339 DevToolsNetworkController* | 339 DevToolsNetworkController* |
| 340 ProfileImplIOData::Handle::GetDevToolsNetworkController() const { | 340 ProfileImplIOData::Handle::GetDevToolsNetworkController() const { |
| 341 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 341 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 342 return io_data_->network_controller(); | 342 return io_data_->network_controller(); |
| 343 } | 343 } |
| 344 | 344 |
| 345 void ProfileImplIOData::Handle::ClearNetworkingHistorySince( | 345 void ProfileImplIOData::Handle::ClearNetworkingHistorySince( |
| 346 base::Time time, | 346 base::Time time, |
| 347 const base::Closure& completion) { | 347 const base::Closure& completion) { |
| 348 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 348 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 349 LazyInitialize(); | 349 LazyInitialize(); |
| 350 | 350 |
| 351 BrowserThread::PostTask( | 351 BrowserThread::PostTask( |
| 352 BrowserThread::IO, FROM_HERE, | 352 BrowserThread::IO, FROM_HERE, |
| 353 base::Bind( | 353 base::Bind( |
| 354 &ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread, | 354 &ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread, |
| 355 base::Unretained(io_data_), | 355 base::Unretained(io_data_), |
| 356 time, | 356 time, |
| 357 completion)); | 357 completion)); |
| 358 } | 358 } |
| 359 | 359 |
| 360 void ProfileImplIOData::Handle::LazyInitialize() const { | 360 void ProfileImplIOData::Handle::LazyInitialize() const { |
| 361 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 361 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 362 if (initialized_) | 362 if (initialized_) |
| 363 return; | 363 return; |
| 364 | 364 |
| 365 // Set initialized_ to true at the beginning in case any of the objects | 365 // Set initialized_ to true at the beginning in case any of the objects |
| 366 // below try to get the ResourceContext pointer. | 366 // below try to get the ResourceContext pointer. |
| 367 initialized_ = true; | 367 initialized_ = true; |
| 368 PrefService* pref_service = profile_->GetPrefs(); | 368 PrefService* pref_service = profile_->GetPrefs(); |
| 369 io_data_->http_server_properties_manager_ = | 369 io_data_->http_server_properties_manager_ = |
| 370 chrome_browser_net::HttpServerPropertiesManagerFactory::CreateManager( | 370 chrome_browser_net::HttpServerPropertiesManagerFactory::CreateManager( |
| 371 pref_service); | 371 pref_service); |
| (...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 800 // We create per-app media contexts on demand, unlike the others above. | 800 // We create per-app media contexts on demand, unlike the others above. |
| 801 net::URLRequestContext* media_request_context = | 801 net::URLRequestContext* media_request_context = |
| 802 InitializeMediaRequestContext(app_context, partition_descriptor); | 802 InitializeMediaRequestContext(app_context, partition_descriptor); |
| 803 DCHECK(media_request_context); | 803 DCHECK(media_request_context); |
| 804 return media_request_context; | 804 return media_request_context; |
| 805 } | 805 } |
| 806 | 806 |
| 807 void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( | 807 void ProfileImplIOData::ClearNetworkingHistorySinceOnIOThread( |
| 808 base::Time time, | 808 base::Time time, |
| 809 const base::Closure& completion) { | 809 const base::Closure& completion) { |
| 810 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 810 DCHECK_CURRENTLY_ON(BrowserThread::IO); |
| 811 DCHECK(initialized()); | 811 DCHECK(initialized()); |
| 812 | 812 |
| 813 DCHECK(transport_security_state()); | 813 DCHECK(transport_security_state()); |
| 814 // Completes synchronously. | 814 // Completes synchronously. |
| 815 transport_security_state()->DeleteAllDynamicDataSince(time); | 815 transport_security_state()->DeleteAllDynamicDataSince(time); |
| 816 DCHECK(http_server_properties_manager_); | 816 DCHECK(http_server_properties_manager_); |
| 817 http_server_properties_manager_->Clear(completion); | 817 http_server_properties_manager_->Clear(completion); |
| 818 } | 818 } |
| OLD | NEW |