Index: chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer.java |
index df3a5811d30c8ac17afa9c932212f332f7556837..e7755d5245c27d890da62c151b230b46fb91e626 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/scene_layer/ContextualSearchSceneLayer.java |
@@ -18,12 +18,15 @@ import org.chromium.ui.resources.ResourceManager; |
* A SceneLayer to render layers for ContextualSearchLayout. |
*/ |
@JNINamespace("chrome::android") |
-public class ContextualSearchSceneLayer extends SceneLayer { |
+public class ContextualSearchSceneLayer extends SceneOverlayLayer { |
// NOTE: If you use SceneLayer's native pointer here, the JNI generator will try to |
// downcast using reinterpret_cast<>. We keep a separate pointer to avoid it. |
private long mNativePtr; |
+ /** If the scene layer has been initialized. */ |
+ private boolean mIsInitialized; |
+ |
private final float mDpToPx; |
public ContextualSearchSceneLayer(float dpToPx) { |
@@ -44,6 +47,13 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
ContextualSearchPeekPromoControl peekPromoControl, |
ContextualSearchPromoControl promoControl, |
ContextualSearchIconSpriteControl spriteControl) { |
+ // Don't try to update the layer if not initialized or showing. |
+ if (resourceManager == null || !panel.isShowing()) return; |
+ |
+ if (!mIsInitialized) { |
+ nativeCreateContextualSearchLayer(mNativePtr, resourceManager); |
+ mIsInitialized = true; |
+ } |
int searchContextViewId = searchBarControl.getSearchContextViewId(); |
int searchTermViewId = searchBarControl.getSearchTermViewId(); |
@@ -110,6 +120,8 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
R.drawable.contextual_search_promo_ripple, |
searchPeekPromoTextViewId, |
mDpToPx, |
+ panel.getBasePageBrightness(), |
+ panel.getBasePageY() * mDpToPx, |
panel.getContentViewCore(), |
searchPromoVisible, |
searchPromoHeightPx, |
@@ -141,8 +153,20 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
isProgressBarVisible, |
progressBarHeight * mDpToPx, |
progressBarOpacity, |
- progressBarCompletion, |
- resourceManager); |
+ progressBarCompletion); |
+ } |
+ |
+ @Override |
+ public void setContentTree(SceneLayer contentTree) { |
+ nativeSetContentTree(mNativePtr, contentTree); |
+ } |
+ |
+ /** |
+ * Hide the layer tree; for use if the panel is not being shown. |
+ */ |
+ public void hideTree() { |
+ if (!mIsInitialized) return; |
+ nativeHideTree(mNativePtr); |
} |
@Override |
@@ -159,10 +183,19 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
@Override |
public void destroy() { |
super.destroy(); |
+ mIsInitialized = false; |
mNativePtr = 0; |
} |
private native long nativeInit(); |
+ private native void nativeCreateContextualSearchLayer( |
+ long nativeContextualSearchSceneLayer, |
+ ResourceManager resourceManager); |
+ private native void nativeSetContentTree( |
+ long nativeContextualSearchSceneLayer, |
+ SceneLayer contentTree); |
+ private native void nativeHideTree( |
+ long nativeContextualSearchSceneLayer); |
private native void nativeUpdateContextualSearchLayer( |
long nativeContextualSearchSceneLayer, |
int searchBarBackgroundResourceId, |
@@ -180,6 +213,8 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
int peekPromoRippleResourceId, |
int peekPromoTextResourceId, |
float dpToPx, |
+ float basePageBrightness, |
+ float basePageYOffset, |
ContentViewCore contentViewCore, |
boolean searchPromoVisible, |
float searchPromoHeight, |
@@ -211,6 +246,5 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
boolean isProgressBarVisible, |
float progressBarHeight, |
float progressBarOpacity, |
- int progressBarCompletion, |
- ResourceManager resourceManager); |
+ int progressBarCompletion); |
} |