| 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() {
|
|
|