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

Unified Diff: chromecast/browser/metrics/cast_metrics_service_client.cc

Issue 845003002: [chromecast] ExternalMetrics has to destroy itself in file thread. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 11 months 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 side-by-side diff with in-line comments
Download patch
Index: chromecast/browser/metrics/cast_metrics_service_client.cc
diff --git a/chromecast/browser/metrics/cast_metrics_service_client.cc b/chromecast/browser/metrics/cast_metrics_service_client.cc
index 32b4c15130e4bdfcc73da854ac4bc92783b34123..13d071a7498753de72bf2d5454b8ab6ad03ab5d0 100644
--- a/chromecast/browser/metrics/cast_metrics_service_client.cc
+++ b/chromecast/browser/metrics/cast_metrics_service_client.cc
@@ -175,11 +175,13 @@ CastMetricsServiceClient::CastMetricsServiceClient(
: io_task_runner_(io_task_runner),
pref_service_(pref_service),
cast_service_(NULL),
+ external_metrics_(NULL),
metrics_service_loop_(base::MessageLoopProxy::current()),
request_context_(request_context) {
}
CastMetricsServiceClient::~CastMetricsServiceClient() {
+ DCHECK(!external_metrics_);
}
void CastMetricsServiceClient::Initialize(CastService* cast_service) {
@@ -240,7 +242,7 @@ void CastMetricsServiceClient::Initialize(CastService* cast_service) {
// Start external metrics collection, which feeds data from external
// processes into the main external metrics.
#if defined(OS_LINUX)
- external_metrics_.reset(new ExternalMetrics(stability_provider));
+ external_metrics_ = new ExternalMetrics(stability_provider);
external_metrics_->Start();
#endif // defined(OS_LINUX)
}
@@ -250,6 +252,13 @@ void CastMetricsServiceClient::Finalize() {
// Set clean_shutdown bit.
metrics_service_->RecordCompletedSessionEnd();
#endif // !defined(OS_ANDROID)
+
+ // Stop metrics service cleanly before destructing CastMetricsServiceClient.
+#if defined(OS_LINUX)
+ external_metrics_->StopAndDestroy();
+ external_metrics_ = NULL;
+#endif // defined(OS_LINUX)
+ metrics_service_->Stop();
}
bool CastMetricsServiceClient::IsReportingEnabled() {
« no previous file with comments | « chromecast/browser/metrics/cast_metrics_service_client.h ('k') | chromecast/browser/metrics/external_metrics.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698