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

Unified Diff: chromecast/base/metrics/cast_metrics_helper.cc

Issue 786233003: Add UpdateCurrentAppInfo() interface to record info about current app, including (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: chromecast/base/metrics/cast_metrics_helper.cc
diff --git a/chromecast/base/metrics/cast_metrics_helper.cc b/chromecast/base/metrics/cast_metrics_helper.cc
index dda5f51ac82a5218ffe18a111427d1e8d0aa0383..d2d21ad67b29691830022aa009a71048d72236bc 100644
--- a/chromecast/base/metrics/cast_metrics_helper.cc
+++ b/chromecast/base/metrics/cast_metrics_helper.cc
@@ -10,6 +10,8 @@
#include "base/message_loop/message_loop_proxy.h"
#include "base/metrics/histogram.h"
#include "base/metrics/user_metrics.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
#include "chromecast/base/metrics/cast_histograms.h"
#include "chromecast/base/metrics/grouped_histogram.h"
@@ -38,11 +40,39 @@ const int kNominalVideoSamplePeriod = 5000000;
} // namespace
+// static
+const char CastMetricsHelper::kMetricsNameAppInfoDelimiter = '#';
+
+// static
+CastMetricsHelper::MetricsAppInfo CastMetricsHelper::GetAppInfoFromMetricsName(
+ const std::string& metrics_name) {
+ // TODO(gfhuang): This is a hacky way to encode/decode app infos into a
gunsch 2014/12/10 22:43:58 Got a planned approach for the TODO, or is this ju
gfhuang 2014/12/11 02:59:39 Change to a NOTE.
+ // string. Mainly because it's hard to add another metrics serialization type
+ // into components/metrics/serialization/.
+ std::vector<std::string> tokens;
+ base::SplitString(metrics_name, kMetricsNameAppInfoDelimiter, &tokens);
+ DCHECK_EQ(tokens.size(), 4u);
+ CastMetricsHelper::MetricsAppInfo metrics_app_info;
+ // The order of tokens should match GetMetricsNameWithAppInfo().
+ metrics_app_info.action_name = tokens[0];
+ metrics_app_info.app_id = tokens[1];
+ metrics_app_info.session_id = tokens[2];
+ metrics_app_info.sdk_version = tokens[3];
+ return metrics_app_info;
+}
+
+// static
CastMetricsHelper* CastMetricsHelper::GetInstance() {
DCHECK(g_instance);
return g_instance;
}
+CastMetricsHelper::MetricsAppInfo::MetricsAppInfo() {
+}
+
+CastMetricsHelper::MetricsAppInfo::~MetricsAppInfo() {
+}
+
CastMetricsHelper::CastMetricsHelper(
scoped_refptr<base::MessageLoopProxy> message_loop_proxy)
: message_loop_proxy_(message_loop_proxy),
@@ -71,14 +101,24 @@ void CastMetricsHelper::TagAppStart(const std::string& arg_app_name) {
new_startup_time_ = true;
TagAppStartForGroupedHistograms(app_name_);
+ // Clear app info
+ UpdateCurrentAppInfo("", "", "");
}
+void CastMetricsHelper::UpdateCurrentAppInfo(const std::string& app_id,
+ const std::string& session_id,
+ const std::string& sdk_version) {
+ MAKE_SURE_THREAD(UpdateCurrentAppInfo, app_id, session_id, sdk_version);
+ app_id_ = app_id;
+ session_id_ = session_id;
+ sdk_version_ = sdk_version;
+}
gunsch 2014/12/10 22:43:58 style nit: blank line between methods
gfhuang 2014/12/11 02:59:39 Done.
void CastMetricsHelper::LogMediaPlay() {
- RecordSimpleAction(GetMetricsNameWithAppName("MediaPlay", ""));
+ RecordSimpleAction(GetMetricsNameWithAppInfo("MediaPlay"));
}
void CastMetricsHelper::LogMediaPause() {
- RecordSimpleAction(GetMetricsNameWithAppName("MediaPause", ""));
+ RecordSimpleAction(GetMetricsNameWithAppInfo("MediaPause"));
}
void CastMetricsHelper::LogTimeToDisplayVideo() {
@@ -189,6 +229,17 @@ std::string CastMetricsHelper::GetMetricsNameWithAppName(
return metrics_name;
}
+std::string CastMetricsHelper::GetMetricsNameWithAppInfo(
+ const std::string& action_name) const {
+ DCHECK(message_loop_proxy_->BelongsToCurrentThread());
+ std::vector<std::string> parts;
+ parts.push_back(action_name);
+ parts.push_back(app_id_);
+ parts.push_back(session_id_);
+ parts.push_back(sdk_version_);
+ return JoinString(parts, kMetricsNameAppInfoDelimiter);
+}
+
void CastMetricsHelper::SetMetricsSink(MetricsSink* delegate) {
MAKE_SURE_THREAD(SetMetricsSink, delegate);
metrics_sink_ = delegate;

Powered by Google App Engine
This is Rietveld 408576698