Index: chrome/browser/android/vr_shell/vr_usage_monitor.cc |
diff --git a/chrome/browser/android/vr_shell/vr_usage_monitor.cc b/chrome/browser/android/vr_shell/vr_usage_monitor.cc |
index 48cc9e3d39fa76533ce7f28db0d2551b9abdb54a..c29bfa9582bbb973c0ed878822f5aecb6627cd6e 100644 |
--- a/chrome/browser/android/vr_shell/vr_usage_monitor.cc |
+++ b/chrome/browser/android/vr_shell/vr_usage_monitor.cc |
@@ -123,6 +123,8 @@ class SessionTimerImpl : public SessionTimer { |
} |
}; |
+bool VrMetricsHelper::logged_gvr_version_ = false; |
+ |
void SessionTimer::StartSession(base::Time start_time) { |
// If the new start time is within the minimum session gap time from the last |
// stop, continue the previous session. |
@@ -176,6 +178,19 @@ void VrMetricsHelper::UpdateMode() { |
SetVrMode(mode); |
} |
+ViewerType VrMetricsHelper::GetVrViewerType(gvr_context* context) { |
+ auto gvr_api = gvr::GvrApi::WrapNonOwned(context); |
+ switch (gvr_api->GetViewerType()) { |
+ case gvr::ViewerType::GVR_VIEWER_TYPE_DAYDREAM: |
+ return ViewerType::DAYDREAM; |
+ case gvr::ViewerType::GVR_VIEWER_TYPE_CARDBOARD: |
+ return ViewerType::CARDBOARD; |
+ default: |
+ NOTREACHED(); |
+ return ViewerType::UNKNOWN_TYPE; |
+ } |
+} |
+ |
void VrMetricsHelper::SetWebVREnabled(bool is_webvr_presenting) { |
is_webvr_ = is_webvr_presenting; |
UpdateMode(); |
@@ -186,6 +201,58 @@ void VrMetricsHelper::SetVRActive(bool is_vr_enabled) { |
UpdateMode(); |
} |
+void VrMetricsHelper::LogGvrVersionAndVrViewerType(gvr_context* context, |
+ gvr_version version) { |
+ if (!logged_gvr_version_) { |
+ // Resolves to GVR_OTHER. Should not happen. |
+ int gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_OTHER_AND_UNKNOWN_TYPE); |
+ if (version.major < 0) { |
+ gvr_version_numeric = |
+ static_cast<int>(GVRVersionCrossedVRViewerType::GVR_NONE); |
+ } else if (version.major < 1) { |
+ gvr_version_numeric = 0; |
+ } else if (version.major == 1 && version.major <= 40) { |
+ switch (version.minor) { |
+ case 10: |
+ gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_1_10_AND_UNKNOWN_TYPE); |
+ break; |
+ case 20: |
+ gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_1_20_AND_UNKNOWN_TYPE); |
+ break; |
+ case 30: |
+ gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_1_30_AND_UNKNOWN_TYPE); |
+ break; |
+ case 40: |
+ gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_1_40_AND_UNKNOWN_TYPE); |
+ break; |
+ } |
+ } else { |
+ gvr_version_numeric = static_cast<int>( |
+ GVRVersionCrossedVRViewerType::GVR_NEWER_AND_UNKNOWN_TYPE); |
+ } |
+ ViewerType vr_viewer_type = |
+ context ? GetVrViewerType(context) : ViewerType::UNKNOWN_TYPE; |
+ |
+ int datum = static_cast<int>(vr_viewer_type) * 7 + gvr_version_numeric; |
ddorwin
2017/05/05 20:29:59
Magic number. Also, this doesn't seem maintainable
tiborg
2017/05/10 20:39:52
It's gone in favor of the UMA_HISTOGRAM_SPARSE_SLO
|
+ UMA_HISTOGRAM_ENUMERATION( |
+ "GVRVersionCrossedVRViewerType", datum, |
+ static_cast<int>(GVRVersionCrossedVRViewerType:: |
+ GVR_VERSION_CROSSED_VR_VIEWER_TYPE_MAX)); |
+ logged_gvr_version_ = true; |
+ } |
+} |
+ |
+void VrMetricsHelper::LogVrViewerType(gvr_context* context) { |
+ UMA_HISTOGRAM_ENUMERATION("VRViewerType", |
+ static_cast<int>(GetVrViewerType(context)), |
+ static_cast<int>(ViewerType::VIEWER_TYPE_MAX)); |
+} |
+ |
void VrMetricsHelper::SetVrMode(VRMode mode) { |
DCHECK(mode != mode_); |