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

Side by Side 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: add todo, remove extra check in reader 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/compositor/scene_layer/contextual_search_scene_ layer.h" 5 #include "chrome/browser/android/compositor/scene_layer/contextual_search_scene_ layer.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "cc/layers/solid_color_layer.h"
9 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" 10 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h"
11 #include "content/public/browser/android/compositor.h"
10 #include "content/public/browser/android/content_view_core.h" 12 #include "content/public/browser/android/content_view_core.h"
11 #include "jni/ContextualSearchSceneLayer_jni.h" 13 #include "jni/ContextualSearchSceneLayer_jni.h"
12 #include "ui/android/resources/resource_manager_impl.h" 14 #include "ui/android/resources/resource_manager_impl.h"
13 #include "ui/gfx/android/java_bitmap.h" 15 #include "ui/gfx/android/java_bitmap.h"
14 16
15 namespace chrome { 17 namespace chrome {
16 namespace android { 18 namespace android {
17 19
18 ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env, 20 ContextualSearchSceneLayer::ContextualSearchSceneLayer(JNIEnv* env,
19 jobject jobj) 21 jobject jobj)
20 : SceneLayer(env, jobj) { 22 : SceneLayer(env, jobj),
23 base_page_brightness_(1.0f),
24 content_container_(cc::Layer::Create()) {
25 // Responsible for moving the base page without modifying the layer itself.
26 content_container_->SetIsDrawable(true);
27 content_container_->SetPosition(gfx::PointF(0.0f, 0.0f));
28 layer()->AddChild(content_container_);
29 }
30
31 void ContextualSearchSceneLayer::CreateContextualSearchLayer(
32 JNIEnv* env,
33 const JavaParamRef<jobject>& object,
34 const JavaParamRef<jobject>& jresource_manager) {
35 ui::ResourceManager* resource_manager =
36 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
37 contextual_search_layer_ = ContextualSearchLayer::Create(resource_manager);
38
39 // The Contextual Search layer is initially invisible.
40 contextual_search_layer_->layer()->SetHideLayerAndSubtree(true);
41
42 layer()->AddChild(contextual_search_layer_->layer());
21 } 43 }
22 44
23 ContextualSearchSceneLayer::~ContextualSearchSceneLayer() { 45 ContextualSearchSceneLayer::~ContextualSearchSceneLayer() {
24 } 46 }
25 47
26 void ContextualSearchSceneLayer::UpdateContextualSearchLayer( 48 void ContextualSearchSceneLayer::UpdateContextualSearchLayer(
27 JNIEnv* env, 49 JNIEnv* env,
28 const JavaParamRef<jobject>& object, 50 const JavaParamRef<jobject>& object,
29 jint search_bar_background_resource_id, 51 jint search_bar_background_resource_id,
30 jint search_context_resource_id, 52 jint search_context_resource_id,
31 jint search_term_resource_id, 53 jint search_term_resource_id,
32 jint search_caption_resource_id, 54 jint search_caption_resource_id,
33 jint search_bar_shadow_resource_id, 55 jint search_bar_shadow_resource_id,
34 jint panel_icon_resource_id, 56 jint panel_icon_resource_id,
35 jint search_provider_icon_sprite_metadata_resource_id, 57 jint search_provider_icon_sprite_metadata_resource_id,
36 jint arrow_up_resource_id, 58 jint arrow_up_resource_id,
37 jint close_icon_resource_id, 59 jint close_icon_resource_id,
38 jint progress_bar_background_resource_id, 60 jint progress_bar_background_resource_id,
39 jint progress_bar_resource_id, 61 jint progress_bar_resource_id,
40 jint search_promo_resource_id, 62 jint search_promo_resource_id,
41 jint peek_promo_ripple_resource_id, 63 jint peek_promo_ripple_resource_id,
42 jint peek_promo_text_resource_id, 64 jint peek_promo_text_resource_id,
43 jfloat dp_to_px, 65 jfloat dp_to_px,
66 jfloat base_page_brightness,
67 jfloat base_page_offset,
44 const JavaParamRef<jobject>& jcontent_view_core, 68 const JavaParamRef<jobject>& jcontent_view_core,
45 jboolean search_promo_visible, 69 jboolean search_promo_visible,
46 jfloat search_promo_height, 70 jfloat search_promo_height,
47 jfloat search_promo_opacity, 71 jfloat search_promo_opacity,
48 jboolean search_peek_promo_visible, 72 jboolean search_peek_promo_visible,
49 jfloat search_peek_promo_height, 73 jfloat search_peek_promo_height,
50 jfloat search_peek_promo_padding, 74 jfloat search_peek_promo_padding,
51 jfloat search_peek_promo_ripple_width, 75 jfloat search_peek_promo_ripple_width,
52 jfloat search_peek_promo_ripple_opacity, 76 jfloat search_peek_promo_ripple_opacity,
53 jfloat search_peek_promo_text_opacity, 77 jfloat search_peek_promo_text_opacity,
(...skipping 11 matching lines...) Expand all
65 jboolean search_bar_shadow_visible, 89 jboolean search_bar_shadow_visible,
66 jfloat search_bar_shadow_opacity, 90 jfloat search_bar_shadow_opacity,
67 jboolean search_provider_icon_sprite_visible, 91 jboolean search_provider_icon_sprite_visible,
68 jfloat search_provider_icon_sprite_completion_percentage, 92 jfloat search_provider_icon_sprite_completion_percentage,
69 jfloat arrow_icon_opacity, 93 jfloat arrow_icon_opacity,
70 jfloat arrow_icon_rotation, 94 jfloat arrow_icon_rotation,
71 jfloat close_icon_opacity, 95 jfloat close_icon_opacity,
72 jboolean progress_bar_visible, 96 jboolean progress_bar_visible,
73 jfloat progress_bar_height, 97 jfloat progress_bar_height,
74 jfloat progress_bar_opacity, 98 jfloat progress_bar_opacity,
75 jint progress_bar_completion, 99 jint progress_bar_completion) {
76 const JavaParamRef<jobject>& jresource_manager) {
77 ui::ResourceManager* resource_manager =
78 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
79 // Lazily construct the contextual search layer, as the feature is only
80 // conditionally enabled.
81 if (!contextual_search_layer_.get()) {
82 if (!resource_manager)
83 return;
84 contextual_search_layer_ = ContextualSearchLayer::Create(resource_manager);
85 layer_->AddChild(contextual_search_layer_->layer());
86 }
87
88 // NOTE(pedrosimonetti): The ContentViewCore might not exist at this time if 100 // NOTE(pedrosimonetti): The ContentViewCore might not exist at this time if
89 // the Contextual Search Result has not been requested yet. In this case, 101 // the Contextual Search Result has not been requested yet. In this case,
90 // we'll pass NULL to Contextual Search's Layer Tree. 102 // we'll pass NULL to Contextual Search's Layer Tree.
91 content::ContentViewCore* content_view_core = 103 content::ContentViewCore* content_view_core =
92 !jcontent_view_core ? NULL 104 !jcontent_view_core ? NULL
93 : content::ContentViewCore::GetNativeContentViewCore( 105 : content::ContentViewCore::GetNativeContentViewCore(
94 env, jcontent_view_core); 106 env, jcontent_view_core);
95 107
108 // Fade the base page out.
109 if (base_page_brightness_ != base_page_brightness) {
110 base_page_brightness_ = base_page_brightness;
111 cc::FilterOperations filters;
112 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.
113 filters.Append(
114 cc::FilterOperation::CreateBrightnessFilter(base_page_brightness));
115 content_container_->SetFilters(filters);
116 }
117
118 // Move the base page contents up.
119 content_container_->SetPosition(gfx::PointF(0.0f, base_page_offset));
120
96 contextual_search_layer_->SetProperties( 121 contextual_search_layer_->SetProperties(
97 search_bar_background_resource_id, 122 search_bar_background_resource_id,
98 search_context_resource_id, 123 search_context_resource_id,
99 search_term_resource_id, 124 search_term_resource_id,
100 search_caption_resource_id, 125 search_caption_resource_id,
101 search_bar_shadow_resource_id, 126 search_bar_shadow_resource_id,
102 panel_icon_resource_id, 127 panel_icon_resource_id,
103 search_provider_icon_sprite_metadata_resource_id, 128 search_provider_icon_sprite_metadata_resource_id,
104 arrow_up_resource_id, 129 arrow_up_resource_id,
105 close_icon_resource_id, 130 close_icon_resource_id,
(...skipping 28 matching lines...) Expand all
134 search_bar_shadow_opacity, 159 search_bar_shadow_opacity,
135 search_provider_icon_sprite_visible, 160 search_provider_icon_sprite_visible,
136 search_provider_icon_sprite_completion_percentage, 161 search_provider_icon_sprite_completion_percentage,
137 arrow_icon_opacity, 162 arrow_icon_opacity,
138 arrow_icon_rotation, 163 arrow_icon_rotation,
139 close_icon_opacity, 164 close_icon_opacity,
140 progress_bar_visible, 165 progress_bar_visible,
141 progress_bar_height, 166 progress_bar_height,
142 progress_bar_opacity, 167 progress_bar_opacity,
143 progress_bar_completion); 168 progress_bar_completion);
169
170 // Make the layer visible if it is not already.
171 contextual_search_layer_->layer()->SetHideLayerAndSubtree(false);
172 }
173
174 void ContextualSearchSceneLayer::SetContentTree(
175 JNIEnv* env,
176 const JavaParamRef<jobject>& jobj,
177 const JavaParamRef<jobject>& jcontent_tree) {
178 SceneLayer* content_tree = FromJavaObject(env, jcontent_tree);
179 if (!content_tree || !content_tree->layer()) return;
180
181 if (!content_tree->layer()->parent()
182 || (content_tree->layer()->parent()->id() != content_container_->id())) {
183 content_container_->AddChild(content_tree->layer());
184 }
185 }
186
187 void ContextualSearchSceneLayer::HideTree(JNIEnv* env,
188 const JavaParamRef<jobject>& jobj) {
189 // TODO(mdjones): Create super class for this logic.
190 if (contextual_search_layer_) {
191 contextual_search_layer_->layer()->SetHideLayerAndSubtree(true);
192 }
193 // Reset base page brightness.
194 cc::FilterOperations filters;
195 filters.Append(cc::FilterOperation::CreateBrightnessFilter(1.0f));
196 content_container_->SetFilters(filters);
197 // Reset base page offset.
198 content_container_->SetPosition(gfx::PointF(0.0f, 0.0f));
144 } 199 }
145 200
146 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) { 201 static jlong Init(JNIEnv* env, const JavaParamRef<jobject>& jobj) {
147 // This will automatically bind to the Java object and pass ownership there. 202 // This will automatically bind to the Java object and pass ownership there.
148 ContextualSearchSceneLayer* tree_provider = 203 ContextualSearchSceneLayer* tree_provider =
149 new ContextualSearchSceneLayer(env, jobj); 204 new ContextualSearchSceneLayer(env, jobj);
150 return reinterpret_cast<intptr_t>(tree_provider); 205 return reinterpret_cast<intptr_t>(tree_provider);
151 } 206 }
152 207
153 bool RegisterContextualSearchSceneLayer(JNIEnv* env) { 208 bool RegisterContextualSearchSceneLayer(JNIEnv* env) {
154 return RegisterNativesImpl(env); 209 return RegisterNativesImpl(env);
155 } 210 }
156 211
157 } // namespace android 212 } // namespace android
158 } // namespace chrome 213 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698