| Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ContextualSearchSupportedLayout.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ContextualSearchSupportedLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ContextualSearchSupportedLayout.java
|
| index 8071843df5fbb1d73ca1e01bb1ef95e9dd9eb89a..906b7a11eeb132c606066d446346fe491aadd04b 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ContextualSearchSupportedLayout.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/ContextualSearchSupportedLayout.java
|
| @@ -12,6 +12,7 @@ import android.view.ViewGroup;
|
| import org.chromium.chrome.browser.compositor.LayerTitleCache;
|
| import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel;
|
| import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelHost;
|
| +import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelManager;
|
| import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager;
|
| import org.chromium.chrome.browser.compositor.layouts.eventfilter.EventFilter;
|
| import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer;
|
| @@ -34,9 +35,9 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| protected final OverlayPanelHost mOverlayPanelHost;
|
|
|
| /**
|
| - * The {@link OverlayPanel} that represents the Contextual Search UI.
|
| + * The {@link OverlayPanelManager} used to get the active panel.
|
| */
|
| - protected final OverlayPanel mSearchPanel;
|
| + protected final OverlayPanelManager mPanelManager;
|
|
|
| /**
|
| * Size of half pixel in dps.
|
| @@ -48,10 +49,11 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| * @param updateHost The {@link LayoutUpdateHost} view for this layout.
|
| * @param renderHost The {@link LayoutRenderHost} view for this layout.
|
| * @param eventFilter The {@link EventFilter} that is needed for this view.
|
| - * @param panel The {@link OverlayPanel} that represents the Contextual Search UI.
|
| + * @param panelManager The {@link OverlayPanelManager} responsible for showing panels.
|
| */
|
| public ContextualSearchSupportedLayout(Context context, LayoutUpdateHost updateHost,
|
| - LayoutRenderHost renderHost, EventFilter eventFilter, OverlayPanel panel) {
|
| + LayoutRenderHost renderHost, EventFilter eventFilter,
|
| + OverlayPanelManager panelManager) {
|
| super(context, updateHost, renderHost, eventFilter);
|
|
|
| mOverlayPanelHost = new OverlayPanelHost() {
|
| @@ -61,22 +63,23 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| }
|
| };
|
|
|
| - mSearchPanel = panel;
|
| + mPanelManager = panelManager;
|
| float dpToPx = context.getResources().getDisplayMetrics().density;
|
| mHalfPixelDp = 0.5f / dpToPx;
|
| }
|
|
|
| @Override
|
| public void attachViews(ViewGroup container) {
|
| - mSearchPanel.setContainerView(container);
|
| + mPanelManager.setContainerView(container);
|
| }
|
|
|
| @Override
|
| public void getAllViews(List<View> views) {
|
| // TODO(dtrainor): If we move ContextualSearch to an overlay, pull the views from there
|
| // instead in Layout.java.
|
| - if (mSearchPanel != null) {
|
| - ContentViewCore content = mSearchPanel.getContentViewCore();
|
| + OverlayPanel panel = mPanelManager.getActivePanel();
|
| + if (panel != null) {
|
| + ContentViewCore content = panel.getContentViewCore();
|
| if (content != null) views.add(content.getContainerView());
|
| }
|
| super.getAllViews(views);
|
| @@ -86,9 +89,9 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| public void getAllContentViewCores(List<ContentViewCore> contents) {
|
| // TODO(dtrainor): If we move ContextualSearch to an overlay, pull the content from there
|
| // instead in Layout.java.
|
| - if (mSearchPanel != null) {
|
| - ContentViewCore content =
|
| - mSearchPanel.getContentViewCore();
|
| + OverlayPanel panel = mPanelManager.getActivePanel();
|
| + if (panel != null) {
|
| + ContentViewCore content = panel.getContentViewCore();
|
| if (content != null) contents.add(content);
|
| }
|
| super.getAllContentViewCores(contents);
|
| @@ -96,7 +99,7 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
|
|
| @Override
|
| public void show(long time, boolean animate) {
|
| - mSearchPanel.setHost(mOverlayPanelHost);
|
| + mPanelManager.setPanelHost(mOverlayPanelHost);
|
| super.show(time, animate);
|
| }
|
|
|
| @@ -117,19 +120,23 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| // visible. For this reason, we're comparing to see if the difference between them
|
| // is less than half pixel. If so, it means the Toolbar is visible.
|
| final boolean isToolbarVisible = getHeight() - getHeightMinusTopControls() <= mHalfPixelDp;
|
| - mSearchPanel.onSizeChanged(width, height, isToolbarVisible);
|
| +
|
| + mPanelManager.onSizeChanged(width, height, isToolbarVisible);
|
| }
|
|
|
| @Override
|
| protected boolean onUpdateAnimation(long time, boolean jumpToEnd) {
|
| boolean parentAnimating = super.onUpdateAnimation(time, jumpToEnd);
|
| - boolean panelAnimating = mSearchPanel.onUpdateAnimation(time, jumpToEnd);
|
| + OverlayPanel panel = mPanelManager.getActivePanel();
|
| + boolean panelAnimating = panel != null && panel.onUpdateAnimation(time, jumpToEnd);
|
| return panelAnimating || parentAnimating;
|
| }
|
|
|
| @Override
|
| protected SceneLayer getSceneLayer() {
|
| - return mSearchPanel.getSceneLayer();
|
| + OverlayPanel panel = mPanelManager.getActivePanel();
|
| + if (panel == null) return null;
|
| + return panel.getSceneLayer();
|
| }
|
|
|
| @Override
|
| @@ -138,8 +145,9 @@ public abstract class ContextualSearchSupportedLayout extends Layout {
|
| ResourceManager resourceManager, ChromeFullscreenManager fullscreenManager) {
|
| super.updateSceneLayer(viewport, contentViewport, layerTitleCache, tabContentManager,
|
| resourceManager, fullscreenManager);
|
| - if (!mSearchPanel.isShowing()) return;
|
| + OverlayPanel panel = mPanelManager.getActivePanel();
|
| + if (panel == null || !panel.isShowing()) return;
|
|
|
| - mSearchPanel.updateSceneLayer(resourceManager);
|
| + panel.updateSceneLayer(resourceManager);
|
| }
|
| }
|
|
|