Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelStateHandler.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelStateHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelStateHandler.java |
index 6a8815b81a05606d103ff15001be9fd355db5c91..55d10ee4e2c3792ca74142eed01d69bf3bfcdece 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelStateHandler.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelStateHandler.java |
@@ -18,7 +18,18 @@ |
*/ |
abstract class ContextualSearchPanelStateHandler { |
- // Valid previous states for the Panel. |
+ // Valid previous states for when the promo is active. |
+ private static final Map<PanelState, PanelState> PREVIOUS_STATES_PROMO; |
+ static { |
+ Map<PanelState, PanelState> states = new HashMap<PanelState, PanelState>(); |
+ // Pairs are of the form <Current, Previous>. |
+ states.put(PanelState.PEEKED, PanelState.CLOSED); |
+ states.put(PanelState.PROMO, PanelState.PEEKED); |
+ states.put(PanelState.EXPANDED, PanelState.PROMO); |
+ PREVIOUS_STATES_PROMO = Collections.unmodifiableMap(states); |
+ } |
+ |
+ // Valid previous states for when the promo is not active (normal flow). |
private static final Map<PanelState, PanelState> PREVIOUS_STATES_NORMAL; |
static { |
Map<PanelState, PanelState> states = new HashMap<PanelState, PanelState>(); |
@@ -60,8 +71,26 @@ |
* @return The {@code PanelState} that is before the |state| in the order of states. |
*/ |
PanelState getPreviousPanelState(PanelState state) { |
- PanelState prevState = PREVIOUS_STATES_NORMAL.get(state); |
+ PanelState prevState = mIsPromoActive |
+ ? PREVIOUS_STATES_PROMO.get(state) |
+ : PREVIOUS_STATES_NORMAL.get(state); |
return prevState != null ? prevState : PanelState.UNDEFINED; |
+ } |
+ |
+ /** |
+ * Return the maximum state that the panel can be in, depending on whether the promo is |
+ * active. |
+ */ |
+ PanelState getMaximumState() { |
+ return mIsPromoActive ? PanelState.PROMO : PanelState.MAXIMIZED; |
+ } |
+ |
+ /** |
+ * Return the intermediary state that the panel can be in, depending on whether the promo is |
+ * active. |
+ */ |
+ PanelState getIntermediaryState() { |
+ return mIsPromoActive ? PanelState.PROMO : PanelState.EXPANDED; |
} |
/** |
@@ -169,10 +198,14 @@ |
* @return whether the state is valid. |
*/ |
boolean isValidState(PanelState state) { |
- ArrayList<PanelState> validStates = |
- new ArrayList<PanelState>(PREVIOUS_STATES_NORMAL.values()); |
- // MAXIMIZED is not the previous state of anything, but it's a valid state. |
- validStates.add(PanelState.MAXIMIZED); |
+ ArrayList<PanelState> validStates; |
+ if (mIsPromoActive) { |
+ validStates = new ArrayList<PanelState>(PREVIOUS_STATES_PROMO.values()); |
+ } else { |
+ validStates = new ArrayList<PanelState>(PREVIOUS_STATES_NORMAL.values()); |
+ // MAXIMIZED is not the previous state of anything, but it's a valid state. |
+ validStates.add(PanelState.MAXIMIZED); |
+ } |
return validStates.contains(state); |
} |