Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java |
index 5449b4bafc9ea6a0bca10ada8e68aea014c542eb..0457f9e071d8ed8da9d11bb8eac0cd25b0a20d6f 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/bottombar/contextualsearch/ContextualSearchPanel.java |
@@ -13,9 +13,12 @@ import org.chromium.chrome.browser.compositor.bottombar.OverlayContentProgressOb |
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel; |
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanelContent; |
import org.chromium.chrome.browser.compositor.layouts.LayoutUpdateHost; |
+import org.chromium.chrome.browser.compositor.scene_layer.ContextualSearchSceneLayer; |
+import org.chromium.chrome.browser.compositor.scene_layer.SceneLayer; |
import org.chromium.chrome.browser.contextualsearch.ContextualSearchManagementDelegate; |
import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.content.browser.ContentViewClient; |
+import org.chromium.ui.resources.ResourceManager; |
/** |
* Controls the Contextual Search Panel. |
@@ -38,11 +41,6 @@ public class ContextualSearchPanel extends OverlayPanel { |
private boolean mShouldPromoteToTabAfterMaximizing; |
/** |
- * The {@link ContextualSearchPanelHost} used to communicate with the supported layout. |
- */ |
- private ContextualSearchPanelHost mSearchPanelHost; |
- |
- /** |
* Used for logging state changes. |
*/ |
private final ContextualSearchPanelMetrics mPanelMetrics; |
@@ -57,6 +55,11 @@ public class ContextualSearchPanel extends OverlayPanel { |
*/ |
private boolean mHasContentBeenTouched; |
+ /** |
+ * The compositor layer used for drawing the panel. |
+ */ |
+ private ContextualSearchSceneLayer mSceneLayer; |
+ |
// ============================================================================================ |
// Constructor |
// ============================================================================================ |
@@ -67,6 +70,7 @@ public class ContextualSearchPanel extends OverlayPanel { |
*/ |
public ContextualSearchPanel(Context context, LayoutUpdateHost updateHost) { |
super(context, updateHost); |
+ mSceneLayer = createNewContextualSearchSceneLayer(); |
mPanelMetrics = new ContextualSearchPanelMetrics(); |
} |
@@ -142,6 +146,29 @@ public class ContextualSearchPanel extends OverlayPanel { |
} |
// ============================================================================================ |
+ // Scene layer |
+ // ============================================================================================ |
+ |
+ @Override |
+ public SceneLayer getSceneLayer() { |
+ return mSceneLayer; |
+ } |
+ |
+ @Override |
+ public void updateSceneLayer(ResourceManager resourceManager) { |
+ if (mSceneLayer == null) return; |
+ |
+ mSceneLayer.update(resourceManager, this); |
+ } |
+ |
+ /** |
+ * Create a new scene layer for this panel. This should be overridden by tests as necessary. |
+ */ |
+ protected ContextualSearchSceneLayer createNewContextualSearchSceneLayer() { |
+ return new ContextualSearchSceneLayer(mContext.getResources().getDisplayMetrics().density); |
+ } |
+ |
+ // ============================================================================================ |
// Contextual Search Manager Integration |
// ============================================================================================ |
@@ -214,18 +241,6 @@ public class ContextualSearchPanel extends OverlayPanel { |
} |
// ============================================================================================ |
- // Layout Integration |
- // ============================================================================================ |
- |
- /** |
- * Sets the {@ContextualSearchPanelHost} used to communicate with the supported layout. |
- * @param host The {@ContextualSearchPanelHost}. |
- */ |
- public void setHost(ContextualSearchPanelHost host) { |
- mSearchPanelHost = host; |
- } |
- |
- // ============================================================================================ |
// Contextual Search Manager Integration |
// ============================================================================================ |
@@ -301,30 +316,12 @@ public class ContextualSearchPanel extends OverlayPanel { |
protected void onAnimationFinished() { |
super.onAnimationFinished(); |
- if (shouldHideContextualSearchLayout()) { |
- if (mSearchPanelHost != null) { |
- mSearchPanelHost.hideLayout(false); |
- } |
- } |
- |
if (mShouldPromoteToTabAfterMaximizing && getPanelState() == PanelState.MAXIMIZED) { |
mShouldPromoteToTabAfterMaximizing = false; |
mManagementDelegate.promoteToTab(); |
} |
} |
- /** |
- * Whether the Contextual Search Layout should be hidden. |
- * |
- * @return Whether the Contextual Search Layout should be hidden. |
- */ |
- private boolean shouldHideContextualSearchLayout() { |
- final PanelState state = getPanelState(); |
- |
- return (state == PanelState.PEEKED || state == PanelState.CLOSED) |
- && getHeight() == getPanelHeightFromState(state); |
- } |
- |
@Override |
public void setProperty(Property prop, float value) { |
super.setProperty(prop, value); |
@@ -407,14 +404,6 @@ public class ContextualSearchPanel extends OverlayPanel { |
@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 && mSearchPanelHost != null) { |
- mSearchPanelHost.hideLayout(true); |
- } |
- |
mHasContentBeenTouched = false; |
} |