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

Side by Side Diff: chromecast/metrics/cast_metrics_service_client.cc

Issue 522853002: Chromecast fix: MetricsStateManager segfaults if callbacks are empty. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: file rename Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « chromecast/chromecast.gyp ('k') | chromecast/metrics/cast_metrics_service_client_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chromecast/metrics/cast_metrics_service_client.h" 5 #include "chromecast/metrics/cast_metrics_service_client.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "chromecast/common/chromecast_config.h" 8 #include "chromecast/common/chromecast_config.h"
9 #include "chromecast/metrics/platform_metrics_providers.h" 9 #include "chromecast/metrics/platform_metrics_providers.h"
10 #include "components/metrics/client_info.h"
10 #include "components/metrics/metrics_provider.h" 11 #include "components/metrics/metrics_provider.h"
11 #include "components/metrics/metrics_service.h" 12 #include "components/metrics/metrics_service.h"
12 #include "components/metrics/metrics_state_manager.h" 13 #include "components/metrics/metrics_state_manager.h"
13 #include "components/metrics/net/net_metrics_log_uploader.h" 14 #include "components/metrics/net/net_metrics_log_uploader.h"
14 15
15 namespace chromecast { 16 namespace chromecast {
16 namespace metrics { 17 namespace metrics {
17 18
19 namespace {
20
21 void StoreClientInfo(const ::metrics::ClientInfo& client_info) {
22 }
23
24 scoped_ptr<::metrics::ClientInfo> LoadClientInfo() {
25 return scoped_ptr<::metrics::ClientInfo>();
26 }
27
28 } // namespace
29
18 // static 30 // static
19 CastMetricsServiceClient* CastMetricsServiceClient::Create( 31 CastMetricsServiceClient* CastMetricsServiceClient::Create(
20 PrefService* pref_service, 32 PrefService* pref_service,
21 net::URLRequestContextGetter* request_context) { 33 net::URLRequestContextGetter* request_context) {
22 return new CastMetricsServiceClient(pref_service, request_context); 34 return new CastMetricsServiceClient(pref_service, request_context);
23 } 35 }
24 36
25 void CastMetricsServiceClient::SetMetricsClientId( 37 void CastMetricsServiceClient::SetMetricsClientId(
26 const std::string& client_id) { 38 const std::string& client_id) {
27 LOG(INFO) << "Metrics client ID set: " << client_id; 39 LOG(INFO) << "Metrics client ID set: " << client_id;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 } 97 }
86 } 98 }
87 99
88 CastMetricsServiceClient::CastMetricsServiceClient( 100 CastMetricsServiceClient::CastMetricsServiceClient(
89 PrefService* pref_service, 101 PrefService* pref_service,
90 net::URLRequestContextGetter* request_context) 102 net::URLRequestContextGetter* request_context)
91 : metrics_state_manager_(::metrics::MetricsStateManager::Create( 103 : metrics_state_manager_(::metrics::MetricsStateManager::Create(
92 pref_service, 104 pref_service,
93 base::Bind(&CastMetricsServiceClient::IsReportingEnabled, 105 base::Bind(&CastMetricsServiceClient::IsReportingEnabled,
94 base::Unretained(this)), 106 base::Unretained(this)),
95 ::metrics::MetricsStateManager::StoreClientInfoCallback(), 107 base::Bind(&StoreClientInfo),
96 ::metrics::MetricsStateManager::LoadClientInfoCallback())), 108 base::Bind(&LoadClientInfo))),
97 metrics_service_(new ::metrics::MetricsService( 109 metrics_service_(new ::metrics::MetricsService(
98 metrics_state_manager_.get(), 110 metrics_state_manager_.get(),
99 this, 111 this,
100 ChromecastConfig::GetInstance()->pref_service())), 112 pref_service)),
101 request_context_(request_context) { 113 request_context_(request_context) {
102 // Always create a client id as it may also be used by crash reporting, 114 // Always create a client id as it may also be used by crash reporting,
103 // (indirectly) included in feedback, and can be queried during setup. 115 // (indirectly) included in feedback, and can be queried during setup.
104 // For UMA and crash reporting, associated opt-in settings will control 116 // For UMA and crash reporting, associated opt-in settings will control
105 // sending reports as directed by the user. 117 // sending reports as directed by the user.
106 // For Setup (which also communicates the user's opt-in preferences), 118 // For Setup (which also communicates the user's opt-in preferences),
107 // report the client-id and expect that setup will handle the current opt-in 119 // report the client-id and expect that setup will handle the current opt-in
108 // value. 120 // value.
109 metrics_state_manager_->ForceClientIdCreation(); 121 metrics_state_manager_->ForceClientIdCreation();
110 122
111 // TODO(gunsch): Add the following: GPUMetricsProvider, 123 // TODO(gunsch): Add the following: GPUMetricsProvider,
112 // NetworkMetricsProvider, ProfilerMetricsProvider. See: crbug/404791 124 // NetworkMetricsProvider, ProfilerMetricsProvider. See: crbug/404791
113 RegisterPlatformMetricsProviders(metrics_service_.get()); 125 RegisterPlatformMetricsProviders(metrics_service_.get());
114 126
115 metrics_service_->InitializeMetricsRecordingState(); 127 metrics_service_->InitializeMetricsRecordingState();
116 128
117 if (IsReportingEnabled()) 129 if (IsReportingEnabled())
118 metrics_service_->Start(); 130 metrics_service_->Start();
119 } 131 }
120 132
121 CastMetricsServiceClient::~CastMetricsServiceClient() { 133 CastMetricsServiceClient::~CastMetricsServiceClient() {
122 } 134 }
123 135
124 bool CastMetricsServiceClient::IsReportingEnabled() { 136 bool CastMetricsServiceClient::IsReportingEnabled() {
125 return PlatformIsReportingEnabled(); 137 return PlatformIsReportingEnabled();
126 } 138 }
127 139
128 } // namespace metrics 140 } // namespace metrics
129 } // namespace chromecast 141 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/chromecast.gyp ('k') | chromecast/metrics/cast_metrics_service_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698