Chromium Code Reviews| 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..9b5aaedf94dcad6c8dba5089f6e3fa979df128fb |
| --- /dev/null |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetMetrics.java |
| @@ -0,0 +1,67 @@ |
| +// 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); |
|
gone
2017/03/20 20:29:32
This should be left to the BottomSheet to do. It'
Theresa
2017/03/20 20:59:12
Done.
|
| + } |
| + |
| + @Override |
| + public void onSheetOpened() { |
| + mIsSheetOpen = true; |
| + RecordUserAction.record("Android.ChromeHome.Opened"); |
| + } |
| + |
| + @Override |
| + public void onSheetClosed() { |
| + 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) { |
| + // Return early if the sheet content is being set during initialization (previous content |
| + // is null) or while the sheet is closed (sheet content being reset), so that we only |
| + // record actions when the user explicitly takes an action. |
| + if (mLastContent == null || !mIsSheetOpen) { |
|
Theresa
2017/03/17 22:55:25
nit: remove the extra space that crept in.
Theresa
2017/03/20 20:59:12
Done.
|
| + mLastContent = newContent; |
| + return; |
| + } |
| + |
| + if (newContent.getType() == BottomSheetContentController.TYPE_SUGGESTIONS) { |
| + RecordUserAction.record("Android.ChromeHome.ShowSuggestions"); |
| + } else if (newContent.getType() == BottomSheetContentController.TYPE_DOWNLOADS) { |
| + RecordUserAction.record("Android.ChromeHome.ShowDownloads"); |
| + } else if (newContent.getType() == BottomSheetContentController.TYPE_BOOKMARKS) { |
| + RecordUserAction.record("Android.ChromeHome.ShowBookmarks"); |
| + } else if (newContent.getType() == BottomSheetContentController.TYPE_HISTORY) { |
| + RecordUserAction.record("Android.ChromeHome.ShowHistory"); |
| + } |
|
gone
2017/03/20 20:29:32
else assert false;
Theresa
2017/03/20 20:59:12
Done.
|
| + mLastContent = newContent; |
| + } |
| + |
| +} |