Chromium Code Reviews| Index: chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc |
| diff --git a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc |
| index dbd76004ac26d2c3115430ac6e1125f5da5cba85..9087d64f101f555733751c15547d327bfb0f0c1b 100644 |
| --- a/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc |
| +++ b/chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc |
| @@ -6,7 +6,9 @@ |
| #include "base/android/jni_android.h" |
| #include "base/android/jni_array.h" |
| +#include "cc/layers/solid_color_layer.h" |
| #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" |
| +#include "content/public/browser/android/compositor.h" |
| #include "content/public/browser/android/content_view_core.h" |
| #include "jni/ContextualSearchSceneLayer_jni.h" |
| #include "ui/android/resources/resource_manager_impl.h" |
| @@ -17,7 +19,27 @@ namespace android { |
| ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env, |
| jobject jobj) |
| - : SceneLayer(env, jobj) { |
| + : SceneLayer(env, jobj), |
| + base_page_brightness_(1.0f), |
| + content_container_(cc::Layer::Create()) { |
| + // Responsible for moving the base page without modifying the layer itself. |
| + content_container_->SetIsDrawable(true); |
| + content_container_->SetPosition(gfx::PointF(0.0f, 0.0f)); |
| + layer()->AddChild(content_container_); |
| +} |
| + |
| +void ContextualSearchSceneLayer::CreateContextualSearchLayer( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& object, |
| + const JavaParamRef<jobject>& jresource_manager) { |
| + ui::ResourceManager* resource_manager = |
| + ui::ResourceManagerImpl::FromJavaObject(jresource_manager); |
| + contextual_search_layer_ = ContextualSearchLayer::Create(resource_manager); |
| + |
| + // The Contextual Search layer is initially invisible. |
| + contextual_search_layer_->layer()->SetHideLayerAndSubtree(true); |
| + |
| + layer()->AddChild(contextual_search_layer_->layer()); |
| } |
| ContextualSearchSceneLayer::~ContextualSearchSceneLayer() { |
| @@ -41,6 +63,8 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer( |
| jint peek_promo_ripple_resource_id, |
| jint peek_promo_text_resource_id, |
| jfloat dp_to_px, |
| + jfloat base_page_brightness, |
| + jfloat base_page_offset, |
| const JavaParamRef<jobject>& jcontent_view_core, |
| jboolean search_promo_visible, |
| jfloat search_promo_height, |
| @@ -72,19 +96,7 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer( |
| jboolean progress_bar_visible, |
| jfloat progress_bar_height, |
| jfloat progress_bar_opacity, |
| - jint progress_bar_completion, |
| - const JavaParamRef<jobject>& jresource_manager) { |
| - ui::ResourceManager* resource_manager = |
| - ui::ResourceManagerImpl::FromJavaObject(jresource_manager); |
| - // Lazily construct the contextual search layer, as the feature is only |
| - // conditionally enabled. |
| - if (!contextual_search_layer_.get()) { |
| - if (!resource_manager) |
| - return; |
| - contextual_search_layer_ = ContextualSearchLayer::Create(resource_manager); |
| - layer_->AddChild(contextual_search_layer_->layer()); |
| - } |
| - |
| + jint progress_bar_completion) { |
| // NOTE(pedrosimonetti): The ContentViewCore might not exist at this time if |
| // the Contextual Search Result has not been requested yet. In this case, |
| // we'll pass NULL to Contextual Search's Layer Tree. |
| @@ -93,6 +105,19 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer( |
| : content::ContentViewCore::GetNativeContentViewCore( |
| env, jcontent_view_core); |
| + // Fade the base page out. |
| + if (base_page_brightness_ != base_page_brightness) { |
| + base_page_brightness_ = base_page_brightness; |
| + cc::FilterOperations filters; |
| + if (base_page_brightness < 1.f) |
|
David Trainor- moved to gerrit
2016/05/13 16:14:34
I would just add {} since it's a wrapped line belo
mdjones
2016/05/13 20:30:07
Done.
|
| + filters.Append( |
| + cc::FilterOperation::CreateBrightnessFilter(base_page_brightness)); |
| + content_container_->SetFilters(filters); |
| + } |
| + |
| + // Move the base page contents up. |
| + content_container_->SetPosition(gfx::PointF(0.0f, base_page_offset)); |
| + |
| contextual_search_layer_->SetProperties( |
| search_bar_background_resource_id, |
| search_context_resource_id, |
| @@ -141,6 +166,36 @@ void ContextualSearchSceneLayer::UpdateContextualSearchLayer( |
| progress_bar_height, |
| progress_bar_opacity, |
| progress_bar_completion); |
| + |
| + // Make the layer visible if it is not already. |
| + contextual_search_layer_->layer()->SetHideLayerAndSubtree(false); |
| +} |
| + |
| +void ContextualSearchSceneLayer::SetContentTree( |
| + JNIEnv* env, |
| + const JavaParamRef<jobject>& jobj, |
| + const JavaParamRef<jobject>& jcontent_tree) { |
| + SceneLayer* content_tree = FromJavaObject(env, jcontent_tree); |
| + if (!content_tree || !content_tree->layer()) return; |
| + |
| + if (!content_tree->layer()->parent() |
| + || (content_tree->layer()->parent()->id() != content_container_->id())) { |
| + content_container_->AddChild(content_tree->layer()); |
| + } |
| +} |
| + |
| +void ContextualSearchSceneLayer::HideTree(JNIEnv* env, |
| + const JavaParamRef<jobject>& jobj) { |
| + // TODO(mdjones): Create super class for this logic. |
| + if (contextual_search_layer_) { |
| + contextual_search_layer_->layer()->SetHideLayerAndSubtree(true); |
| + } |
| + // Reset base page brightness. |
| + cc::FilterOperations filters; |
| + filters.Append(cc::FilterOperation::CreateBrightnessFilter(1.0f)); |
| + content_container_->SetFilters(filters); |
| + // Reset base page offset. |
| + content_container_->SetPosition(gfx::PointF(0.0f, 0.0f)); |
| } |
| static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) { |