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