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 |