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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "chrome/browser/media/router/media_router_metrics.h" 5 #include "chrome/browser/media/router/media_router_metrics.h"
6 6
7 #include <limits.h>
8
7 #include "base/macros.h" 9 #include "base/macros.h"
8 #include "base/metrics/histogram_macros.h" 10 #include "base/metrics/histogram_macros.h"
11 #include "base/version.h"
12 #include "components/version_info/version_info.h"
13 #include "extensions/common/extension.h"
9 14
10 namespace media_router { 15 namespace media_router {
11 16
12 // static 17 // static
13 void MediaRouterMetrics::RecordMediaRouterDialogOrigin( 18 void MediaRouterMetrics::RecordMediaRouterDialogOrigin(
14 MediaRouterDialogOpenOrigin origin) { 19 MediaRouterDialogOpenOrigin origin) {
15 DCHECK_NE(static_cast<int>(origin), 20 DCHECK_LT(static_cast<int>(origin),
16 static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT)); 21 static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT));
17 UMA_HISTOGRAM_ENUMERATION( 22 UMA_HISTOGRAM_ENUMERATION(
18 "MediaRouter.Icon.Click.Location", static_cast<int>(origin), 23 "MediaRouter.Icon.Click.Location", static_cast<int>(origin),
19 static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT)); 24 static_cast<int>(MediaRouterDialogOpenOrigin::TOTAL_COUNT));
20 } 25 }
21 26
22 // static 27 // static
23 void MediaRouterMetrics::RecordMediaRouteProviderWakeReason( 28 void MediaRouterMetrics::RecordMediaRouteProviderWakeReason(
24 MediaRouteProviderWakeReason reason) { 29 MediaRouteProviderWakeReason reason) {
25 DCHECK_NE(static_cast<int>(reason), 30 DCHECK_LT(static_cast<int>(reason),
26 static_cast<int>(MediaRouteProviderWakeReason::TOTAL_COUNT)); 31 static_cast<int>(MediaRouteProviderWakeReason::TOTAL_COUNT));
27 UMA_HISTOGRAM_ENUMERATION( 32 UMA_HISTOGRAM_ENUMERATION(
28 "MediaRouter.Provider.WakeReason", static_cast<int>(reason), 33 "MediaRouter.Provider.WakeReason", static_cast<int>(reason),
29 static_cast<int>(MediaRouteProviderWakeReason::TOTAL_COUNT)); 34 static_cast<int>(MediaRouteProviderWakeReason::TOTAL_COUNT));
30 } 35 }
31 36
32 // static 37 // static
33 void MediaRouterMetrics::RecordMediaRouterDialogPaint( 38 void MediaRouterMetrics::RecordMediaRouterDialogPaint(
34 const base::TimeDelta delta) { 39 const base::TimeDelta delta) {
35 UMA_HISTOGRAM_TIMES("MediaRouter.Ui.Dialog.Paint", 40 UMA_HISTOGRAM_TIMES("MediaRouter.Ui.Dialog.Paint",
36 delta); 41 delta);
37 } 42 }
38 43
39 // static 44 // static
40 void MediaRouterMetrics::RecordMediaRouterDialogLoaded( 45 void MediaRouterMetrics::RecordMediaRouterDialogLoaded(
41 const base::TimeDelta delta) { 46 const base::TimeDelta delta) {
42 UMA_HISTOGRAM_TIMES("MediaRouter.Ui.Dialog.LoadedWithData", 47 UMA_HISTOGRAM_TIMES("MediaRouter.Ui.Dialog.LoadedWithData",
43 delta); 48 delta);
44 } 49 }
45 50
46 // static 51 // static
47 void MediaRouterMetrics::RecordMediaRouterInitialUserAction( 52 void MediaRouterMetrics::RecordMediaRouterInitialUserAction(
48 MediaRouterUserAction action) { 53 MediaRouterUserAction action) {
49 DCHECK_NE(static_cast<int>(action), 54 DCHECK_LT(static_cast<int>(action),
50 static_cast<int>(MediaRouterUserAction::TOTAL_COUNT)); 55 static_cast<int>(MediaRouterUserAction::TOTAL_COUNT));
51 UMA_HISTOGRAM_ENUMERATION( 56 UMA_HISTOGRAM_ENUMERATION(
52 "MediaRouter.Ui.FirstAction", static_cast<int>(action), 57 "MediaRouter.Ui.FirstAction", static_cast<int>(action),
53 static_cast<int>(MediaRouterUserAction::TOTAL_COUNT)); 58 static_cast<int>(MediaRouterUserAction::TOTAL_COUNT));
54 } 59 }
55 60
56 // static 61 // static
57 void MediaRouterMetrics::RecordRouteCreationOutcome( 62 void MediaRouterMetrics::RecordRouteCreationOutcome(
58 MediaRouterRouteCreationOutcome outcome) { 63 MediaRouterRouteCreationOutcome outcome) {
59 DCHECK_NE(static_cast<int>(outcome), 64 DCHECK_LT(static_cast<int>(outcome),
60 static_cast<int>( 65 static_cast<int>(MediaRouterRouteCreationOutcome::TOTAL_COUNT));
61 MediaRouterRouteCreationOutcome::TOTAL_COUNT));
62 UMA_HISTOGRAM_ENUMERATION( 66 UMA_HISTOGRAM_ENUMERATION(
63 "MediaRouter.Route.CreationOutcome", static_cast<int>(outcome), 67 "MediaRouter.Route.CreationOutcome", static_cast<int>(outcome),
64 static_cast<int>(MediaRouterRouteCreationOutcome::TOTAL_COUNT)); 68 static_cast<int>(MediaRouterRouteCreationOutcome::TOTAL_COUNT));
65 } 69 }
66 70
71 // static
72 void MediaRouterMetrics::RecordMediaRouteProviderVersion(
73 const extensions::Extension& extension) {
74 const base::Version* extension_version = extension.version();
75 if (!extension_version) {
76 MediaRouterMetrics::RecordMediaRouteProviderVersion(
77 MediaRouteProviderVersion::UNKNOWN);
78 return;
79 }
80
81 base::Version browser_version(version_info::GetVersionNumber());
82 int version_difference =
83 GetVersionDifference(*extension_version, browser_version);
84 if (version_difference == std::numeric_limits<int>::min()) {
85 // Extension installed, version is invalid.
86 MediaRouterMetrics::RecordMediaRouteProviderVersion(
87 MediaRouteProviderVersion::UNKNOWN);
88 } else if (version_difference >= 0) {
89 MediaRouterMetrics::RecordMediaRouteProviderVersion(
90 MediaRouteProviderVersion::SAME_VERSION_AS_CHROME);
91 } else if (version_difference == -1) {
92 MediaRouterMetrics::RecordMediaRouteProviderVersion(
93 MediaRouteProviderVersion::ONE_VERSION_BEHIND_CHROME);
94 } else {
95 MediaRouterMetrics::RecordMediaRouteProviderVersion(
96 MediaRouteProviderVersion::MULTIPLE_VERSIONS_BEHIND_CHROME);
97 }
98 }
99
100 // static
101 void MediaRouterMetrics::RecordMediaRouteProviderVersion(
102 MediaRouteProviderVersion version) {
103 DCHECK_LT(static_cast<int>(version),
104 static_cast<int>(MediaRouteProviderVersion::TOTAL_COUNT));
105 UMA_HISTOGRAM_ENUMERATION(
106 "MediaRouter.Provider.Version", static_cast<int>(version),
107 static_cast<int>(MediaRouteProviderVersion::TOTAL_COUNT));
108 }
109
110 // static
111 void MediaRouterMetrics::RecordMediaRouteProviderWakeup(
112 MediaRouteProviderWakeup wakeup) {
113 DCHECK_LT(static_cast<int>(wakeup),
114 static_cast<int>(MediaRouteProviderWakeup::TOTAL_COUNT));
115 UMA_HISTOGRAM_ENUMERATION(
116 "MediaRouter.Provider.Wakeup", static_cast<int>(wakeup),
117 static_cast<int>(MediaRouteProviderWakeup::TOTAL_COUNT));
118 }
119
120 // static
121 int MediaRouterMetrics::GetVersionDifference(const base::Version& first,
122 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.
123 if (!first.IsValid() || !first.components().size() || !second.IsValid() ||
124 !second.components().size()) {
125 return std::numeric_limits<int>::min();
126 }
127
128 uint32_t first_major = first.components()[0];
129 uint32_t second_major = second.components()[0];
130 // Sanity check.
131 if (first_major < 1 || second_major < 1)
132 return std::numeric_limits<int>::min();
133
134 return first_major - second_major;
135 }
136
67 } // namespace media_router 137 } // namespace media_router
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698