| 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..1e201d2dccb2bbd3ae8b06eb0f67b8922188f9c1 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,20 @@ 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) {
|
| + 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 +167,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) {
|
|
|