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

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

Issue 638803002: Reorganizes Chromecast code to better reflect functional dependencies. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: extra DEPS: chromecast/crash/android --> chromecast/common Created 6 years, 2 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chromecast/metrics/cast_metrics_service_client.h"
6
7 #include "base/command_line.h"
8 #include "base/i18n/rtl.h"
9 #include "chromecast/common/chromecast_config.h"
10 #include "chromecast/common/chromecast_switches.h"
11 #include "chromecast/metrics/cast_stability_metrics_provider.h"
12 #include "chromecast/metrics/platform_metrics_providers.h"
13 #include "components/metrics/client_info.h"
14 #include "components/metrics/gpu/gpu_metrics_provider.h"
15 #include "components/metrics/metrics_provider.h"
16 #include "components/metrics/metrics_service.h"
17 #include "components/metrics/metrics_state_manager.h"
18 #include "components/metrics/net/net_metrics_log_uploader.h"
19 #include "components/metrics/net/network_metrics_provider.h"
20 #include "components/metrics/profiler/profiler_metrics_provider.h"
21
22 namespace chromecast {
23 namespace metrics {
24
25 namespace {
26
27 void StoreClientInfo(const ::metrics::ClientInfo& client_info) {
28 }
29
30 scoped_ptr<::metrics::ClientInfo> LoadClientInfo() {
31 return scoped_ptr<::metrics::ClientInfo>();
32 }
33
34 } // namespace
35
36 // static
37 CastMetricsServiceClient* CastMetricsServiceClient::Create(
38 base::TaskRunner* io_task_runner,
39 PrefService* pref_service,
40 net::URLRequestContextGetter* request_context) {
41 return new CastMetricsServiceClient(io_task_runner,
42 pref_service,
43 request_context);
44 }
45
46 void CastMetricsServiceClient::SetMetricsClientId(
47 const std::string& client_id) {
48 LOG(INFO) << "Metrics client ID set: " << client_id;
49 PlatformSetClientID(client_id);
50 }
51
52 bool CastMetricsServiceClient::IsOffTheRecordSessionActive() {
53 // Chromecast behaves as "off the record" w/r/t recording browsing state,
54 // but this value is about not disabling metrics because of it.
55 return false;
56 }
57
58 int32_t CastMetricsServiceClient::GetProduct() {
59 // Chromecast currently uses the same product identifier as Chrome.
60 return ::metrics::ChromeUserMetricsExtension::CHROME;
61 }
62
63 std::string CastMetricsServiceClient::GetApplicationLocale() {
64 return base::i18n::GetConfiguredLocale();
65 }
66
67 bool CastMetricsServiceClient::GetBrand(std::string* brand_code) {
68 return false;
69 }
70
71 ::metrics::SystemProfileProto::Channel CastMetricsServiceClient::GetChannel() {
72 return GetPlatformReleaseChannel();
73 }
74
75 std::string CastMetricsServiceClient::GetVersionString() {
76 return GetPlatformVersionString();
77 }
78
79 void CastMetricsServiceClient::OnLogUploadComplete() {
80 PlatformOnLogUploadComplete();
81 }
82
83 void CastMetricsServiceClient::StartGatheringMetrics(
84 const base::Closure& done_callback) {
85 done_callback.Run();
86 }
87
88 void CastMetricsServiceClient::CollectFinalMetrics(
89 const base::Closure& done_callback) {
90 done_callback.Run();
91 }
92
93 scoped_ptr< ::metrics::MetricsLogUploader>
94 CastMetricsServiceClient::CreateUploader(
95 const std::string& server_url,
96 const std::string& mime_type,
97 const base::Callback<void(int)>& on_upload_complete) {
98 std::string uma_server_url(server_url);
99 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
100 if (command_line->HasSwitch(switches::kOverrideMetricsUploadUrl)) {
101 uma_server_url.assign(
102 command_line->GetSwitchValueASCII(switches::kOverrideMetricsUploadUrl));
103 }
104 DCHECK(!uma_server_url.empty());
105 return scoped_ptr< ::metrics::MetricsLogUploader>(
106 new ::metrics::NetMetricsLogUploader(
107 request_context_,
108 uma_server_url,
109 mime_type,
110 on_upload_complete));
111 }
112
113 void CastMetricsServiceClient::EnableMetricsService(bool enabled) {
114 if (!metrics_service_loop_->BelongsToCurrentThread()) {
115 metrics_service_loop_->PostTask(
116 FROM_HERE,
117 base::Bind(&CastMetricsServiceClient::EnableMetricsService,
118 base::Unretained(this),
119 enabled));
120 return;
121 }
122
123 if (enabled) {
124 metrics_service_->Start();
125 } else {
126 metrics_service_->Stop();
127 }
128 }
129
130 CastMetricsServiceClient::CastMetricsServiceClient(
131 base::TaskRunner* io_task_runner,
132 PrefService* pref_service,
133 net::URLRequestContextGetter* request_context)
134 : metrics_state_manager_(::metrics::MetricsStateManager::Create(
135 pref_service,
136 base::Bind(&CastMetricsServiceClient::IsReportingEnabled,
137 base::Unretained(this)),
138 base::Bind(&StoreClientInfo),
139 base::Bind(&LoadClientInfo))),
140 metrics_service_(new ::metrics::MetricsService(
141 metrics_state_manager_.get(),
142 this,
143 pref_service)),
144 metrics_service_loop_(base::MessageLoopProxy::current()),
145 request_context_(request_context) {
146 // Always create a client id as it may also be used by crash reporting,
147 // (indirectly) included in feedback, and can be queried during setup.
148 // For UMA and crash reporting, associated opt-in settings will control
149 // sending reports as directed by the user.
150 // For Setup (which also communicates the user's opt-in preferences),
151 // report the client-id and expect that setup will handle the current opt-in
152 // value.
153 metrics_state_manager_->ForceClientIdCreation();
154
155 metrics_service_->RegisterMetricsProvider(
156 scoped_ptr< ::metrics::MetricsProvider>(
157 new CastStabilityMetricsProvider));
158 metrics_service_->RegisterMetricsProvider(
159 scoped_ptr< ::metrics::MetricsProvider>(
160 new ::metrics::GPUMetricsProvider));
161 metrics_service_->RegisterMetricsProvider(
162 scoped_ptr< ::metrics::MetricsProvider>(
163 new NetworkMetricsProvider(io_task_runner)));
164 metrics_service_->RegisterMetricsProvider(
165 scoped_ptr< ::metrics::MetricsProvider>(
166 new ::metrics::ProfilerMetricsProvider));
167 RegisterPlatformMetricsProviders(metrics_service_.get());
168
169 metrics_service_->InitializeMetricsRecordingState();
170
171 if (IsReportingEnabled())
172 metrics_service_->Start();
173 }
174
175 CastMetricsServiceClient::~CastMetricsServiceClient() {
176 }
177
178 bool CastMetricsServiceClient::IsReportingEnabled() {
179 return PlatformIsReportingEnabled();
180 }
181
182 } // namespace metrics
183 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/metrics/cast_metrics_service_client.h ('k') | chromecast/metrics/cast_metrics_service_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698