Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(107)

Side by Side Diff: chrome/browser/android/vr_shell/vr_usage_monitor.cc

Issue 2865463003: Tracks GVR version crossed with headset type using UMA. (Closed)
Patch Set: Rebased on ToT, changed logging to UMA_HISTOGRAM_SPARSE_SLOWLY Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/vr_shell/vr_usage_monitor.h" 5 #include "chrome/browser/android/vr_shell/vr_usage_monitor.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/metrics/histogram_macros.h" 8 #include "base/metrics/histogram_macros.h"
9 #include "chrome/browser/browser_process.h" 9 #include "chrome/browser/browser_process.h"
10 #include "components/rappor/public/rappor_utils.h" 10 #include "components/rappor/public/rappor_utils.h"
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 // send the histogram now if we aren't continuable, clearing segment state 155 // send the histogram now if we aren't continuable, clearing segment state
156 SendAccumulatedSessionTime(); 156 SendAccumulatedSessionTime();
157 157
158 // clear out start/stop/accumulated time 158 // clear out start/stop/accumulated time
159 start_time_ = base::Time(); 159 start_time_ = base::Time();
160 stop_time_ = base::Time(); 160 stop_time_ = base::Time();
161 accumulated_time_ = base::TimeDelta(); 161 accumulated_time_ = base::TimeDelta();
162 } 162 }
163 } 163 }
164 164
165 #ifdef ANDROID
166 bool VrMetricsUtil::logged_gvr_version_ = false;
167
168 void VrMetricsUtil::LogGvrVersionForVrViewerType(
169 gvr_context* context,
170 GvrVersionStatus version_status,
171 gvr_version version) {
172 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.
173 ViewerType vr_viewer_type =
174 context ? GetVrViewerType(context) : ViewerType::UNKNOWN_TYPE;
175 std::string histogram_name;
176 switch (vr_viewer_type) {
177 case ViewerType::CARDBOARD:
178 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.
179 break;
180 case ViewerType::DAYDREAM:
181 histogram_name = "GVRVersion.Daydream";
182 break;
183 default:
184 histogram_name = "GVRVersion.Unknown";
185 break;
186 }
187
188 uint32_t encoded_gvr_version;
189 switch (version_status) {
190 case GvrVersionStatus::PRECISE:
191 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
192 encoded_gvr_version = std::min(version.major, 999) * 1000000 +
193 std::min(version.minor, 999) * 1000 +
194 std::min(version.patch, 999);
195 } else {
196 encoded_gvr_version = -2;
ddorwin 2017/05/16 00:15:51 Magic numbers should be constants.
tiborg 2017/05/23 15:47:25 Done.
197 }
198 break;
199 case GvrVersionStatus::OLDER:
200 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.
201 break;
202 case GvrVersionStatus::UNKNOWN:
203 default:
204 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.
205 break;
206 }
207
208 UMA_HISTOGRAM_SPARSE_SLOWLY(histogram_name.c_str(), encoded_gvr_version);
209
210 logged_gvr_version_ = true;
211 }
212 }
213
214 void VrMetricsUtil::LogVrViewerType(gvr_context* context) {
215 UMA_HISTOGRAM_ENUMERATION("VRViewerType",
216 static_cast<int>(GetVrViewerType(context)),
217 static_cast<int>(ViewerType::VIEWER_TYPE_MAX));
218 }
219
220 ViewerType VrMetricsUtil::GetVrViewerType(gvr_context* context) {
221 auto gvr_api = gvr::GvrApi::WrapNonOwned(context);
222 switch (gvr_api->GetViewerType()) {
223 case gvr::ViewerType::GVR_VIEWER_TYPE_DAYDREAM:
224 return ViewerType::DAYDREAM;
225 case gvr::ViewerType::GVR_VIEWER_TYPE_CARDBOARD:
226 return ViewerType::CARDBOARD;
227 default:
228 NOTREACHED();
229 return ViewerType::UNKNOWN_TYPE;
230 }
231 }
232 #endif // ANDROID
233
165 void VrMetricsHelper::UpdateMode() { 234 void VrMetricsHelper::UpdateMode() {
166 VRMode mode; 235 VRMode mode;
167 if (!is_vr_enabled_) { 236 if (!is_vr_enabled_) {
168 mode = VRMode::NO_VR; 237 mode = VRMode::NO_VR;
169 } else if (is_webvr_) { 238 } else if (is_webvr_) {
170 mode = VRMode::WEBVR; 239 mode = VRMode::WEBVR;
171 } else { 240 } else {
172 mode = is_fullscreen_ ? VRMode::VR_FULLSCREEN : VRMode::VR_BROWSER; 241 mode = is_fullscreen_ ? VRMode::VR_FULLSCREEN : VRMode::VR_BROWSER;
173 } 242 }
174 243
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 } 398 }
330 } 399 }
331 400
332 void VrMetricsHelper::DidToggleFullscreenModeForTab(bool entered_fullscreen, 401 void VrMetricsHelper::DidToggleFullscreenModeForTab(bool entered_fullscreen,
333 bool will_cause_resize) { 402 bool will_cause_resize) {
334 is_fullscreen_ = entered_fullscreen; 403 is_fullscreen_ = entered_fullscreen;
335 UpdateMode(); 404 UpdateMode();
336 } 405 }
337 406
338 } // namespace vr_shell 407 } // namespace vr_shell
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698