| 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);
|
| }
|
|
|