Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 |
| OLD | NEW |