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

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: Respond to isherman@ comments 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..082fdfbcbf92466f03a2427df670eafa248682fc 100644
--- a/chrome/browser/media/router/media_router_metrics.cc
+++ b/chrome/browser/media/router/media_router_metrics.cc
@@ -4,15 +4,20 @@
#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 {
// static
void MediaRouterMetrics::RecordMediaRouterDialogOrigin(
MediaRouterDialogOpenOrigin origin) {
- DCHECK_NE(static_cast<int>(origin),
+ DCHECK_LT(static_cast<int>(origin),
static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT));
UMA_HISTOGRAM_ENUMERATION(
"MediaRouter.Icon.Click.Location", static_cast<int>(origin),
@@ -22,7 +27,7 @@ void MediaRouterMetrics::RecordMediaRouterDialogOrigin(
// static
void MediaRouterMetrics::RecordMediaRouteProviderWakeReason(
MediaRouteProviderWakeReason reason) {
- DCHECK_NE(static_cast<int>(reason),
+ DCHECK_LT(static_cast<int>(reason),
static_cast<int>(MediaRouteProviderWakeReason::TOTAL_COUNT));
UMA_HISTOGRAM_ENUMERATION(
"MediaRouter.Provider.WakeReason", static_cast<int>(reason),
@@ -46,7 +51,7 @@ void MediaRouterMetrics::RecordMediaRouterDialogLoaded(
// static
void MediaRouterMetrics::RecordMediaRouterInitialUserAction(
MediaRouterUserAction action) {
- DCHECK_NE(static_cast<int>(action),
+ DCHECK_LT(static_cast<int>(action),
static_cast<int>(MediaRouterUserAction::TOTAL_COUNT));
UMA_HISTOGRAM_ENUMERATION(
"MediaRouter.Ui.FirstAction", static_cast<int>(action),
@@ -56,12 +61,77 @@ void MediaRouterMetrics::RecordMediaRouterInitialUserAction(
// static
void MediaRouterMetrics::RecordRouteCreationOutcome(
MediaRouterRouteCreationOutcome outcome) {
- DCHECK_NE(static_cast<int>(outcome),
- static_cast<int>(
- MediaRouterRouteCreationOutcome::TOTAL_COUNT));
+ DCHECK_LT(static_cast<int>(outcome),
+ static_cast<int>(MediaRouterRouteCreationOutcome::TOTAL_COUNT));
UMA_HISTOGRAM_ENUMERATION(
"MediaRouter.Route.CreationOutcome", static_cast<int>(outcome),
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_AS_CHROME);
+ } else if (version_difference == -1) {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::ONE_VERSION_BEHIND_CHROME);
+ } else {
+ MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion::MULTIPLE_VERSIONS_BEHIND_CHROME);
+ }
+}
+
+// static
+void MediaRouterMetrics::RecordMediaRouteProviderVersion(
+ MediaRouteProviderVersion version) {
+ DCHECK_LT(static_cast<int>(version),
+ 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_LT(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) {
Wez 2016/03/18 18:35:43 nit: Since we don't need the actual version differ
mark a. foltz 2016/03/18 20:11:00 I'm not sure it's a good idea to have base::Versio
mark a. foltz 2016/03/18 20:11:00 I don't think base::Version should know about enum
Wez 2016/03/18 20:12:31 Sorry, s/version/function in my original comment.
+ 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