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..2f0c05c876f62e45a5266427bd0dcd40cc953fa7 100644 |
| --- a/chrome/browser/android/vr_shell/vr_usage_monitor.cc |
| +++ b/chrome/browser/android/vr_shell/vr_usage_monitor.cc |
| @@ -162,6 +162,75 @@ void SessionTimer::StopSession(bool continuable, base::Time stop_time) { |
| } |
| } |
| +#ifdef ANDROID |
| +bool VrMetricsUtil::logged_gvr_version_ = false; |
| + |
| +void VrMetricsUtil::LogGvrVersionForVrViewerType( |
| + gvr_context* context, |
| + GvrVersionStatus version_status, |
| + gvr_version version) { |
| + if (!logged_gvr_version_) { |
|
ddorwin
2017/05/16 00:15:51
Instead, return early. That simplifies the logic b
tiborg
2017/05/23 15:47:25
Done.
|
| + ViewerType vr_viewer_type = |
| + context ? GetVrViewerType(context) : ViewerType::UNKNOWN_TYPE; |
| + std::string histogram_name; |
| + switch (vr_viewer_type) { |
| + case ViewerType::CARDBOARD: |
| + histogram_name = "GVRVersion.Cardboard"; |
|
ddorwin
2017/05/16 00:15:51
Thinking ahead to supporting other platforms, mayb
tiborg
2017/05/23 15:47:25
Done.
|
| + break; |
| + case ViewerType::DAYDREAM: |
| + histogram_name = "GVRVersion.Daydream"; |
| + break; |
| + default: |
| + histogram_name = "GVRVersion.Unknown"; |
| + break; |
| + } |
| + |
| + uint32_t encoded_gvr_version; |
| + switch (version_status) { |
| + case GvrVersionStatus::PRECISE: |
| + if (version.major < 0 || version.minor < 0 || version.patch < 0) { |
|
ddorwin
2017/05/16 00:15:51
What are these checks doing? Why would one of them
tiborg
2017/05/23 15:47:25
I just thought you can basically call this functio
|
| + encoded_gvr_version = std::min(version.major, 999) * 1000000 + |
| + std::min(version.minor, 999) * 1000 + |
| + std::min(version.patch, 999); |
| + } else { |
| + encoded_gvr_version = -2; |
|
ddorwin
2017/05/16 00:15:51
Magic numbers should be constants.
tiborg
2017/05/23 15:47:25
Done.
|
| + } |
| + break; |
| + case GvrVersionStatus::OLDER: |
| + encoded_gvr_version = 0; |
|
ddorwin
2017/05/16 00:15:51
Using 0 to mean something seems odd. Probably all
tiborg
2017/05/23 15:47:25
Done.
|
| + break; |
| + case GvrVersionStatus::UNKNOWN: |
| + default: |
| + encoded_gvr_version = -1; |
|
ddorwin
2017/05/16 00:15:51
As noted previously, we could report all the value
tiborg
2017/05/23 15:47:25
Done.
|
| + break; |
| + } |
| + |
| + UMA_HISTOGRAM_SPARSE_SLOWLY(histogram_name.c_str(), encoded_gvr_version); |
| + |
| + logged_gvr_version_ = true; |
| + } |
| +} |
| + |
| +void VrMetricsUtil::LogVrViewerType(gvr_context* context) { |
| + UMA_HISTOGRAM_ENUMERATION("VRViewerType", |
| + static_cast<int>(GetVrViewerType(context)), |
| + static_cast<int>(ViewerType::VIEWER_TYPE_MAX)); |
| +} |
| + |
| +ViewerType VrMetricsUtil::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; |
| + } |
| +} |
| +#endif // ANDROID |
| + |
| void VrMetricsHelper::UpdateMode() { |
| VRMode mode; |
| if (!is_vr_enabled_) { |