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

Unified Diff: chrome/browser/android/compositor/layer/contextual_search_layer.cc

Issue 1337703002: [Contextual Search] Add support for crushed sprites and animate the search provider icon (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add TODO's for other planned tests Created 5 years, 2 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/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 bcce0f5898d3d7c0e81616b0c6a55b31e9f6442d..664d4e7ab2bf0126312eb3ba125a15bb05a1fb1a 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);
@@ -160,8 +162,7 @@ void ContextualSearchLayer::SetProperties(
color_utils::AlphaBlend(kPeekPromoRippleBackgroundColor,
kSearchBarBackgroundColor,
kPeekPromoBackgroundMaximumAlphaBlend *
- search_peek_promo_ripple_opacity
- ));
+ search_peek_promo_ripple_opacity));
// -----------------------------------------------------------------
// Peek Promo Ripple
@@ -258,25 +259,48 @@ 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.
- float search_provider_icon_top = search_bar_top +
- search_bar_height / 2 -
- search_provider_icon_resource->size.height() / 2;
+ search_provider_icon_sprite_->SetCrushedSpriteResource(
+ crushed_sprite_resource);
+ search_provider_icon_sprite_->DrawSpriteFrame(
+ 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 -
David Trainor- moved to gerrit 2015/10/15 21:04:57 fix indenting.
Theresa 2015/10/24 00:06:44 Done.
+ 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
@@ -519,8 +543,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_(
@@ -571,10 +595,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_);

Powered by Google App Engine
This is Rietveld 408576698