Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: chrome/browser/android/compositor/scene_layer/contextual_search_scene_layer.cc

Issue 1716653002: Implement OverlayPanels as SceneOverlays (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..4ead8f5479e3522c1485c987a651377113ad59c8 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,28 @@ 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));
+}
+
+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);
+
+ // Add all layers to the tree; this is order dependent.
+ layer()->AddChild(content_container_);
pedro (no code reviews) 2016/05/05 19:12:16 This line does not belong in here. This method sho
mdjones 2016/05/05 20:56:00 Done.
+ layer()->AddChild(contextual_search_layer_->layer());
}
ContextualSearchSceneLayer::~ContextualSearchSceneLayer() {
@@ -41,6 +64,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 +97,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 +106,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)
+ 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) {

Powered by Google App Engine
This is Rietveld 408576698