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_); |