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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java

Issue 2754313002: [Home] Record some user actions for the Chrome Home BottomSheet (Closed)
Patch Set: [Home] Record some user actions for the Chrome Home BottomSheet Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
index d8222e8a8557e8bc14d7d45c1782ac750b6f28f2..ce847d9dbc7a462baacb9c19ea589a39d892a777 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.widget.bottomsheet;
import android.content.Context;
import android.content.res.Resources;
+import android.support.annotation.IntDef;
import android.support.design.internal.BottomNavigationItemView;
import android.support.design.internal.BottomNavigationMenuView;
import android.support.design.widget.BottomNavigationView;
@@ -23,6 +24,8 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.BottomSheetContent;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
@@ -34,15 +37,61 @@ import java.util.Map.Entry;
* {@link BottomSheet}. Also manages {@link BottomSheetContent} displayed in the BottomSheet.
*/
public class BottomSheetContentController extends BottomNavigationView
- implements BottomSheetObserver, OnNavigationItemSelectedListener {
+ implements OnNavigationItemSelectedListener {
+ /** The different types of content that may be displayed in the bottom sheet. */
+ @IntDef({TYPE_SUGGESTIONS, TYPE_DOWNLOADS, TYPE_BOOKMARKS, TYPE_HISTORY})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ContentType {}
+ public static final int TYPE_SUGGESTIONS = 0;
+ public static final int TYPE_DOWNLOADS = 1;
+ public static final int TYPE_BOOKMARKS = 2;
+ public static final int TYPE_HISTORY = 3;
+
+ private final Map<Integer, BottomSheetContent> mBottomSheetContents = new HashMap<>();
+
+ private final BottomSheetObserver mBottomSheetObserver = new EmptyBottomSheetObserver() {
+ @Override
+ public void onTransitionPeekToHalf(float transitionFraction) {
+ float offsetY = (mBottomSheet.getMinOffset() - mBottomSheet.getSheetOffsetFromBottom())
+ + mDistanceBelowToolbarPx;
+ setTranslationY((int) Math.max(offsetY, 0f));
+ setVisibility(
+ MathUtils.areFloatsEqual(transitionFraction, 0f) ? View.GONE : View.VISIBLE);
+ }
+
+ @Override
+ public void onSheetOpened() {
+ if (!mDefaultContentInitialized && mTabModelSelector.getCurrentTab() != null) {
+ initializeDefaultContent();
+ }
+ }
+
+ @Override
+ public void onSheetClosed() {
+ Iterator<Entry<Integer, BottomSheetContent>> contentIterator =
+ mBottomSheetContents.entrySet().iterator();
+ while (contentIterator.hasNext()) {
+ Entry<Integer, BottomSheetContent> entry = contentIterator.next();
+ if (entry.getKey() == R.id.action_home) continue;
+
+ entry.getValue().destroy();
+ contentIterator.remove();
+ }
+ // TODO(twellington): determine a policy for destroying the
+ // SuggestionsBottomSheetContent.
+
+ if (mSelectedItemId == 0 || mSelectedItemId == R.id.action_home) return;
+
+ showBottomSheetContent(R.id.action_home);
+ }
+ };
+
private BottomSheet mBottomSheet;
private TabModelSelector mTabModelSelector;
private float mDistanceBelowToolbarPx;
private int mSelectedItemId;
private boolean mDefaultContentInitialized;
- private final Map<Integer, BottomSheetContent> mBottomSheetContents = new HashMap<>();
-
public BottomSheetContentController(Context context, AttributeSet atts) {
super(context, atts);
}
@@ -56,7 +105,7 @@ public class BottomSheetContentController extends BottomNavigationView
public void init(BottomSheet bottomSheet, int controlContainerHeight,
TabModelSelector tabModelSelector) {
mBottomSheet = bottomSheet;
- mBottomSheet.addObserver(this);
+ mBottomSheet.addObserver(mBottomSheetObserver);
mTabModelSelector = tabModelSelector;
Resources res = getContext().getResources();
@@ -84,45 +133,6 @@ public class BottomSheetContentController extends BottomNavigationView
return true;
}
- @Override
- public void onTransitionPeekToHalf(float transitionFraction) {
- float offsetY = (mBottomSheet.getMinOffset() - mBottomSheet.getSheetOffsetFromBottom())
- + mDistanceBelowToolbarPx;
- setTranslationY((int) Math.max(offsetY, 0f));
- setVisibility(MathUtils.areFloatsEqual(transitionFraction, 0f) ? View.GONE : View.VISIBLE);
- }
-
- @Override
- public void onSheetOpened() {
- if (!mDefaultContentInitialized && mTabModelSelector.getCurrentTab() != null) {
- initializeDefaultContent();
- }
- }
-
- @Override
- public void onSheetClosed() {
- Iterator<Entry<Integer, BottomSheetContent>> contentIterator =
- mBottomSheetContents.entrySet().iterator();
- while (contentIterator.hasNext()) {
- Entry<Integer, BottomSheetContent> entry = contentIterator.next();
- if (entry.getKey() == R.id.action_home) continue;
-
- entry.getValue().destroy();
- contentIterator.remove();
- }
- // TODO(twellington): determine a policy for destroying the SuggestionsBottomSheetContent.
-
- if (mSelectedItemId == 0 || mSelectedItemId == R.id.action_home) return;
-
- showBottomSheetContent(R.id.action_home);
- }
-
- @Override
- public void onLoadUrl(String url) {}
-
- @Override
- public void onSheetOffsetChanged(float heightFraction) {}
-
// TODO(twellington): remove this once the support library is updated to allow disabling
// shifting mode or determines shifting mode based on the width of the
// child views.

Powered by Google App Engine
This is Rietveld 408576698