Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/layer/contextual_search_layer.h" | 5 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" |
| 6 | 6 |
| 7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
| 8 #include "cc/layers/nine_patch_layer.h" | 8 #include "cc/layers/nine_patch_layer.h" |
| 9 #include "cc/layers/solid_color_layer.h" | 9 #include "cc/layers/solid_color_layer.h" |
| 10 #include "cc/layers/ui_resource_layer.h" | 10 #include "cc/layers/ui_resource_layer.h" |
| 11 #include "cc/resources/scoped_ui_resource.h" | 11 #include "cc/resources/scoped_ui_resource.h" |
| 12 #include "chrome/browser/android/compositor/layer/crushed_sprite_layer.h" | |
| 12 #include "content/public/browser/android/compositor.h" | 13 #include "content/public/browser/android/compositor.h" |
| 13 #include "content/public/browser/android/content_view_core.h" | 14 #include "content/public/browser/android/content_view_core.h" |
| 14 #include "third_party/skia/include/core/SkColor.h" | 15 #include "third_party/skia/include/core/SkColor.h" |
| 16 #include "ui/android/resources/crushed_sprite_resource.h" | |
| 15 #include "ui/android/resources/resource_manager.h" | 17 #include "ui/android/resources/resource_manager.h" |
| 16 #include "ui/base/l10n/l10n_util_android.h" | 18 #include "ui/base/l10n/l10n_util_android.h" |
| 17 #include "ui/gfx/color_utils.h" | 19 #include "ui/gfx/color_utils.h" |
| 18 | 20 |
| 19 namespace { | 21 namespace { |
| 20 | 22 |
| 21 const SkColor kSearchBackgroundColor = SkColorSetRGB(0xee, 0xee, 0xee); | 23 const SkColor kSearchBackgroundColor = SkColorSetRGB(0xee, 0xee, 0xee); |
| 22 const SkColor kSearchBarBackgroundColor = SkColorSetRGB(0xff, 0xff, 0xff); | 24 const SkColor kSearchBarBackgroundColor = SkColorSetRGB(0xff, 0xff, 0xff); |
| 23 const SkColor kSearchBarBorderColor = SkColorSetRGB(0xf1, 0xf1, 0xf1); | 25 const SkColor kSearchBarBorderColor = SkColorSetRGB(0xf1, 0xf1, 0xf1); |
| 24 const SkColor kPeekPromoRippleBackgroundColor = SkColorSetRGB(0x42, 0x85, 0xF4); | 26 const SkColor kPeekPromoRippleBackgroundColor = SkColorSetRGB(0x42, 0x85, 0xF4); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 36 scoped_refptr<ContextualSearchLayer> ContextualSearchLayer::Create( | 38 scoped_refptr<ContextualSearchLayer> ContextualSearchLayer::Create( |
| 37 ui::ResourceManager* resource_manager) { | 39 ui::ResourceManager* resource_manager) { |
| 38 return make_scoped_refptr(new ContextualSearchLayer(resource_manager)); | 40 return make_scoped_refptr(new ContextualSearchLayer(resource_manager)); |
| 39 } | 41 } |
| 40 | 42 |
| 41 void ContextualSearchLayer::SetProperties( | 43 void ContextualSearchLayer::SetProperties( |
| 42 int panel_shadow_resource_id, | 44 int panel_shadow_resource_id, |
| 43 int search_context_resource_id, | 45 int search_context_resource_id, |
| 44 int search_term_resource_id, | 46 int search_term_resource_id, |
| 45 int search_bar_shadow_resource_id, | 47 int search_bar_shadow_resource_id, |
| 46 int search_provider_icon_resource_id, | |
| 47 int arrow_up_resource_id, | 48 int arrow_up_resource_id, |
| 48 int close_icon_resource_id, | 49 int close_icon_resource_id, |
| 49 int progress_bar_background_resource_id, | 50 int progress_bar_background_resource_id, |
| 50 int progress_bar_resource_id, | 51 int progress_bar_resource_id, |
| 51 int search_promo_resource_id, | 52 int search_promo_resource_id, |
| 52 int peek_promo_ripple_resource_id, | 53 int peek_promo_ripple_resource_id, |
| 53 int peek_promo_text_resource_id, | 54 int peek_promo_text_resource_id, |
| 55 int search_provider_icon_sprite_bitmap_resource_id, | |
| 56 int search_provider_icon_sprite_metadata_resource_id, | |
| 54 content::ContentViewCore* content_view_core, | 57 content::ContentViewCore* content_view_core, |
| 55 bool search_promo_visible, | 58 bool search_promo_visible, |
| 56 float search_promo_height, | 59 float search_promo_height, |
| 57 float search_promo_opacity, | 60 float search_promo_opacity, |
| 58 bool search_peek_promo_visible, | 61 bool search_peek_promo_visible, |
| 59 float search_peek_promo_height, | 62 float search_peek_promo_height, |
| 60 float search_peek_promo_padding, | 63 float search_peek_promo_padding, |
| 61 float search_peek_promo_ripple_width, | 64 float search_peek_promo_ripple_width, |
| 62 float search_peek_promo_ripple_opacity, | 65 float search_peek_promo_ripple_opacity, |
| 63 float search_peek_promo_text_opacity, | 66 float search_peek_promo_text_opacity, |
| 64 float search_panel_x, | 67 float search_panel_x, |
| 65 float search_panel_y, | 68 float search_panel_y, |
| 66 float search_panel_width, | 69 float search_panel_width, |
| 67 float search_panel_height, | 70 float search_panel_height, |
| 68 float search_bar_margin_side, | 71 float search_bar_margin_side, |
| 69 float search_bar_height, | 72 float search_bar_height, |
| 70 float search_context_opacity, | 73 float search_context_opacity, |
| 71 float search_term_opacity, | 74 float search_term_opacity, |
| 72 bool search_bar_border_visible, | 75 bool search_bar_border_visible, |
| 73 float search_bar_border_height, | 76 float search_bar_border_height, |
| 74 bool search_bar_shadow_visible, | 77 bool search_bar_shadow_visible, |
| 75 float search_bar_shadow_opacity, | 78 float search_bar_shadow_opacity, |
| 79 bool search_provider_icon_sprite_visible, | |
| 80 int search_provider_icon_sprite_frame, | |
| 81 float search_provider_icon_sprite_size, | |
| 76 float arrow_icon_opacity, | 82 float arrow_icon_opacity, |
| 77 float arrow_icon_rotation, | 83 float arrow_icon_rotation, |
| 78 float close_icon_opacity, | 84 float close_icon_opacity, |
| 79 bool progress_bar_visible, | 85 bool progress_bar_visible, |
| 80 float progress_bar_height, | 86 float progress_bar_height, |
| 81 float progress_bar_opacity, | 87 float progress_bar_opacity, |
| 82 int progress_bar_completion) { | 88 int progress_bar_completion) { |
| 83 // Grabs the dynamic Search Bar Text resource. | 89 // Grabs the dynamic Search Bar Text resource. |
| 84 ui::ResourceManager::Resource* search_context_resource = | 90 ui::ResourceManager::Resource* search_context_resource = |
| 85 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, | 91 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, |
| 86 search_context_resource_id); | 92 search_context_resource_id); |
| 87 ui::ResourceManager::Resource* search_term_resource = | 93 ui::ResourceManager::Resource* search_term_resource = |
| 88 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, | 94 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, |
| 89 search_term_resource_id); | 95 search_term_resource_id); |
| 90 | 96 |
| 91 // Grabs required static resources. | 97 // Grabs required static resources. |
| 92 ui::ResourceManager::Resource* panel_shadow_resource = | 98 ui::ResourceManager::Resource* panel_shadow_resource = |
| 93 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 99 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 94 panel_shadow_resource_id); | 100 panel_shadow_resource_id); |
| 95 ui::ResourceManager::Resource* search_provider_icon_resource = | |
| 96 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | |
| 97 search_provider_icon_resource_id); | |
| 98 | 101 |
| 99 DCHECK(panel_shadow_resource); | 102 DCHECK(panel_shadow_resource); |
| 100 DCHECK(search_provider_icon_resource); | |
| 101 | 103 |
| 102 // Round values to avoid pixel gap between layers. | 104 // Round values to avoid pixel gap between layers. |
| 103 search_bar_height = floor(search_bar_height); | 105 search_bar_height = floor(search_bar_height); |
| 104 | 106 |
| 105 float search_bar_top = search_peek_promo_height; | 107 float search_bar_top = search_peek_promo_height; |
| 106 float search_bar_bottom = search_bar_top + search_bar_height; | 108 float search_bar_bottom = search_bar_top + search_bar_height; |
| 107 | 109 |
| 108 bool is_rtl = l10n_util::IsLayoutRtl(); | 110 bool is_rtl = l10n_util::IsLayoutRtl(); |
| 109 | 111 |
| 110 // --------------------------------------------------------------------------- | 112 // --------------------------------------------------------------------------- |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 153 | 155 |
| 154 // Apply a blend based on the ripple opacity. The resulting color will | 156 // Apply a blend based on the ripple opacity. The resulting color will |
| 155 // be an interpolation between the background color of the Search Bar and | 157 // be an interpolation between the background color of the Search Bar and |
| 156 // a lighter shade of the background color of the Ripple. The range of | 158 // a lighter shade of the background color of the Ripple. The range of |
| 157 // the alpha value used in the blend will be: | 159 // the alpha value used in the blend will be: |
| 158 // [0.f, kPeekPromoBackgroundMaximumAlphaBlend] | 160 // [0.f, kPeekPromoBackgroundMaximumAlphaBlend] |
| 159 peek_promo_container_->SetBackgroundColor( | 161 peek_promo_container_->SetBackgroundColor( |
| 160 color_utils::AlphaBlend(kPeekPromoRippleBackgroundColor, | 162 color_utils::AlphaBlend(kPeekPromoRippleBackgroundColor, |
| 161 kSearchBarBackgroundColor, | 163 kSearchBarBackgroundColor, |
| 162 kPeekPromoBackgroundMaximumAlphaBlend * | 164 kPeekPromoBackgroundMaximumAlphaBlend * |
| 163 search_peek_promo_ripple_opacity | 165 search_peek_promo_ripple_opacity)); |
| 164 )); | |
| 165 | 166 |
| 166 // ----------------------------------------------------------------- | 167 // ----------------------------------------------------------------- |
| 167 // Peek Promo Ripple | 168 // Peek Promo Ripple |
| 168 // ----------------------------------------------------------------- | 169 // ----------------------------------------------------------------- |
| 169 gfx::Size peek_promo_ripple_size( | 170 gfx::Size peek_promo_ripple_size( |
| 170 search_peek_promo_ripple_width, search_peek_promo_height); | 171 search_peek_promo_ripple_width, search_peek_promo_height); |
| 171 gfx::Rect peek_promo_ripple_border( | 172 gfx::Rect peek_promo_ripple_border( |
| 172 peek_promo_ripple_resource->Border(peek_promo_ripple_size)); | 173 peek_promo_ripple_resource->Border(peek_promo_ripple_size)); |
| 173 | 174 |
| 174 // Add padding so the ripple will occupy the whole width at 100%. | 175 // Add padding so the ripple will occupy the whole width at 100%. |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 251 search_term_resource->size.height() / 2; | 252 search_term_resource->size.height() / 2; |
| 252 search_term_->SetUIResourceId(search_term_resource->ui_resource->id()); | 253 search_term_->SetUIResourceId(search_term_resource->ui_resource->id()); |
| 253 search_term_->SetBounds(search_term_resource->size); | 254 search_term_->SetBounds(search_term_resource->size); |
| 254 search_term_->SetPosition(gfx::PointF(0.f, search_bar_padding_top)); | 255 search_term_->SetPosition(gfx::PointF(0.f, search_bar_padding_top)); |
| 255 search_term_->SetOpacity(search_term_opacity); | 256 search_term_->SetOpacity(search_term_opacity); |
| 256 } | 257 } |
| 257 | 258 |
| 258 // --------------------------------------------------------------------------- | 259 // --------------------------------------------------------------------------- |
| 259 // Search Provider Icon | 260 // Search Provider Icon |
| 260 // --------------------------------------------------------------------------- | 261 // --------------------------------------------------------------------------- |
| 261 // Positions the Search Provider Icon at the start of the Search Bar. | 262 if (search_provider_icon_sprite_visible) { |
| 262 float search_provider_icon_left; | 263 scoped_refptr<ui::CrushedSpriteResource> crushed_sprite_resource = |
| 263 if (is_rtl) { | 264 resource_manager_->GetCrushedSpriteResource( |
| 264 search_provider_icon_left = search_panel_width - | 265 search_provider_icon_sprite_bitmap_resource_id, |
| 265 search_provider_icon_resource->size.width() - search_bar_margin_side; | 266 search_provider_icon_sprite_metadata_resource_id); |
| 267 | |
| 268 if (search_provider_icon_sprite_->layer()->parent() != layer_) { | |
| 269 layer_->AddChild(search_provider_icon_sprite_->layer()); | |
| 270 } | |
| 271 | |
| 272 search_provider_icon_sprite_->SetCrushedSpriteResource( | |
| 273 crushed_sprite_resource); | |
| 274 search_provider_icon_sprite_->DrawSpriteFrame( | |
| 275 search_provider_icon_sprite_frame); | |
| 276 | |
| 277 // Positions the Search Provider Icon at the start of the Search Bar. | |
| 278 float icon_x; | |
| 279 if (is_rtl) { | |
| 280 icon_x = search_panel_width - search_provider_icon_sprite_size - | |
| 281 search_bar_margin_side; | |
| 282 } else { | |
| 283 icon_x = search_bar_margin_side; | |
| 284 } | |
| 285 | |
| 286 // Centers the Search Provider Icon vertically in the Search Bar. | |
| 287 float icon_y = search_bar_top + | |
| 288 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.
| |
| 289 search_provider_icon_sprite_size / 2; | |
| 290 search_provider_icon_sprite_->layer()->SetPosition( | |
| 291 gfx::PointF(icon_x, icon_y)); | |
| 292 | |
| 293 // Scales the layer to the correct size. | |
| 294 search_provider_icon_sprite_->layer()->SetBounds( | |
| 295 gfx::Size(search_provider_icon_sprite_size, | |
| 296 search_provider_icon_sprite_size)); | |
| 297 | |
| 266 } else { | 298 } else { |
| 267 search_provider_icon_left = search_bar_margin_side; | 299 if (search_provider_icon_sprite_->layer().get() && |
| 300 search_provider_icon_sprite_->layer()->parent()) { | |
| 301 search_provider_icon_sprite_->layer()->RemoveFromParent(); | |
| 302 } | |
| 268 } | 303 } |
| 269 | 304 |
| 270 // Centers the Search Provider Icon vertically in the Search Bar. | |
| 271 float search_provider_icon_top = search_bar_top + | |
| 272 search_bar_height / 2 - | |
| 273 search_provider_icon_resource->size.height() / 2; | |
| 274 | |
| 275 search_provider_icon_->SetUIResourceId( | |
| 276 search_provider_icon_resource->ui_resource->id()); | |
| 277 search_provider_icon_->SetBounds(search_provider_icon_resource->size); | |
| 278 search_provider_icon_->SetPosition( | |
| 279 gfx::PointF(search_provider_icon_left, search_provider_icon_top)); | |
| 280 | |
| 281 // --------------------------------------------------------------------------- | 305 // --------------------------------------------------------------------------- |
| 282 // Arrow Icon | 306 // Arrow Icon |
| 283 // --------------------------------------------------------------------------- | 307 // --------------------------------------------------------------------------- |
| 284 // Grabs the Search Arrow Icon resource. | 308 // Grabs the Search Arrow Icon resource. |
| 285 ui::ResourceManager::Resource* arrow_icon_resource = | 309 ui::ResourceManager::Resource* arrow_icon_resource = |
| 286 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 310 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 287 arrow_up_resource_id); | 311 arrow_up_resource_id); |
| 288 | 312 |
| 289 // Positions the icon at the end of the Search Bar. | 313 // Positions the icon at the end of the Search Bar. |
| 290 float arrow_icon_left; | 314 float arrow_icon_left; |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 512 panel_shadow_( | 536 panel_shadow_( |
| 513 cc::NinePatchLayer::Create(content::Compositor::LayerSettings())), | 537 cc::NinePatchLayer::Create(content::Compositor::LayerSettings())), |
| 514 search_bar_background_( | 538 search_bar_background_( |
| 515 cc::SolidColorLayer::Create(content::Compositor::LayerSettings())), | 539 cc::SolidColorLayer::Create(content::Compositor::LayerSettings())), |
| 516 search_context_( | 540 search_context_( |
| 517 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 541 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| 518 search_term_( | 542 search_term_( |
| 519 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 543 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| 520 search_bar_shadow_( | 544 search_bar_shadow_( |
| 521 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 545 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| 522 search_provider_icon_( | 546 search_provider_icon_sprite_( |
| 523 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 547 CrushedSpriteLayer::Create(resource_manager)), |
| 524 arrow_icon_( | 548 arrow_icon_( |
| 525 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 549 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| 526 close_icon_( | 550 close_icon_( |
| 527 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), | 551 cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| 528 content_view_container_( | 552 content_view_container_( |
| 529 cc::Layer::Create(content::Compositor::LayerSettings())), | 553 cc::Layer::Create(content::Compositor::LayerSettings())), |
| 530 search_bar_border_( | 554 search_bar_border_( |
| 531 cc::SolidColorLayer::Create(content::Compositor::LayerSettings())), | 555 cc::SolidColorLayer::Create(content::Compositor::LayerSettings())), |
| 532 progress_bar_( | 556 progress_bar_( |
| 533 cc::NinePatchLayer::Create(content::Compositor::LayerSettings())), | 557 cc::NinePatchLayer::Create(content::Compositor::LayerSettings())), |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 564 search_bar_background_->SetIsDrawable(true); | 588 search_bar_background_->SetIsDrawable(true); |
| 565 search_bar_background_->SetBackgroundColor(kSearchBarBackgroundColor); | 589 search_bar_background_->SetBackgroundColor(kSearchBarBackgroundColor); |
| 566 layer_->AddChild(search_bar_background_); | 590 layer_->AddChild(search_bar_background_); |
| 567 | 591 |
| 568 // Search Bar Text | 592 // Search Bar Text |
| 569 search_context_->SetIsDrawable(true); | 593 search_context_->SetIsDrawable(true); |
| 570 layer_->AddChild(search_context_); | 594 layer_->AddChild(search_context_); |
| 571 search_term_->SetIsDrawable(true); | 595 search_term_->SetIsDrawable(true); |
| 572 layer_->AddChild(search_term_); | 596 layer_->AddChild(search_term_); |
| 573 | 597 |
| 574 // Search Provider Icon | |
| 575 search_provider_icon_->SetIsDrawable(true); | |
| 576 layer_->AddChild(search_provider_icon_); | |
| 577 | |
| 578 // Arrow Icon | 598 // Arrow Icon |
| 579 arrow_icon_->SetIsDrawable(true); | 599 arrow_icon_->SetIsDrawable(true); |
| 580 layer_->AddChild(arrow_icon_); | 600 layer_->AddChild(arrow_icon_); |
| 581 | 601 |
| 582 // Close Icon | 602 // Close Icon |
| 583 close_icon_->SetIsDrawable(true); | 603 close_icon_->SetIsDrawable(true); |
| 584 layer_->AddChild(close_icon_); | 604 layer_->AddChild(close_icon_); |
| 585 | 605 |
| 586 // Search Opt Out Promo | 606 // Search Opt Out Promo |
| 587 search_promo_container_->SetIsDrawable(true); | 607 search_promo_container_->SetIsDrawable(true); |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 609 | 629 |
| 610 ContextualSearchLayer::~ContextualSearchLayer() { | 630 ContextualSearchLayer::~ContextualSearchLayer() { |
| 611 } | 631 } |
| 612 | 632 |
| 613 scoped_refptr<cc::Layer> ContextualSearchLayer::layer() { | 633 scoped_refptr<cc::Layer> ContextualSearchLayer::layer() { |
| 614 return layer_; | 634 return layer_; |
| 615 } | 635 } |
| 616 | 636 |
| 617 } // namespace android | 637 } // namespace android |
| 618 } // namespace chrome | 638 } // namespace chrome |
| OLD | NEW |