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

Side by Side Diff: chromecast/base/metrics/cast_metrics_helper.cc

Issue 1974723002: [Chromecast] Add metric reporting to ConnectivityCheckerImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Add CastMetricsHelper::RecordEventWithValue Created 4 years, 7 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
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/base/metrics/cast_metrics_helper.h" 5 #include "chromecast/base/metrics/cast_metrics_helper.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 30 matching lines...) Expand all
41 const char kMetricsNameAppInfoDelimiter = '#'; 41 const char kMetricsNameAppInfoDelimiter = '#';
42 42
43 std::unique_ptr<std::string> SerializeToJson(const base::Value& value) { 43 std::unique_ptr<std::string> SerializeToJson(const base::Value& value) {
44 std::unique_ptr<std::string> json_str(new std::string()); 44 std::unique_ptr<std::string> json_str(new std::string());
45 JSONStringValueSerializer serializer(json_str.get()); 45 JSONStringValueSerializer serializer(json_str.get());
46 if (!serializer.Serialize(value)) 46 if (!serializer.Serialize(value))
47 json_str.reset(nullptr); 47 json_str.reset(nullptr);
48 return json_str; 48 return json_str;
49 } 49 }
50 50
51 std::unique_ptr<base::DictionaryValue> CreateEventBase(
52 const std::string& name) {
53 std::unique_ptr<base::DictionaryValue> cast_event(
54 new base::DictionaryValue());
55 cast_event->SetString("name", name);
56 cast_event->SetDouble("time", base::TimeTicks::Now().ToInternalValue());
57
58 return cast_event;
59 }
60
51 } // namespace 61 } // namespace
52 62
53 // static 63 // static
54 64
55 // NOTE(gfhuang): This is a hacky way to encode/decode app infos into a 65 // NOTE(gfhuang): This is a hacky way to encode/decode app infos into a
56 // string. Mainly because it's hard to add another metrics serialization type 66 // string. Mainly because it's hard to add another metrics serialization type
57 // into components/metrics/serialization/. 67 // into components/metrics/serialization/.
58 // static 68 // static
59 bool CastMetricsHelper::DecodeAppInfoFromMetricsName( 69 bool CastMetricsHelper::DecodeAppInfoFromMetricsName(
60 const std::string& metrics_name, 70 const std::string& metrics_name,
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 void CastMetricsHelper::LogMediumTimeHistogramEvent( 294 void CastMetricsHelper::LogMediumTimeHistogramEvent(
285 const std::string& name, 295 const std::string& name,
286 const base::TimeDelta& value) { 296 const base::TimeDelta& value) {
287 // Follow UMA_HISTOGRAM_MEDIUM_TIMES definition. 297 // Follow UMA_HISTOGRAM_MEDIUM_TIMES definition.
288 LogTimeHistogramEvent(name, value, 298 LogTimeHistogramEvent(name, value,
289 base::TimeDelta::FromMilliseconds(10), 299 base::TimeDelta::FromMilliseconds(10),
290 base::TimeDelta::FromMinutes(3), 300 base::TimeDelta::FromMinutes(3),
291 50); 301 50);
292 } 302 }
293 303
304 void CastMetricsHelper::RecordEventWithValue(const std::string& event,
305 int value) {
306 std::unique_ptr<base::DictionaryValue> cast_event(CreateEventBase(event));
307 cast_event->SetInteger("value", value);
308 const std::string message = *SerializeToJson(*cast_event);
309 RecordSimpleAction(message);
310 }
311
294 void CastMetricsHelper::RecordApplicationEvent(const std::string& event) { 312 void CastMetricsHelper::RecordApplicationEvent(const std::string& event) {
295 std::unique_ptr<base::DictionaryValue> cast_event( 313 std::unique_ptr<base::DictionaryValue> cast_event(CreateEventBase(event));
296 new base::DictionaryValue());
297 cast_event->SetString("name", event);
298 base::TimeTicks now = base::TimeTicks::Now();
299 cast_event->SetDouble("time", now.ToInternalValue());
300 cast_event->SetString("app_id", app_id_); 314 cast_event->SetString("app_id", app_id_);
301 cast_event->SetString("session_id", session_id_); 315 cast_event->SetString("session_id", session_id_);
302 cast_event->SetString("sdk_version", sdk_version_); 316 cast_event->SetString("sdk_version", sdk_version_);
303 const std::string message = *SerializeToJson(*cast_event.get()).get(); 317 const std::string message = *SerializeToJson(*cast_event);
304 RecordSimpleAction(message); 318 RecordSimpleAction(message);
305 } 319 }
306 320
307 void CastMetricsHelper::RecordApplicationEventWithValue( 321 void CastMetricsHelper::RecordApplicationEventWithValue(
308 const std::string& event, 322 const std::string& event,
309 int value) { 323 int value) {
310 std::unique_ptr<base::DictionaryValue> cast_event( 324 std::unique_ptr<base::DictionaryValue> cast_event(CreateEventBase(event));
311 new base::DictionaryValue());
312 cast_event->SetString("name", event);
313 base::TimeTicks now = base::TimeTicks::Now();
314 cast_event->SetDouble("time", now.ToInternalValue());
315 cast_event->SetString("app_id", app_id_); 325 cast_event->SetString("app_id", app_id_);
316 cast_event->SetString("session_id", session_id_); 326 cast_event->SetString("session_id", session_id_);
317 cast_event->SetString("sdk_version", sdk_version_); 327 cast_event->SetString("sdk_version", sdk_version_);
318 cast_event->SetInteger("value", value); 328 cast_event->SetInteger("value", value);
319 const std::string message = *SerializeToJson(*cast_event.get()).get(); 329 const std::string message = *SerializeToJson(*cast_event);
320 RecordSimpleAction(message); 330 RecordSimpleAction(message);
321 } 331 }
322 332
323 } // namespace metrics 333 } // namespace metrics
324 } // namespace chromecast 334 } // namespace chromecast
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698