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

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

Issue 482813004: Adds CastMetricsServiceClient to Chromecast shell. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: registers prefs Created 6 years, 4 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/i18n/rtl.h"
8 #include "chromecast/common/chromecast_config.h"
9 #include "chromecast/metrics/platform_metrics_providers.h"
10 #include "components/metrics/metrics_provider.h"
11 #include "components/metrics/metrics_service.h"
12 #include "components/metrics/metrics_state_manager.h"
13 #include "components/metrics/net/net_metrics_log_uploader.h"
14
15 namespace chromecast {
16 namespace metrics {
17
18 // static
19 CastMetricsServiceClient* CastMetricsServiceClient::Create(
20 net::URLRequestContextGetter* request_context) {
21 return new CastMetricsServiceClient(request_context);
22 }
23
24 void CastMetricsServiceClient::SetMetricsClientId(
25 const std::string& client_id) {
26 LOG(INFO) << "Metrics client ID set: " << client_id;
27 PlatformSetClientID(client_id);
28 }
29
30 bool CastMetricsServiceClient::IsOffTheRecordSessionActive() {
31 // Chromecast behaves as "off the record" w/r/t recording browsing state,
32 // but this value is about not disabling metrics because of it.
33 return false;
34 }
35
36 std::string CastMetricsServiceClient::GetApplicationLocale() {
37 return base::i18n::GetConfiguredLocale();
38 }
39
40 bool CastMetricsServiceClient::GetBrand(std::string* brand_code) {
41 brand_code->clear();
42 return true;
Alexei Svitkine (slow) 2014/08/20 21:21:47 Why not just return false, so that a brand isn't s
gunsch 2014/08/22 16:42:20 Done.
43 }
44
45 ::metrics::SystemProfileProto::Channel CastMetricsServiceClient::GetChannel() {
46 return GetPlatformReleaseChannel();
47 }
48
49 std::string CastMetricsServiceClient::GetVersionString() {
50 return GetPlatformVersionString();
51 }
52
53 void CastMetricsServiceClient::OnLogUploadComplete() {
54 PlatformOnLogUploadComplete();
55 }
56
57 void CastMetricsServiceClient::StartGatheringMetrics(
58 const base::Closure& done_callback) {
59 done_callback.Run();
60 }
61
62 void CastMetricsServiceClient::CollectFinalMetrics(
63 const base::Closure& done_callback) {
64 done_callback.Run();
65 }
66
67 scoped_ptr< ::metrics::MetricsLogUploader>
68 CastMetricsServiceClient::CreateUploader(
69 const std::string& server_url,
70 const std::string& mime_type,
71 const base::Callback<void(int)>& on_upload_complete) {
72 return scoped_ptr< ::metrics::MetricsLogUploader>(
73 new ::metrics::NetMetricsLogUploader(
74 request_context_,
75 server_url,
76 mime_type,
77 on_upload_complete));
78 }
79
80 void CastMetricsServiceClient::EnableMetricsService(bool enabled) {
81 if (enabled) {
82 if (!metrics_service_->recording_active() ||
83 !metrics_service_->reporting_active()) {
Alexei Svitkine (slow) 2014/08/20 21:21:46 Doesn't MetricsService do these checks internally
gunsch 2014/08/22 16:42:20 Done.
84 metrics_service_->Start();
85 }
86 } else {
87 if (metrics_service_->recording_active() ||
88 metrics_service_->reporting_active()) {
89 metrics_service_->Stop();
90 }
91 }
92 }
93
94 CastMetricsServiceClient::CastMetricsServiceClient(
95 net::URLRequestContextGetter* request_context)
96 : metrics_state_manager_(::metrics::MetricsStateManager::Create(
97 ChromecastConfig::GetInstance()->pref_service(),
Alexei Svitkine (slow) 2014/08/20 21:21:46 Nit: I think it would be cleaner to pass this as a
gunsch 2014/08/22 16:42:20 Done.
98 base::Bind(&CastMetricsServiceClient::IsReportingEnabled,
99 base::Unretained(this)),
100 ::metrics::MetricsStateManager::StoreClientInfoCallback(),
101 ::metrics::MetricsStateManager::LoadClientInfoCallback())),
102 metrics_service_(new MetricsService(
103 metrics_state_manager_.get(),
104 this,
105 ChromecastConfig::GetInstance()->pref_service())),
106 request_context_(request_context) {
107 // Always create a client id as it may also be used by crash reporting,
108 // (indirectly) included in feedback, and can be queried during setup.
109 // For UMA and crash reporting, associated opt-in settings will control
110 // sending reports as directed by the user.
111 // For Setup (which also communicates the user's opt-in preferences),
112 // report the client-id and expect that setup will handle the current opt-in
113 // value.
114 metrics_state_manager_->ForceClientIdCreation();
115
116 // TODO(gunsch): Add the following: GPUMetricsProvider,
117 // NetworkMetricsProvider, ProfilerMetricsProvider. See: crbug/404791
118 RegisterPlatformMetricsProviders(metrics_service_.get());
119
120 metrics_service_->InitializeMetricsRecordingState();
121
122 if (IsReportingEnabled()) {
Alexei Svitkine (slow) 2014/08/20 21:21:46 Nit: Chromium style usually prefers no {}'s on sin
gunsch 2014/08/22 16:42:20 Done.
123 metrics_service_->Start();
124 }
125 }
126
127 CastMetricsServiceClient::~CastMetricsServiceClient() {
128 }
129
130 bool CastMetricsServiceClient::IsReportingEnabled() {
131 return PlatformIsReportingEnabled();
132 }
133
134 } // namespace metrics
135 } // namespace chromecast
OLDNEW
« no previous file with comments | « chromecast/metrics/cast_metrics_service_client.h ('k') | chromecast/metrics/platform_metrics_providers.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698