Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java |
index 3a3a5568e0c5e49e623f231b05a6a2dcf94a97de..f10eefed984cc31dedd85a9ed232ea5e4ff7c12d 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanel.java |
@@ -8,6 +8,7 @@ import android.content.Context; |
import org.chromium.base.VisibleForTesting; |
import org.chromium.chrome.browser.ChromeActivity; |
+import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager.PanelPriority; |
import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.ContextualSearchPanelAnimation; |
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost; |
import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; |
@@ -55,7 +56,9 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
FLING, |
OPTIN, |
OPTOUT, |
- CLOSE_BUTTON; |
+ CLOSE_BUTTON, |
+ SUPPRESS, |
+ UNSUPPRESS; |
} |
/** |
@@ -88,6 +91,11 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
*/ |
private OverlayPanelHost mOverlayPanelHost; |
+ /** |
+ * OverlayPanel manager handle for notifications of opening and closing. |
+ */ |
+ protected OverlayPanelManager mPanelManager; |
+ |
// ============================================================================================ |
// Constructor |
// ============================================================================================ |
@@ -95,10 +103,15 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
/** |
* @param context The current Android {@link Context}. |
* @param updateHost The {@link LayoutUpdateHost} used to request updates in the Layout. |
+ * @param panelManager The {@link OverlayPanelManager} responsible for showing panels. |
*/ |
- public OverlayPanel(Context context, LayoutUpdateHost updateHost) { |
+ public OverlayPanel(Context context, LayoutUpdateHost updateHost, |
+ OverlayPanelManager panelManager) { |
super(context, updateHost); |
mContentFactory = this; |
+ |
+ mPanelManager = panelManager; |
+ mPanelManager.registerPanel(this); |
} |
/** |
@@ -110,6 +123,7 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
@Override |
protected void onClosed(StateChangeReason reason) { |
+ mPanelManager.notifyPanelClosed(this, reason); |
destroy(); |
} |
@@ -144,6 +158,23 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
} |
/** |
+ * Request that this panel be shown. |
+ * @param reason The reason the panel is being shown. |
+ */ |
+ public void requestPanelShow(StateChangeReason reason) { |
+ if (mPanelManager != null) { |
+ mPanelManager.requestPanelShow(this, reason); |
+ } |
+ } |
+ |
+ @Override |
+ public void peekPanel(StateChangeReason reason) { |
+ // TODO(mdjones): This is making a protected API public and should be removed. Animation |
+ // should only be controlled by the OverlayPanelManager. |
+ super.peekPanel(reason); |
+ } |
+ |
+ /** |
* @param url The URL that the panel should load. |
*/ |
public void loadUrlInPanel(String url) { |
@@ -173,6 +204,37 @@ public class OverlayPanel extends ContextualSearchPanelAnimation |
mActivity = activity; |
} |
+ /** |
+ * Notify the panel's content that it has been touched. |
+ */ |
+ public void notifyPanelTouched() { |
+ getOverlayPanelContent().notifyPanelTouched(); |
+ } |
+ |
+ /** |
+ * Acknowledges that there was a touch in the search content view, though no immediate action |
+ * needs to be taken. This should be overridden by child classes. |
+ * TODO(mdjones): Get a better name for this. |
+ */ |
+ public void onTouchSearchContentViewAck() { |
+ } |
+ |
+ /** |
+ * Get a panel's display priority. This has a default to MEDIUM and should be overridden by |
+ * child classes. |
+ * @return The panel's display priority. |
+ */ |
+ public PanelPriority getPriority() { |
+ return PanelPriority.MEDIUM; |
+ } |
+ |
+ /** |
+ * @return True if a panel can be suppressed. This should be overridden by each panel. |
+ */ |
+ public boolean canBeSuppressed() { |
+ return false; |
+ } |
+ |
// ============================================================================================ |
// Content |
// ============================================================================================ |