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

Unified Diff: chrome/browser/media/router/media_router_metrics.cc

Issue 1765143002: [Media Router] Add UMA histograms tracking component extension version/wakeups (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Cleanups Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/media/router/media_router_metrics.cc
diff --git a/chrome/browser/media/router/media_router_metrics.cc b/chrome/browser/media/router/media_router_metrics.cc
index cda93c8ee399e6496c6acc6dec6cc25fdb67e213..54ef591102d61c8df59475972c3b7e2325cdc3b4 100644
--- a/chrome/browser/media/router/media_router_metrics.cc
+++ b/chrome/browser/media/router/media_router_metrics.cc
@@ -4,8 +4,13 @@
#include "chrome/browser/media/router/media_router_metrics.h"
+#include <limits.h>
+
#include "base/macros.h"
#include "base/metrics/histogram_macros.h"
+#include "base/version.h"
+#include "components/version_info/version_info.h"
+#include "extensions/common/extension.h"
namespace media_router {
@@ -64,4 +69,70 @@ void MediaRouterMetrics::RecordRouteCreationOutcome(
static_cast<int>(MediaRouterRouteCreationOutcome::TOTAL_COUNT));
}
+// static
+void MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ const extensions::Extension& extension) {
+ const base::Version* extension_version = extension.version();
+ if (!extension_version) {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::UNKNOWN);
+ return;
+ }
+
+ base::Version browser_version(version_info::GetVersionNumber());
+ int version_difference =
+ GetVersionDifference(*extension_version, browser_version);
+ if (version_difference == std::numeric_limits<int>::min()) {
+ // Extension installed, version is invalid.
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::UNKNOWN);
+ } else if (version_difference >= 0) {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::SAME_VERSION);
+ } else if (version_difference == -1) {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::PREVIOUS_VERSION);
+ } else {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::OUT_OF_DATE_VERSION);
+ }
+}
+
+// static
+void MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion version) {
+ DCHECK_NE(static_cast<int>(version),
Ilya Sherman 2016/03/16 22:23:05 Optional nit: Maybe DCHECK_LT? Ditto below.
+ static_cast<int>(MediaRouteProviderVersion::TOTAL_COUNT));
+ UMA_HISTOGRAM_ENUMERATION(
+ "MediaRouter.Provider.Version", static_cast<int>(version),
+ static_cast<int>(MediaRouteProviderVersion::TOTAL_COUNT));
+}
+
+// static
+void MediaRouterMetrics::RecordMediaRouteProviderWakeup(
+ MediaRouteProviderWakeup wakeup) {
+ DCHECK_NE(static_cast<int>(wakeup),
+ static_cast<int>(MediaRouteProviderWakeup::TOTAL_COUNT));
+ UMA_HISTOGRAM_ENUMERATION(
+ "MediaRouter.Provider.Wakeup", static_cast<int>(wakeup),
+ static_cast<int>(MediaRouteProviderWakeup::TOTAL_COUNT));
+}
+
+// static
+int MediaRouterMetrics::GetVersionDifference(const base::Version& first,
+ const base::Version& second) {
+ if (!first.IsValid() || !first.components().size() || !second.IsValid() ||
+ !second.components().size()) {
+ return std::numeric_limits<int>::min();
+ }
+
+ uint32_t first_major = first.components()[0];
+ uint32_t second_major = second.components()[0];
+ // Sanity check.
+ if (first_major < 1 || second_major < 1)
+ return std::numeric_limits<int>::min();
+
+ return first_major - second_major;
+}
+
} // namespace media_router

Powered by Google App Engine
This is Rietveld 408576698