| 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 f4aa8fe67fe81b2f7856d4a6377ab3af7923d07f..4d5241299278ae75526d69192009768dfb40694a 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
|
| @@ -10,7 +10,10 @@ import org.chromium.base.VisibleForTesting;
|
| import org.chromium.chrome.browser.ChromeActivity;
|
| 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;
|
| +import org.chromium.chrome.browser.tab.Tab;
|
| import org.chromium.content.browser.ContentViewCore;
|
| +import org.chromium.ui.resources.ResourceManager;
|
|
|
| /**
|
| * Controls the Overlay Panel.
|
| @@ -79,6 +82,11 @@ public class OverlayPanel extends ContextualSearchPanelAnimation
|
| */
|
| private OverlayPanelContent mContent;
|
|
|
| + /**
|
| + * The {@link OverlayPanelHost} used to communicate with the supported layout.
|
| + */
|
| + private OverlayPanelHost mOverlayPanelHost;
|
| +
|
| // ============================================================================================
|
| // Constructor
|
| // ============================================================================================
|
| @@ -122,6 +130,18 @@ public class OverlayPanel extends ContextualSearchPanelAnimation
|
| return doesPanelHeightMatchState(PanelState.EXPANDED);
|
| }
|
|
|
| + @Override
|
| + public void closePanel(StateChangeReason reason, boolean animate) {
|
| + super.closePanel(reason, animate);
|
| +
|
| + // If the close action is animated, the Layout will be hidden when
|
| + // the animation is finished, so we should only hide the Layout
|
| + // here when not animating.
|
| + if (!animate && mOverlayPanelHost != null) {
|
| + mOverlayPanelHost.hideLayout(true);
|
| + }
|
| + }
|
| +
|
| /**
|
| * @param url The URL that the panel should load.
|
| */
|
| @@ -194,6 +214,22 @@ public class OverlayPanel extends ContextualSearchPanelAnimation
|
| }
|
|
|
| /**
|
| + * Updates the top controls state for the base tab. As these values are set at the renderer
|
| + * level, there is potential for this impacting other tabs that might share the same
|
| + * process. See {@link Tab#updateTopControlsState(int current, boolean animate)}
|
| + * @param current The desired current state for the controls. Pass
|
| + * {@link TopControlsState#BOTH} to preserve the current position.
|
| + * @param animate Whether the controls should animate to the specified ending condition or
|
| + * should jump immediately.
|
| + */
|
| + public void updateTopControlsState(int current, boolean animate) {
|
| + Tab currentTab = mActivity.getActivityTab();
|
| + if (currentTab != null) {
|
| + currentTab.updateTopControlsState(current, animate);
|
| + }
|
| + }
|
| +
|
| + /**
|
| * Sets the top control state based on the internals of the panel.
|
| */
|
| public void updateTopControlsState() {
|
| @@ -232,6 +268,32 @@ public class OverlayPanel extends ContextualSearchPanelAnimation
|
| }
|
|
|
| // ============================================================================================
|
| + // Animation Handling
|
| + // ============================================================================================
|
| +
|
| + @Override
|
| + protected void onAnimationFinished() {
|
| + super.onAnimationFinished();
|
| +
|
| + if (shouldHideOverlayPanelLayout()) {
|
| + if (mOverlayPanelHost != null) {
|
| + mOverlayPanelHost.hideLayout(false);
|
| + }
|
| + }
|
| + }
|
| +
|
| + /**
|
| + * Whether the Overlay Panel Layout should be hidden.
|
| + *
|
| + * @return Whether the Overlay Panel Layout should be hidden.
|
| + */
|
| + private boolean shouldHideOverlayPanelLayout() {
|
| + final PanelState state = getPanelState();
|
| + return (state == PanelState.PEEKED || state == PanelState.CLOSED)
|
| + && getHeight() == getPanelHeightFromState(state);
|
| + }
|
| +
|
| + // ============================================================================================
|
| // ContextualSearchPanelBase methods.
|
| // ============================================================================================
|
|
|
| @@ -243,6 +305,32 @@ public class OverlayPanel extends ContextualSearchPanelAnimation
|
| }
|
|
|
| // ============================================================================================
|
| + // Layout Integration
|
| + // ============================================================================================
|
| +
|
| + /**
|
| + * Sets the {@OverlayPanelHost} used to communicate with the supported layout.
|
| + * @param host The {@OverlayPanelHost}.
|
| + */
|
| + public void setHost(OverlayPanelHost host) {
|
| + mOverlayPanelHost = host;
|
| + }
|
| +
|
| + /**
|
| + * @return The scene layer used to draw this panel.
|
| + */
|
| + public SceneLayer getSceneLayer() {
|
| + return null;
|
| + }
|
| +
|
| + /**
|
| + * Update this panel's scene layer. This should be implemented by each panel type.
|
| + * @param resourceManager Used to access static resources.
|
| + */
|
| + public void updateSceneLayer(ResourceManager resourceManager) {
|
| + }
|
| +
|
| + // ============================================================================================
|
| // Generic Event Handling
|
| // ============================================================================================
|
|
|
|
|