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

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

Issue 2809923003: [Home] Add a Chrome Home specific incognito NTP (Closed)
Patch Set: Rebase Created 3 years, 8 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 ea7871d00a51d3cdf8d40aed4e1f7cac25e0de95..9b7e89ba9b6c3211252b4ff1a0e8c0142f7c6f6d 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.app.Activity;
import android.content.Context;
+import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.support.annotation.IntDef;
import android.support.design.internal.BottomNavigationItemView;
@@ -18,6 +19,7 @@ import android.view.View;
import android.view.ViewGroup;
import org.chromium.base.ActivityState;
+import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.base.ApplicationStatus;
import org.chromium.base.ApplicationStatus.ActivityStateListener;
import org.chromium.base.VisibleForTesting;
@@ -25,8 +27,11 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.bookmarks.BookmarkSheetContent;
import org.chromium.chrome.browser.download.DownloadSheetContent;
import org.chromium.chrome.browser.history.HistorySheetContent;
+import org.chromium.chrome.browser.ntp.IncognitoBottomSheetContent;
import org.chromium.chrome.browser.snackbar.SnackbarManager;
import org.chromium.chrome.browser.suggestions.SuggestionsBottomSheetContent;
+import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
+import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.BottomSheetContent;
@@ -53,8 +58,10 @@ public class BottomSheetContentController extends BottomNavigationView
public static final int TYPE_DOWNLOADS = 1;
public static final int TYPE_BOOKMARKS = 2;
public static final int TYPE_HISTORY = 3;
+ public static final int TYPE_INCOGNITO_HOME = 4;
private final Map<Integer, BottomSheetContent> mBottomSheetContents = new HashMap<>();
+ private BottomSheetContent mIncognitoHome;
private final BottomSheetObserver mBottomSheetObserver = new EmptyBottomSheetObserver() {
@Override
@@ -117,6 +124,16 @@ public class BottomSheetContentController extends BottomNavigationView
mBottomSheet = bottomSheet;
mBottomSheet.addObserver(mBottomSheetObserver);
mTabModelSelector = tabModelSelector;
+ mTabModelSelector.addObserver(new EmptyTabModelSelectorObserver() {
+ @Override
+ public void onTabModelSelected(TabModel newModel, TabModel oldModel) {
+ updateVisuals(newModel.isIncognito());
+ showBottomSheetContent(R.id.action_home);
+
+ // Release incognito bottom sheet content so that it can be garbage collected.
+ if (!newModel.isIncognito()) mIncognitoHome = null;
+ }
+ });
Resources res = getContext().getResources();
mDistanceBelowToolbarPx = controlContainerHeight
@@ -178,6 +195,10 @@ public class BottomSheetContentController extends BottomNavigationView
}
private BottomSheetContent getSheetContentForId(int navItemId) {
+ if (mTabModelSelector.isIncognitoSelected() && navItemId == R.id.action_home) {
mdjones 2017/04/12 16:51:35 Why is this special cased? Is the assumption that,
Theresa 2017/04/12 21:32:03 The map storing all of the other BottomSheetConten
dgn 2017/04/12 22:28:00 why is introducing a special code a bad thing? Acc
Theresa 2017/04/12 23:12:11 Changing the id isn't a bad thing. The IncognitoBo
mdjones 2017/04/13 20:34:03 I think we only need to special-case the suggestio
Theresa 2017/04/13 21:28:14 Done. When the bottom sheet is closed, this class
+ return getIncognitoHomeSheetContent();
+ }
+
BottomSheetContent content = mBottomSheetContents.get(navItemId);
if (content != null) return content;
@@ -199,6 +220,14 @@ public class BottomSheetContentController extends BottomNavigationView
return content;
}
+ private BottomSheetContent getIncognitoHomeSheetContent() {
+ if (mIncognitoHome == null) {
+ mIncognitoHome = new IncognitoBottomSheetContent(
+ mTabModelSelector.getCurrentTab().getActivity());
+ }
+ return mIncognitoHome;
+ }
+
private void showBottomSheetContent(int navItemId) {
// There are some bugs related to programatically selecting menu items that are fixed in
// newer support library versions.
@@ -210,6 +239,17 @@ public class BottomSheetContentController extends BottomNavigationView
mBottomSheet.showContent(getSheetContentForId(mSelectedItemId));
}
+ private void updateVisuals(boolean isIncognitoTabModelSelected) {
+ setBackgroundResource(isIncognitoTabModelSelected ? R.color.incognito_primary_color
+ : R.color.appbar_background);
+
+ ColorStateList tint = ApiCompatibilityUtils.getColorStateList(getResources(),
+ isIncognitoTabModelSelected ? R.color.bottom_nav_tint_incognito
+ : R.color.bottom_nav_tint);
+ setItemIconTintList(tint);
+ setItemTextColor(tint);
+ }
+
/**
* @param itemId The id of the MenuItem to select.
*/

Powered by Google App Engine
This is Rietveld 408576698