Chromium Code Reviews| 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..fefab47a87462f9afa222da69b5e2c0fb28777ea 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,19 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
| isProgressBarVisible, |
| progressBarHeight * mDpToPx, |
| progressBarOpacity, |
| - progressBarCompletion, |
| - resourceManager); |
| + progressBarCompletion); |
| + } |
| + |
| + @Override |
| + public void setContentTree(SceneLayer contentTree) { |
| + nativeSetContentTree(mNativePtr, contentTree); |
|
David Trainor- moved to gerrit
2016/05/13 16:14:34
Should we check mIsInitialized?
mdjones
2016/05/13 20:30:07
This is still needed because the content layer nee
|
| + } |
| + |
| + /** |
| + * Hide the layer tree; for use if the panel is not being shown. |
| + */ |
| + public void hideTree() { |
| + nativeHideTree(mNativePtr); |
|
David Trainor- moved to gerrit
2016/05/13 16:14:34
Same here
mdjones
2016/05/13 20:30:07
This technically wouldn't crash, but it does save
|
| } |
| @Override |
| @@ -159,10 +182,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 +212,8 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
| int peekPromoRippleResourceId, |
| int peekPromoTextResourceId, |
| float dpToPx, |
| + float basePageBrightness, |
| + float basePageYOffset, |
| ContentViewCore contentViewCore, |
| boolean searchPromoVisible, |
| float searchPromoHeight, |
| @@ -211,6 +245,5 @@ public class ContextualSearchSceneLayer extends SceneLayer { |
| boolean isProgressBarVisible, |
| float progressBarHeight, |
| float progressBarOpacity, |
| - int progressBarCompletion, |
| - ResourceManager resourceManager); |
| + int progressBarCompletion); |
| } |