Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/android/vr_shell/vr_metrics_util.h" | |
| 6 | |
| 7 #include "base/metrics/histogram_macros.h" | |
| 8 | |
| 9 static constexpr int kVrNotSupported = -3; | |
| 10 static constexpr int kGvrNotInstalled = -2; | |
| 11 static constexpr int kGvrTooOld = -1; | |
| 12 | |
| 13 namespace vr_shell { | |
| 14 | |
| 15 bool VrMetricsUtil::has_logged_gvr_version_ = false; | |
| 16 | |
| 17 void VrMetricsUtil::LogGvrVersionForVrViewerType( | |
| 18 gvr_context* context, | |
| 19 const VrCoreInfo& vr_core_info) { | |
| 20 if (has_logged_gvr_version_) { | |
| 21 return; | |
| 22 } | |
| 23 | |
| 24 ViewerType vr_viewer_type = | |
| 25 context ? GetVrViewerType(context) : ViewerType::UNKNOWN_TYPE; | |
| 26 std::string histogram_name; | |
| 27 switch (vr_viewer_type) { | |
| 28 case ViewerType::CARDBOARD: | |
| 29 histogram_name = "VRRuntimeVersion.GVR.Cardboard"; | |
| 30 break; | |
| 31 case ViewerType::DAYDREAM: | |
| 32 histogram_name = "VRRuntimeVersion.GVR.Daydream"; | |
| 33 break; | |
| 34 default: | |
| 35 histogram_name = "VRRuntimeVersion.GVR.Unknown"; | |
| 36 break; | |
| 37 } | |
| 38 | |
| 39 uint32_t encoded_gvr_version; | |
| 40 switch (vr_core_info.compatibility) { | |
| 41 case VrCoreCompatibility::VR_CORE_COMPATIBILITY_VR_NOT_SUPPORTED: | |
| 42 encoded_gvr_version = kVrNotSupported; | |
| 43 break; | |
| 44 case VrCoreCompatibility::VR_CORE_COMPATIBILITY_VR_NOT_AVAILABLE: | |
| 45 encoded_gvr_version = kGvrNotInstalled; | |
| 46 break; | |
| 47 case VrCoreCompatibility::VR_CORE_COMPATIBILITY_VR_OUT_OF_DATE: | |
|
tiborg
2017/05/23 15:47:25
ddorwin@ Should we also log that VrCore is too old
| |
| 48 if (vr_core_info.gvr_version.major == 0 && | |
| 49 vr_core_info.gvr_version.minor == 0 && | |
| 50 vr_core_info.gvr_version.patch == 0) { | |
| 51 encoded_gvr_version = kGvrTooOld; | |
| 52 break; | |
| 53 } | |
| 54 case VrCoreCompatibility::VR_CORE_COMPATIBILITY_VR_READY: | |
| 55 encoded_gvr_version = | |
| 56 std::min(vr_core_info.gvr_version.major, 999) * 1000000 + | |
| 57 std::min(vr_core_info.gvr_version.minor, 999) * 1000 + | |
| 58 std::min(vr_core_info.gvr_version.patch, 999); | |
| 59 break; | |
| 60 } | |
| 61 | |
| 62 UMA_HISTOGRAM_SPARSE_SLOWLY(histogram_name.c_str(), encoded_gvr_version); | |
| 63 | |
| 64 has_logged_gvr_version_ = true; | |
| 65 } | |
| 66 | |
| 67 void VrMetricsUtil::LogVrViewerType(gvr_context* context) { | |
| 68 UMA_HISTOGRAM_ENUMERATION("VRViewerType", | |
| 69 static_cast<int>(GetVrViewerType(context)), | |
| 70 static_cast<int>(ViewerType::VIEWER_TYPE_MAX)); | |
| 71 } | |
| 72 | |
| 73 ViewerType VrMetricsUtil::GetVrViewerType(gvr_context* context) { | |
| 74 auto gvr_api = gvr::GvrApi::WrapNonOwned(context); | |
| 75 switch (gvr_api->GetViewerType()) { | |
| 76 case gvr::ViewerType::GVR_VIEWER_TYPE_DAYDREAM: | |
| 77 return ViewerType::DAYDREAM; | |
| 78 case gvr::ViewerType::GVR_VIEWER_TYPE_CARDBOARD: | |
| 79 return ViewerType::CARDBOARD; | |
| 80 default: | |
| 81 NOTREACHED(); | |
| 82 return ViewerType::UNKNOWN_TYPE; | |
| 83 } | |
| 84 } | |
| 85 | |
| 86 } // namespace vr_shell | |
| OLD | NEW |