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

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

Issue 2336043007: Domain Reliability: Don't crash on shutdown with uploads pending (Closed)
Patch Set: No, really. Created 4 years 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
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_impl_io_data.h" 5 #include "chrome/browser/profiles/profile_impl_io_data.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 164
165 lazy_params->cookie_path = cookie_path; 165 lazy_params->cookie_path = cookie_path;
166 lazy_params->channel_id_path = channel_id_path; 166 lazy_params->channel_id_path = channel_id_path;
167 lazy_params->cache_path = cache_path; 167 lazy_params->cache_path = cache_path;
168 lazy_params->cache_max_size = cache_max_size; 168 lazy_params->cache_max_size = cache_max_size;
169 lazy_params->media_cache_path = media_cache_path; 169 lazy_params->media_cache_path = media_cache_path;
170 lazy_params->media_cache_max_size = media_cache_max_size; 170 lazy_params->media_cache_max_size = media_cache_max_size;
171 lazy_params->extensions_cookie_path = extensions_cookie_path; 171 lazy_params->extensions_cookie_path = extensions_cookie_path;
172 lazy_params->session_cookie_mode = session_cookie_mode; 172 lazy_params->session_cookie_mode = session_cookie_mode;
173 lazy_params->special_storage_policy = special_storage_policy; 173 lazy_params->special_storage_policy = special_storage_policy;
174 lazy_params->domain_reliability_monitor =
175 std::move(domain_reliability_monitor);
174 176
175 PrefService* pref_service = profile_->GetPrefs(); 177 PrefService* pref_service = profile_->GetPrefs();
176 lazy_params->http_server_properties_manager.reset( 178 lazy_params->http_server_properties_manager.reset(
177 chrome_browser_net::HttpServerPropertiesManagerFactory::CreateManager( 179 chrome_browser_net::HttpServerPropertiesManagerFactory::CreateManager(
178 pref_service)); 180 pref_service));
179 io_data_->http_server_properties_manager_ = 181 io_data_->http_server_properties_manager_ =
180 lazy_params->http_server_properties_manager.get(); 182 lazy_params->http_server_properties_manager.get();
181 183
182 io_data_->lazy_params_.reset(lazy_params); 184 io_data_->lazy_params_.reset(lazy_params);
183 185
184 // Keep track of profile path and cache sizes separately so we can use them 186 // Keep track of profile path and cache sizes separately so we can use them
185 // on demand when creating storage isolated URLRequestContextGetters. 187 // on demand when creating storage isolated URLRequestContextGetters.
186 io_data_->profile_path_ = profile_path; 188 io_data_->profile_path_ = profile_path;
187 io_data_->app_cache_max_size_ = cache_max_size; 189 io_data_->app_cache_max_size_ = cache_max_size;
188 io_data_->app_media_cache_max_size_ = media_cache_max_size; 190 io_data_->app_media_cache_max_size_ = media_cache_max_size;
189 191
190 io_data_->predictor_.reset(predictor); 192 io_data_->predictor_.reset(predictor);
191 io_data_->domain_reliability_monitor_ = std::move(domain_reliability_monitor);
192 193
193 io_data_->InitializeMetricsEnabledStateOnUIThread(); 194 io_data_->InitializeMetricsEnabledStateOnUIThread();
194 if (io_data_->domain_reliability_monitor_) 195 if (io_data_->lazy_params_->domain_reliability_monitor)
195 io_data_->domain_reliability_monitor_->MoveToNetworkThread(); 196 io_data_->lazy_params_->domain_reliability_monitor->MoveToNetworkThread();
196 197
197 io_data_->previews_io_data_ = base::MakeUnique<previews::PreviewsIOData>( 198 io_data_->previews_io_data_ = base::MakeUnique<previews::PreviewsIOData>(
198 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI), 199 BrowserThread::GetTaskRunnerForThread(BrowserThread::UI),
199 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 200 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
200 PreviewsServiceFactory::GetForProfile(profile_)->Initialize( 201 PreviewsServiceFactory::GetForProfile(profile_)->Initialize(
201 io_data_->previews_io_data_.get(), 202 io_data_->previews_io_data_.get(),
202 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), profile_path); 203 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO), profile_path);
203 204
204 io_data_->set_data_reduction_proxy_io_data( 205 io_data_->set_data_reduction_proxy_io_data(
205 CreateDataReductionProxyChromeIOData( 206 CreateDataReductionProxyChromeIOData(
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 : cache_max_size(0), 420 : cache_max_size(0),
420 media_cache_max_size(0), 421 media_cache_max_size(0),
421 session_cookie_mode( 422 session_cookie_mode(
422 content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES) {} 423 content::CookieStoreConfig::EPHEMERAL_SESSION_COOKIES) {}
423 424
424 ProfileImplIOData::LazyParams::~LazyParams() {} 425 ProfileImplIOData::LazyParams::~LazyParams() {}
425 426
426 ProfileImplIOData::ProfileImplIOData() 427 ProfileImplIOData::ProfileImplIOData()
427 : ProfileIOData(Profile::REGULAR_PROFILE), 428 : ProfileIOData(Profile::REGULAR_PROFILE),
428 http_server_properties_manager_(NULL), 429 http_server_properties_manager_(NULL),
430 domain_reliability_monitor_(nullptr),
429 app_cache_max_size_(0), 431 app_cache_max_size_(0),
430 app_media_cache_max_size_(0) { 432 app_media_cache_max_size_(0) {
431 } 433 }
432 434
433 ProfileImplIOData::~ProfileImplIOData() { 435 ProfileImplIOData::~ProfileImplIOData() {
436 if (domain_reliability_monitor_)
437 domain_reliability_monitor_->Shutdown();
438
434 DestroyResourceContext(); 439 DestroyResourceContext();
435 440
436 if (media_request_context_) 441 if (media_request_context_)
437 media_request_context_->AssertNoURLRequests(); 442 media_request_context_->AssertNoURLRequests();
438 } 443 }
439 444
440 void ProfileImplIOData::InitializeInternal( 445 void ProfileImplIOData::InitializeInternal(
441 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate, 446 std::unique_ptr<ChromeNetworkDelegate> chrome_network_delegate,
442 ProfileParams* profile_params, 447 ProfileParams* profile_params,
443 content::ProtocolHandlerMap* protocol_handlers, 448 content::ProtocolHandlerMap* protocol_handlers,
444 content::URLRequestInterceptorScopedVector request_interceptors) const { 449 content::URLRequestInterceptorScopedVector request_interceptors) const {
445 // Set up a persistent store for use by the network stack on the IO thread. 450 // Set up a persistent store for use by the network stack on the IO thread.
446 base::FilePath network_json_store_filepath( 451 base::FilePath network_json_store_filepath(
447 profile_path_.Append(chrome::kNetworkPersistentStateFilename)); 452 profile_path_.Append(chrome::kNetworkPersistentStateFilename));
448 network_json_store_ = new JsonPrefStore( 453 network_json_store_ = new JsonPrefStore(
449 network_json_store_filepath, 454 network_json_store_filepath,
450 JsonPrefStore::GetTaskRunnerForFile(network_json_store_filepath, 455 JsonPrefStore::GetTaskRunnerForFile(network_json_store_filepath,
451 BrowserThread::GetBlockingPool()), 456 BrowserThread::GetBlockingPool()),
452 std::unique_ptr<PrefFilter>()); 457 std::unique_ptr<PrefFilter>());
453 network_json_store_->ReadPrefsAsync(nullptr); 458 network_json_store_->ReadPrefsAsync(nullptr);
454 459
455 net::URLRequestContext* main_context = main_request_context(); 460 net::URLRequestContext* main_context = main_request_context();
456 net::URLRequestContextStorage* main_context_storage = 461 net::URLRequestContextStorage* main_context_storage =
457 main_request_context_storage(); 462 main_request_context_storage();
458 463
459 IOThread* const io_thread = profile_params->io_thread; 464 IOThread* const io_thread = profile_params->io_thread;
460 IOThread::Globals* const io_thread_globals = io_thread->globals(); 465 IOThread::Globals* const io_thread_globals = io_thread->globals();
461 466
462 if (domain_reliability_monitor_) { 467 if (lazy_params_->domain_reliability_monitor) {
463 domain_reliability::DomainReliabilityMonitor* monitor = 468 std::unique_ptr<domain_reliability::DomainReliabilityMonitor> monitor =
464 domain_reliability_monitor_.get(); 469 std::move(lazy_params_->domain_reliability_monitor);
mmenke 2016/12/14 19:12:17 optional: Don't think you need this line / variabl
Julia Tuttle 2016/12/15 21:53:00 Done.
470
471 // Keep a raw pointer handy to call Shutdown() in the destructor.
472 domain_reliability_monitor_ = monitor.get();
473
465 monitor->InitURLRequestContext(main_context); 474 monitor->InitURLRequestContext(main_context);
466 monitor->AddBakedInConfigs(); 475 monitor->AddBakedInConfigs();
467 monitor->SetDiscardUploads(!GetMetricsEnabledStateOnIOThread()); 476 monitor->SetDiscardUploads(!GetMetricsEnabledStateOnIOThread());
468 chrome_network_delegate->set_domain_reliability_monitor(monitor); 477 chrome_network_delegate->set_domain_reliability_monitor(
478 std::move(monitor));
469 } 479 }
470 480
471 ApplyProfileParamsToContext(main_context); 481 ApplyProfileParamsToContext(main_context);
472 482
473 if (lazy_params_->http_server_properties_manager) { 483 if (lazy_params_->http_server_properties_manager) {
474 lazy_params_->http_server_properties_manager->InitializeOnNetworkThread(); 484 lazy_params_->http_server_properties_manager->InitializeOnNetworkThread();
475 main_context_storage->set_http_server_properties( 485 main_context_storage->set_http_server_properties(
476 std::move(lazy_params_->http_server_properties_manager)); 486 std::move(lazy_params_->http_server_properties_manager));
477 } 487 }
478 488
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 const base::Closure& completion) { 815 const base::Closure& completion) {
806 DCHECK_CURRENTLY_ON(BrowserThread::IO); 816 DCHECK_CURRENTLY_ON(BrowserThread::IO);
807 DCHECK(initialized()); 817 DCHECK(initialized());
808 818
809 DCHECK(transport_security_state()); 819 DCHECK(transport_security_state());
810 // Completes synchronously. 820 // Completes synchronously.
811 transport_security_state()->DeleteAllDynamicDataSince(time); 821 transport_security_state()->DeleteAllDynamicDataSince(time);
812 DCHECK(http_server_properties_manager_); 822 DCHECK(http_server_properties_manager_);
813 http_server_properties_manager_->Clear(completion); 823 http_server_properties_manager_->Clear(completion);
814 } 824 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698