Chromium Code Reviews| 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_); |