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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java

Issue 1342383004: Separate contextual search state handler and log (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@overlay-panel
Patch Set: correct var name Created 5 years, 3 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/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
index 398b1e08bf3c4e9603c5b6eb7db8e01a4ef60f4b..e97c4751712431c8de21e204dcc9dedf78789f84 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanelBase.java
@@ -23,11 +23,14 @@ import org.chromium.chrome.browser.util.MathUtils;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.resources.dynamics.DynamicResourceLoader;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
/**
* Base abstract class for the Contextual Search Panel.
*/
-abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandler
- implements ContextualSearchPromoHost {
+abstract class ContextualSearchPanelBase implements ContextualSearchPromoHost {
/**
* The side padding of Search Bar icons in dps.
*/
@@ -201,6 +204,23 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
*/
protected ContextualSearchPanelFeatures mSearchPanelFeatures;
+ /**
+ * The current state of the Contextual Search Panel.
+ */
+ private PanelState mPanelState = PanelState.UNDEFINED;
+
+ /**
+ * Valid previous states for the Panel.
+ */
+ protected static final Map<PanelState, PanelState> PREVIOUS_STATES;
+ 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.EXPANDED, PanelState.PEEKED);
+ states.put(PanelState.MAXIMIZED, PanelState.EXPANDED);
+ PREVIOUS_STATES = Collections.unmodifiableMap(states);
+ }
// ============================================================================================
// Constructor
@@ -782,6 +802,53 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
}
// ============================================================================================
+ // State Handler
+ // ============================================================================================
+
+ /**
+ * @return The panel's state.
+ */
+ public PanelState getPanelState() {
+ return mPanelState;
+ }
+
+ /**
+ * @return The {@code PanelState} that is before the |state| in the order of states.
+ */
+ public PanelState getPreviousPanelState(PanelState state) {
+ PanelState prevState = PREVIOUS_STATES.get(state);
+ return prevState != null ? prevState : PanelState.UNDEFINED;
+ }
+
+ /**
+ * Sets the panel's state.
+ * @param state The panel state to transition to.
+ * @param reason The reason for a change in the panel's state.
+ */
+ public void setPanelState(PanelState state, StateChangeReason reason) {
+ mPanelState = state;
+
+ if (state == PanelState.CLOSED) {
+ mIsShowing = false;
+ destroyPromoView();
+ onClose(reason);
+ } else if (state == PanelState.EXPANDED && isFullscreenSizePanel()
+ || (state == PanelState.MAXIMIZED && !isFullscreenSizePanel())) {
+ showPromoViewAtYPosition(getPromoYPx());
+ }
+ }
+
+ /**
+ * Determine if a specific {@code PanelState} is a valid state in the current environment.
+ * @param state The state being evaluated.
+ * @return whether the state is valid.
+ */
+ public boolean isValidState(PanelState state) {
+ // MAXIMIZED is not the previous state of anything, but it's a valid state.
+ return PREVIOUS_STATES.values().contains(state) || state == PanelState.MAXIMIZED;
+ }
+
+ // ============================================================================================
// Helpers
// ============================================================================================
@@ -893,20 +960,6 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
setPanelHeight(clampedHeight);
}
- @Override
- protected void setPanelState(PanelState state, StateChangeReason reason) {
- super.setPanelState(state, reason);
-
- if (state == PanelState.CLOSED) {
- mIsShowing = false;
- destroyPromoView();
- onClose(reason);
- } else if (state == PanelState.EXPANDED && isFullscreenSizePanel()
- || (state == PanelState.MAXIMIZED && !isFullscreenSizePanel())) {
- showPromoViewAtYPosition(getPromoYPx());
- }
- }
-
/**
* Sets the panel height.
*
@@ -1324,7 +1377,6 @@ abstract class ContextualSearchPanelBase extends ContextualSearchPanelStateHandl
new Handler().post(new Runnable() {
@Override
public void run() {
- setIsPromoActive(false);
PreferencesLauncher.launchSettingsPage(mContext,
ContextualSearchPreferenceFragment.class.getName());
}

Powered by Google App Engine
This is Rietveld 408576698