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

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
« no previous file with comments | « chromecast/base/metrics/cast_metrics_helper.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..42b665c4e3f7b5b836c0c62fd07f8631f0b8a2c8 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"
@@ -36,8 +38,51 @@ const int kDisplayedFramesPerSecondPeriod = 1000000;
// Sample every 5 seconds, represented in microseconds.
const int kNominalVideoSamplePeriod = 5000000;
+const char kMetricsNameAppInfoDelimiter = '#';
+
} // namespace
+// static
+
+// NOTE(gfhuang): This is a hacky way to encode/decode app infos into a
+// string. Mainly because it's hard to add another metrics serialization type
+// into components/metrics/serialization/.
+// static
+bool CastMetricsHelper::DecodeAppInfoFromMetricsName(
+ const std::string& metrics_name,
+ std::string* action_name,
+ std::string* app_id,
+ std::string* session_id,
+ std::string* sdk_version) {
byungchul 2014/12/11 18:35:49 DCHECK()'s for pointers.
gfhuang 2014/12/11 19:20:26 Done.
+ if (metrics_name.find(kMetricsNameAppInfoDelimiter) == std::string::npos) {
+ return false;
+ }
byungchul 2014/12/11 18:35:49 remove {}
gfhuang 2014/12/11 19:20:26 Done.
+ std::vector<std::string> tokens;
+ base::SplitString(metrics_name, kMetricsNameAppInfoDelimiter, &tokens);
+ DCHECK_EQ(tokens.size(), 4u);
lcwu1 2014/12/11 18:41:57 If the number of the tokens is not 4, which means
gfhuang 2014/12/11 19:20:26 If the metrics name has magic char '#', but tokens
+ // The order of tokens should match EncodeAppInfoIntoMetricsName().
+ *action_name = tokens[0];
+ *app_id = tokens[1];
+ *session_id = tokens[2];
+ *sdk_version = tokens[3];
+ return true;
+}
+
+// static
+std::string CastMetricsHelper::EncodeAppInfoIntoMetricsName(
+ const std::string& action_name,
+ const std::string& app_id,
+ const std::string& session_id,
+ const std::string& sdk_version) {
+ 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);
+}
+
+// static
CastMetricsHelper* CastMetricsHelper::GetInstance() {
DCHECK(g_instance);
return g_instance;
@@ -71,14 +116,29 @@ 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;
}
void CastMetricsHelper::LogMediaPlay() {
- RecordSimpleAction(GetMetricsNameWithAppName("MediaPlay", ""));
+ MAKE_SURE_THREAD(LogMediaPlay);
+ RecordSimpleAction(EncodeAppInfoIntoMetricsName(
+ "MediaPlay", app_id_, session_id_, sdk_version_));
}
void CastMetricsHelper::LogMediaPause() {
- RecordSimpleAction(GetMetricsNameWithAppName("MediaPause", ""));
+ MAKE_SURE_THREAD(LogMediaPause);
+ RecordSimpleAction(EncodeAppInfoIntoMetricsName(
+ "MediaPause", app_id_, session_id_, sdk_version_));
}
void CastMetricsHelper::LogTimeToDisplayVideo() {
« no previous file with comments | « chromecast/base/metrics/cast_metrics_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698