Index: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetMetrics.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetMetrics.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetMetrics.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..92ed8f90229976775f3fcab363d74cbbf3da647e |
--- /dev/null |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetMetrics.java |
@@ -0,0 +1,60 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+package org.chromium.chrome.browser.widget.bottomsheet; |
+ |
+import org.chromium.base.metrics.RecordUserAction; |
+import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.BottomSheetContent; |
+ |
+/** |
+ * Records user action and histograms related to the {@link BottomSheet}. |
+ */ |
+public class BottomSheetMetrics extends EmptyBottomSheetObserver { |
+ private boolean mIsSheetOpen; |
+ private BottomSheetContent mLastContent; |
+ |
+ /** |
+ * @param sheet The {@link BottomSheet} to record metrics for. |
+ */ |
+ public BottomSheetMetrics(BottomSheet sheet) { |
+ sheet.addObserver(this); |
+ } |
+ |
+ @Override |
+ public void onSheetOpened() { |
+ if (mIsSheetOpen) return; |
+ |
+ mIsSheetOpen = true; |
+ RecordUserAction.record("Android.ChromeHome.Opened"); |
+ } |
+ |
+ @Override |
+ public void onSheetClosed() { |
+ if (!mIsSheetOpen) return; |
mdjones
2017/03/17 18:17:26
Are the onSheetOpened and onSheetClosed events not
Theresa
2017/03/17 20:26:30
onSheetClosed gets called when the activity is fir
mdjones
2017/03/17 21:53:32
I think I'd rather have this check in the bottom s
Theresa
2017/03/17 22:55:25
Done.
|
+ |
+ mIsSheetOpen = false; |
+ RecordUserAction.record("Android.ChromeHome.Closed"); |
+ } |
+ |
+ @Override |
+ public void onSheetStateChanged(int newState) { |
+ if (newState == BottomSheet.SHEET_STATE_HALF) { |
+ RecordUserAction.record("Android.ChromeHome.HalfState"); |
+ } else if (newState == BottomSheet.SHEET_STATE_FULL) { |
+ RecordUserAction.record("Android.ChromeHome.FullState"); |
+ } |
+ } |
+ |
+ @Override |
+ public void onSheetContentChanged(BottomSheetContent newContent) { |
+ if (mLastContent == null || !mIsSheetOpen) { |
+ mLastContent = newContent; |
+ return; |
+ } |
+ |
+ mLastContent = newContent; |
+ RecordUserAction.record("Android.ChromeHome.Show" + mLastContent.getMetricsName()); |
Theresa
2017/03/17 16:07:12
The upside to this approach is that it's simple. T
mdjones
2017/03/17 18:17:26
Though I like the current approach, I'm inclined t
Theresa
2017/03/17 20:26:30
Done.
|
+ } |
+ |
+} |