diff options
-rw-r--r-- | chrome/browser/metrics/metrics_services_manager.cc | 10 | ||||
-rw-r--r-- | components/metrics/client_info.h | 3 | ||||
-rw-r--r-- | components/metrics/metrics_state_manager.cc | 3 |
3 files changed, 9 insertions, 7 deletions
diff --git a/chrome/browser/metrics/metrics_services_manager.cc b/chrome/browser/metrics/metrics_services_manager.cc index f64ee5f..ab74261 100644 --- a/chrome/browser/metrics/metrics_services_manager.cc +++ b/chrome/browser/metrics/metrics_services_manager.cc @@ -19,11 +19,19 @@ #include "components/metrics/metrics_service.h" #include "components/metrics/metrics_state_manager.h" #include "components/rappor/rappor_service.h" +#include "content/public/browser/browser_thread.h" #if defined(OS_CHROMEOS) #include "chrome/browser/chromeos/settings/cros_settings.h" #endif +// Posts |GoogleUpdateSettings::StoreMetricsClientInfo| on blocking pool thread +// because it needs access to IO and cannot work from UI thread. +void PostStoreMetricsClientInfo(const metrics::ClientInfo& client_info) { + content::BrowserThread::GetBlockingPool()->PostTask(FROM_HERE, + base::Bind(&GoogleUpdateSettings::StoreMetricsClientInfo, client_info)); +} + MetricsServicesManager::MetricsServicesManager(PrefService* local_state) : local_state_(local_state) { DCHECK(local_state); @@ -80,7 +88,7 @@ metrics::MetricsStateManager* MetricsServicesManager::GetMetricsStateManager() { local_state_, base::Bind(&MetricsServicesManager::IsMetricsReportingEnabled, base::Unretained(this)), - base::Bind(&GoogleUpdateSettings::StoreMetricsClientInfo), + base::Bind(&PostStoreMetricsClientInfo), base::Bind(&GoogleUpdateSettings::LoadMetricsClientInfo)); } return metrics_state_manager_.get(); diff --git a/components/metrics/client_info.h b/components/metrics/client_info.h index 8fcaec2..733d087 100644 --- a/components/metrics/client_info.h +++ b/components/metrics/client_info.h @@ -28,9 +28,6 @@ struct ClientInfo { // The date on which metrics reporting was enabled: represented as an epoch // time in seconds. int64 reporting_enabled_date; - - private: - DISALLOW_COPY_AND_ASSIGN(ClientInfo); }; } // namespace metrics diff --git a/components/metrics/metrics_state_manager.cc b/components/metrics/metrics_state_manager.cc index 98b7af5..7e98bdb 100644 --- a/components/metrics/metrics_state_manager.cc +++ b/components/metrics/metrics_state_manager.cc @@ -219,9 +219,6 @@ void MetricsStateManager::RegisterPrefs(PrefRegistrySimple* registry) { } void MetricsStateManager::BackUpCurrentClientInfo() { - // TODO(gayane): Eliminate use of ScopedAllowIO. crbug.com/413783 - base::ThreadRestrictions::ScopedAllowIO allow_io; - ClientInfo client_info; client_info.client_id = client_id_; client_info.installation_date = local_state_->GetInt64(prefs::kInstallDate); |