Chromium Code Reviews| Index: chrome/browser/android/compositor/layer/contextual_search_layer.cc | 
| diff --git a/chrome/browser/android/compositor/layer/contextual_search_layer.cc b/chrome/browser/android/compositor/layer/contextual_search_layer.cc | 
| index 1d7f62fe7f41e8cc076ab4a1b3805a298a191d70..bef891b6fb41bd3d5c25957e631d20d05acde30f 100644 | 
| --- a/chrome/browser/android/compositor/layer/contextual_search_layer.cc | 
| +++ b/chrome/browser/android/compositor/layer/contextual_search_layer.cc | 
| @@ -9,9 +9,11 @@ | 
| #include "cc/layers/solid_color_layer.h" | 
| #include "cc/layers/ui_resource_layer.h" | 
| #include "cc/resources/scoped_ui_resource.h" | 
| +#include "chrome/browser/android/compositor/layer/crushed_sprite_layer.h" | 
| #include "content/public/browser/android/compositor.h" | 
| #include "content/public/browser/android/content_view_core.h" | 
| #include "third_party/skia/include/core/SkColor.h" | 
| +#include "ui/android/resources/crushed_sprite_resource.h" | 
| #include "ui/android/resources/resource_manager.h" | 
| #include "ui/base/l10n/l10n_util_android.h" | 
| #include "ui/gfx/color_utils.h" | 
| @@ -43,7 +45,6 @@ void ContextualSearchLayer::SetProperties( | 
| int search_context_resource_id, | 
| int search_term_resource_id, | 
| int search_bar_shadow_resource_id, | 
| - int search_provider_icon_resource_id, | 
| int arrow_up_resource_id, | 
| int close_icon_resource_id, | 
| int progress_bar_background_resource_id, | 
| @@ -51,6 +52,8 @@ void ContextualSearchLayer::SetProperties( | 
| int search_promo_resource_id, | 
| int peek_promo_ripple_resource_id, | 
| int peek_promo_text_resource_id, | 
| + int search_provider_icon_sprite_bitmap_resource_id, | 
| + int search_provider_icon_sprite_metadata_resource_id, | 
| content::ContentViewCore* content_view_core, | 
| bool search_promo_visible, | 
| float search_promo_height, | 
| @@ -73,6 +76,9 @@ void ContextualSearchLayer::SetProperties( | 
| float search_bar_border_height, | 
| bool search_bar_shadow_visible, | 
| float search_bar_shadow_opacity, | 
| + bool search_provider_icon_sprite_visible, | 
| + int search_provider_icon_sprite_frame, | 
| + float search_provider_icon_sprite_size, | 
| float arrow_icon_opacity, | 
| float arrow_icon_rotation, | 
| float close_icon_opacity, | 
| @@ -92,12 +98,8 @@ void ContextualSearchLayer::SetProperties( | 
| ui::ResourceManager::Resource* panel_shadow_resource = | 
| resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 
| panel_shadow_resource_id); | 
| - ui::ResourceManager::Resource* search_provider_icon_resource = | 
| - resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 
| - search_provider_icon_resource_id); | 
| DCHECK(panel_shadow_resource); | 
| - DCHECK(search_provider_icon_resource); | 
| // Round values to avoid pixel gap between layers. | 
| search_bar_height = floor(search_bar_height); | 
| @@ -159,8 +161,7 @@ void ContextualSearchLayer::SetProperties( | 
| color_utils::AlphaBlend(kPeekPromoRippleBackgroundColor, | 
| kSearchBarBackgroundColor, | 
| kPeekPromoBackgroundMaximumAlphaBlend * | 
| - search_peek_promo_ripple_opacity | 
| - )); | 
| + search_peek_promo_ripple_opacity)); | 
| // ----------------------------------------------------------------- | 
| // Peek Promo Ripple | 
| @@ -257,25 +258,46 @@ void ContextualSearchLayer::SetProperties( | 
| // --------------------------------------------------------------------------- | 
| // Search Provider Icon | 
| // --------------------------------------------------------------------------- | 
| - // Positions the Search Provider Icon at the start of the Search Bar. | 
| - float search_provider_icon_left; | 
| - if (is_rtl) { | 
| - search_provider_icon_left = search_panel_width - | 
| - search_provider_icon_resource->size.width() - search_bar_margin_side; | 
| - } else { | 
| - search_provider_icon_left = search_bar_margin_side; | 
| - } | 
| + if (search_provider_icon_sprite_visible) { | 
| + scoped_refptr<ui::CrushedSpriteResource> crushed_sprite_resource = | 
| + resource_manager_->GetCrushedSpriteResource( | 
| + search_provider_icon_sprite_bitmap_resource_id, | 
| + search_provider_icon_sprite_metadata_resource_id); | 
| + | 
| + if (search_provider_icon_sprite_->layer()->parent() != layer_) { | 
| + layer_->AddChild(search_provider_icon_sprite_->layer()); | 
| + } | 
| - // Centers the Search Provider Icon vertically in the Search Bar. | 
| 
 
pedro (no code reviews)
2015/10/27 20:32:00
As we discussed offline, please keep this code aro
 
Theresa
2015/10/28 02:01:53
Done.
 
 | 
| - float search_provider_icon_top = search_bar_top + | 
| - search_bar_height / 2 - | 
| - search_provider_icon_resource->size.height() / 2; | 
| + search_provider_icon_sprite_->DrawSpriteFrame( | 
| + crushed_sprite_resource, | 
| + search_provider_icon_sprite_frame); | 
| + | 
| + // Positions the Search Provider Icon at the start of the Search Bar. | 
| + float icon_x; | 
| + if (is_rtl) { | 
| + icon_x = search_panel_width - search_provider_icon_sprite_size - | 
| + search_bar_margin_side; | 
| + } else { | 
| + icon_x = search_bar_margin_side; | 
| + } | 
| - search_provider_icon_->SetUIResourceId( | 
| - search_provider_icon_resource->ui_resource->id()); | 
| - search_provider_icon_->SetBounds(search_provider_icon_resource->size); | 
| - search_provider_icon_->SetPosition( | 
| - gfx::PointF(search_provider_icon_left, search_provider_icon_top)); | 
| + // Centers the Search Provider Icon vertically in the Search Bar. | 
| + float icon_y = search_bar_top + search_bar_height / 2 | 
| + - search_provider_icon_sprite_size / 2; | 
| + search_provider_icon_sprite_->layer()->SetPosition( | 
| + gfx::PointF(icon_x, icon_y)); | 
| + | 
| + // Scales the layer to the correct size. | 
| + search_provider_icon_sprite_->layer()->SetBounds( | 
| + gfx::Size(search_provider_icon_sprite_size, | 
| + search_provider_icon_sprite_size)); | 
| + | 
| + } else { | 
| + if (search_provider_icon_sprite_->layer().get() && | 
| + search_provider_icon_sprite_->layer()->parent()) { | 
| + search_provider_icon_sprite_->layer()->RemoveFromParent(); | 
| + } | 
| + } | 
| // --------------------------------------------------------------------------- | 
| // Arrow Icon | 
| @@ -518,8 +540,8 @@ ContextualSearchLayer::ContextualSearchLayer( | 
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 
| search_bar_shadow_( | 
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 
| - search_provider_icon_( | 
| - cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 
| + search_provider_icon_sprite_( | 
| + CrushedSpriteLayer::Create(resource_manager)), | 
| arrow_icon_( | 
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 
| close_icon_( | 
| @@ -570,10 +592,6 @@ ContextualSearchLayer::ContextualSearchLayer( | 
| search_term_->SetIsDrawable(true); | 
| layer_->AddChild(search_term_); | 
| - // Search Provider Icon | 
| - search_provider_icon_->SetIsDrawable(true); | 
| - layer_->AddChild(search_provider_icon_); | 
| - | 
| // Arrow Icon | 
| arrow_icon_->SetIsDrawable(true); | 
| layer_->AddChild(arrow_icon_); |