summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/metrics/metrics_services_manager.cc10
-rw-r--r--components/metrics/client_info.h3
-rw-r--r--components/metrics/metrics_state_manager.cc3
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);