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

Side by Side Diff: chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.cc

Issue 2746483003: ui/android: Fix Resource meta-data sharing with ResourceManager. (Closed)
Patch Set: jni Created 3 years, 9 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
« no previous file with comments | « chrome/browser/android/compositor/layer/toolbar_layer.cc ('k') | ui/android/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/tab_strip_scene_layer.h" 5 #include "chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "cc/resources/scoped_ui_resource.h" 8 #include "cc/resources/scoped_ui_resource.h"
9 #include "chrome/browser/android/compositor/layer/tab_handle_layer.h" 9 #include "chrome/browser/android/compositor/layer/tab_handle_layer.h"
10 #include "chrome/browser/android/compositor/layer_title_cache.h" 10 #include "chrome/browser/android/compositor/layer_title_cache.h"
11 #include "content/public/browser/android/compositor.h" 11 #include "content/public/browser/android/compositor.h"
12 #include "jni/TabStripSceneLayer_jni.h" 12 #include "jni/TabStripSceneLayer_jni.h"
13 #include "ui/android/resources/nine_patch_resource.h"
13 #include "ui/android/resources/resource_manager_impl.h" 14 #include "ui/android/resources/resource_manager_impl.h"
14 #include "ui/gfx/transform.h" 15 #include "ui/gfx/transform.h"
15 16
16 using base::android::JavaParamRef; 17 using base::android::JavaParamRef;
17 18
18 namespace android { 19 namespace android {
19 20
20 TabStripSceneLayer::TabStripSceneLayer(JNIEnv* env, jobject jobj) 21 TabStripSceneLayer::TabStripSceneLayer(JNIEnv* env, jobject jobj)
21 : SceneLayer(env, jobj), 22 : SceneLayer(env, jobj),
22 tab_strip_layer_(cc::SolidColorLayer::Create()), 23 tab_strip_layer_(cc::SolidColorLayer::Create()),
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 const JavaParamRef<jobject>& jobj, 141 const JavaParamRef<jobject>& jobj,
141 jint resource_id, 142 jint resource_id,
142 jfloat x, 143 jfloat x,
143 jfloat y, 144 jfloat y,
144 jfloat width, 145 jfloat width,
145 jfloat height, 146 jfloat height,
146 jboolean visible, 147 jboolean visible,
147 const JavaParamRef<jobject>& jresource_manager) { 148 const JavaParamRef<jobject>& jresource_manager) {
148 ui::ResourceManager* resource_manager = 149 ui::ResourceManager* resource_manager =
149 ui::ResourceManagerImpl::FromJavaObject(jresource_manager); 150 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
150 ui::ResourceManager::Resource* button_resource = 151 ui::Resource* button_resource = resource_manager->GetResource(
151 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 152 ui::ANDROID_RESOURCE_TYPE_STATIC, resource_id);
152 resource_id);
153 153
154 new_tab_button_->SetUIResourceId(button_resource->ui_resource->id()); 154 new_tab_button_->SetUIResourceId(button_resource->ui_resource()->id());
155 float left_offset = (width - button_resource->size.width()) / 2; 155 float left_offset = (width - button_resource->size().width()) / 2;
156 float top_offset = (height - button_resource->size.height()) / 2; 156 float top_offset = (height - button_resource->size().height()) / 2;
157 new_tab_button_->SetPosition(gfx::PointF(x + left_offset, y + top_offset)); 157 new_tab_button_->SetPosition(gfx::PointF(x + left_offset, y + top_offset));
158 new_tab_button_->SetBounds(button_resource->size); 158 new_tab_button_->SetBounds(button_resource->size());
159 new_tab_button_->SetHideLayerAndSubtree(!visible); 159 new_tab_button_->SetHideLayerAndSubtree(!visible);
160 } 160 }
161 161
162 void TabStripSceneLayer::UpdateModelSelectorButton( 162 void TabStripSceneLayer::UpdateModelSelectorButton(
163 JNIEnv* env, 163 JNIEnv* env,
164 const JavaParamRef<jobject>& jobj, 164 const JavaParamRef<jobject>& jobj,
165 jint resource_id, 165 jint resource_id,
166 jfloat x, 166 jfloat x,
167 jfloat y, 167 jfloat y,
168 jfloat width, 168 jfloat width,
169 jfloat height, 169 jfloat height,
170 jboolean incognito, 170 jboolean incognito,
171 jboolean visible, 171 jboolean visible,
172 const JavaParamRef<jobject>& jresource_manager) { 172 const JavaParamRef<jobject>& jresource_manager) {
173 ui::ResourceManager* resource_manager = 173 ui::ResourceManager* resource_manager =
174 ui::ResourceManagerImpl::FromJavaObject(jresource_manager); 174 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
175 ui::ResourceManager::Resource* button_resource = 175 ui::Resource* button_resource = resource_manager->GetResource(
176 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 176 ui::ANDROID_RESOURCE_TYPE_STATIC, resource_id);
177 resource_id);
178 177
179 model_selector_button_->SetUIResourceId(button_resource->ui_resource->id()); 178 model_selector_button_->SetUIResourceId(button_resource->ui_resource()->id());
180 float left_offset = (width - button_resource->size.width()) / 2; 179 float left_offset = (width - button_resource->size().width()) / 2;
181 float top_offset = (height - button_resource->size.height()) / 2; 180 float top_offset = (height - button_resource->size().height()) / 2;
182 model_selector_button_->SetPosition( 181 model_selector_button_->SetPosition(
183 gfx::PointF(x + left_offset, y + top_offset)); 182 gfx::PointF(x + left_offset, y + top_offset));
184 model_selector_button_->SetBounds(button_resource->size); 183 model_selector_button_->SetBounds(button_resource->size());
185 model_selector_button_->SetHideLayerAndSubtree(!visible); 184 model_selector_button_->SetHideLayerAndSubtree(!visible);
186 } 185 }
187 186
188 void TabStripSceneLayer::UpdateTabStripLeftFade( 187 void TabStripSceneLayer::UpdateTabStripLeftFade(
189 JNIEnv* env, 188 JNIEnv* env,
190 const JavaParamRef<jobject>& jobj, 189 const JavaParamRef<jobject>& jobj,
191 jint resource_id, 190 jint resource_id,
192 jfloat opacity, 191 jfloat opacity,
193 const JavaParamRef<jobject>& jresource_manager) { 192 const JavaParamRef<jobject>& jresource_manager) {
194 193
195 // Hide layer if it's not visible. 194 // Hide layer if it's not visible.
196 if (opacity == 0.f) { 195 if (opacity == 0.f) {
197 left_fade_->SetHideLayerAndSubtree(true); 196 left_fade_->SetHideLayerAndSubtree(true);
198 return; 197 return;
199 } 198 }
200 199
201 // Set UI resource. 200 // Set UI resource.
202 ui::ResourceManager* resource_manager = 201 ui::ResourceManager* resource_manager =
203 ui::ResourceManagerImpl::FromJavaObject(jresource_manager); 202 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
204 ui::ResourceManager::Resource* fade_resource = 203 ui::Resource* fade_resource = resource_manager->GetResource(
205 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 204 ui::ANDROID_RESOURCE_TYPE_STATIC, resource_id);
206 resource_id); 205 left_fade_->SetUIResourceId(fade_resource->ui_resource()->id());
207 left_fade_->SetUIResourceId(fade_resource->ui_resource->id());
208 206
209 // The same resource is used for both left and right fade, so the 207 // The same resource is used for both left and right fade, so the
210 // resource must be rotated for the left fade. 208 // resource must be rotated for the left fade.
211 gfx::Transform fade_transform; 209 gfx::Transform fade_transform;
212 fade_transform.RotateAboutYAxis(180.0); 210 fade_transform.RotateAboutYAxis(180.0);
213 left_fade_->SetTransform(fade_transform); 211 left_fade_->SetTransform(fade_transform);
214 212
215 // Set opacity. 213 // Set opacity.
216 left_fade_->SetOpacity(opacity); 214 left_fade_->SetOpacity(opacity);
217 215
218 // Set bounds. Use the parent layer height so the 1px fade resource is 216 // Set bounds. Use the parent layer height so the 1px fade resource is
219 // stretched vertically. 217 // stretched vertically.
220 left_fade_->SetBounds(gfx::Size(fade_resource->size.width(), 218 left_fade_->SetBounds(gfx::Size(fade_resource->size().width(),
221 scrollable_strip_layer_->bounds().height())); 219 scrollable_strip_layer_->bounds().height()));
222 220
223 // Set position. The rotation set above requires the layer to be offset 221 // Set position. The rotation set above requires the layer to be offset
224 // by its width in order to display on the left edge. 222 // by its width in order to display on the left edge.
225 left_fade_->SetPosition(gfx::PointF(fade_resource->size.width(), 0)); 223 left_fade_->SetPosition(gfx::PointF(fade_resource->size().width(), 0));
226 224
227 // Ensure layer is visible. 225 // Ensure layer is visible.
228 left_fade_->SetHideLayerAndSubtree(false); 226 left_fade_->SetHideLayerAndSubtree(false);
229 } 227 }
230 228
231 void TabStripSceneLayer::UpdateTabStripRightFade( 229 void TabStripSceneLayer::UpdateTabStripRightFade(
232 JNIEnv* env, 230 JNIEnv* env,
233 const JavaParamRef<jobject>& jobj, 231 const JavaParamRef<jobject>& jobj,
234 jint resource_id, 232 jint resource_id,
235 jfloat opacity, 233 jfloat opacity,
236 const JavaParamRef<jobject>& jresource_manager) { 234 const JavaParamRef<jobject>& jresource_manager) {
237 235
238 // Hide layer if it's not visible. 236 // Hide layer if it's not visible.
239 if (opacity == 0.f) { 237 if (opacity == 0.f) {
240 right_fade_->SetHideLayerAndSubtree(true); 238 right_fade_->SetHideLayerAndSubtree(true);
241 return; 239 return;
242 } 240 }
243 241
244 // Set UI resource. 242 // Set UI resource.
245 ui::ResourceManager* resource_manager = 243 ui::ResourceManager* resource_manager =
246 ui::ResourceManagerImpl::FromJavaObject(jresource_manager); 244 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
247 ui::ResourceManager::Resource* fade_resource = 245 ui::Resource* fade_resource = resource_manager->GetResource(
248 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 246 ui::ANDROID_RESOURCE_TYPE_STATIC, resource_id);
249 resource_id); 247 right_fade_->SetUIResourceId(fade_resource->ui_resource()->id());
250 right_fade_->SetUIResourceId(fade_resource->ui_resource->id());
251 248
252 // Set opacity. 249 // Set opacity.
253 right_fade_->SetOpacity(opacity); 250 right_fade_->SetOpacity(opacity);
254 251
255 // Set bounds. Use the parent layer height so the 1px fade resource is 252 // Set bounds. Use the parent layer height so the 1px fade resource is
256 // stretched vertically. 253 // stretched vertically.
257 right_fade_->SetBounds(gfx::Size( 254 right_fade_->SetBounds(gfx::Size(fade_resource->size().width(),
258 fade_resource->size.width(), 255 scrollable_strip_layer_->bounds().height()));
259 scrollable_strip_layer_->bounds().height()));
260 256
261 // Set position. The right fade is positioned at the end of the tab strip. 257 // Set position. The right fade is positioned at the end of the tab strip.
262 float x = 258 float x =
263 scrollable_strip_layer_->bounds().width() - fade_resource->size.width(); 259 scrollable_strip_layer_->bounds().width() - fade_resource->size().width();
264 right_fade_->SetPosition(gfx::PointF(x, 0)); 260 right_fade_->SetPosition(gfx::PointF(x, 0));
265 261
266 // Ensure layer is visible. 262 // Ensure layer is visible.
267 right_fade_->SetHideLayerAndSubtree(false); 263 right_fade_->SetHideLayerAndSubtree(false);
268 } 264 }
269 265
270 void TabStripSceneLayer::PutStripTabLayer( 266 void TabStripSceneLayer::PutStripTabLayer(
271 JNIEnv* env, 267 JNIEnv* env,
272 const JavaParamRef<jobject>& jobj, 268 const JavaParamRef<jobject>& jobj,
273 jint id, 269 jint id,
(...skipping 11 matching lines...) Expand all
285 jboolean is_loading, 281 jboolean is_loading,
286 jfloat spinner_rotation, 282 jfloat spinner_rotation,
287 jfloat border_opacity, 283 jfloat border_opacity,
288 const JavaParamRef<jobject>& jlayer_title_cache, 284 const JavaParamRef<jobject>& jlayer_title_cache,
289 const JavaParamRef<jobject>& jresource_manager) { 285 const JavaParamRef<jobject>& jresource_manager) {
290 LayerTitleCache* layer_title_cache = 286 LayerTitleCache* layer_title_cache =
291 LayerTitleCache::FromJavaObject(jlayer_title_cache); 287 LayerTitleCache::FromJavaObject(jlayer_title_cache);
292 ui::ResourceManager* resource_manager = 288 ui::ResourceManager* resource_manager =
293 ui::ResourceManagerImpl::FromJavaObject(jresource_manager); 289 ui::ResourceManagerImpl::FromJavaObject(jresource_manager);
294 scoped_refptr<TabHandleLayer> layer = GetNextLayer(layer_title_cache); 290 scoped_refptr<TabHandleLayer> layer = GetNextLayer(layer_title_cache);
295 ui::ResourceManager::Resource* tab_handle_resource = 291 ui::NinePatchResource* tab_handle_resource =
296 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 292 ui::NinePatchResource::From(resource_manager->GetResource(
297 handle_resource_id); 293 ui::ANDROID_RESOURCE_TYPE_STATIC, handle_resource_id));
298 ui::ResourceManager::Resource* close_button_resource = 294 ui::Resource* close_button_resource = resource_manager->GetResource(
299 resource_manager->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 295 ui::ANDROID_RESOURCE_TYPE_STATIC, close_resource_id);
300 close_resource_id);
301 layer->SetProperties(id, close_button_resource, tab_handle_resource, 296 layer->SetProperties(id, close_button_resource, tab_handle_resource,
302 foreground, close_pressed, toolbar_width, x, y, width, 297 foreground, close_pressed, toolbar_width, x, y, width,
303 height, content_offset_x, close_button_alpha, is_loading, 298 height, content_offset_x, close_button_alpha, is_loading,
304 spinner_rotation, background_tab_brightness_, 299 spinner_rotation, background_tab_brightness_,
305 border_opacity); 300 border_opacity);
306 } 301 }
307 302
308 scoped_refptr<TabHandleLayer> TabStripSceneLayer::GetNextLayer( 303 scoped_refptr<TabHandleLayer> TabStripSceneLayer::GetNextLayer(
309 LayerTitleCache* layer_title_cache) { 304 LayerTitleCache* layer_title_cache) {
310 if (write_index_ < tab_handle_layers_.size()) 305 if (write_index_ < tab_handle_layers_.size())
(...skipping 23 matching lines...) Expand all
334 // This will automatically bind to the Java object and pass ownership there. 329 // This will automatically bind to the Java object and pass ownership there.
335 TabStripSceneLayer* scene_layer = new TabStripSceneLayer(env, jobj); 330 TabStripSceneLayer* scene_layer = new TabStripSceneLayer(env, jobj);
336 return reinterpret_cast<intptr_t>(scene_layer); 331 return reinterpret_cast<intptr_t>(scene_layer);
337 } 332 }
338 333
339 bool RegisterTabStripSceneLayer(JNIEnv* env) { 334 bool RegisterTabStripSceneLayer(JNIEnv* env) {
340 return RegisterNativesImpl(env); 335 return RegisterNativesImpl(env);
341 } 336 }
342 337
343 } // namespace android 338 } // namespace android
OLDNEW
« no previous file with comments | « chrome/browser/android/compositor/layer/toolbar_layer.cc ('k') | ui/android/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698