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

Side by Side Diff: chrome/browser/android/compositor/layer/contextual_search_layer.cc

Issue 2801153003: [Contextual Search] Add a handle to the bar when Chrome Home is enabled (Closed)
Patch Set: Revert changes to OverlayPanelBase#initializeUiState() Created 3 years, 8 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
OLDNEW
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"
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 float progress_bar_height, 90 float progress_bar_height,
91 float progress_bar_opacity, 91 float progress_bar_opacity,
92 int progress_bar_completion, 92 int progress_bar_completion,
93 float divider_line_visibility_percentage, 93 float divider_line_visibility_percentage,
94 float divider_line_width, 94 float divider_line_width,
95 float divider_line_height, 95 float divider_line_height,
96 int divider_line_color, 96 int divider_line_color,
97 float divider_line_x_offset, 97 float divider_line_x_offset,
98 bool touch_highlight_visible, 98 bool touch_highlight_visible,
99 float touch_highlight_x_offset, 99 float touch_highlight_x_offset,
100 float touch_highlight_width) { 100 float touch_highlight_width,
101 int bar_handle_resource_id,
102 float bar_handle_offset_y,
103 float bar_padding_bottom) {
101 // Round values to avoid pixel gap between layers. 104 // Round values to avoid pixel gap between layers.
102 search_bar_height = floor(search_bar_height); 105 search_bar_height = floor(search_bar_height);
103 106
104 float search_bar_top = search_peek_promo_height; 107 float search_bar_top = search_peek_promo_height;
105 float search_bar_bottom = search_bar_top + search_bar_height; 108 float search_bar_bottom = search_bar_top + search_bar_height;
106 bool should_render_progress_bar = 109 bool should_render_progress_bar =
107 progress_bar_visible && progress_bar_opacity > 0.f; 110 progress_bar_visible && progress_bar_opacity > 0.f;
108 111
109 OverlayPanelLayer::SetResourceIds( 112 OverlayPanelLayer::SetResourceIds(
110 search_term_resource_id, panel_shadow_resource_id, 113 search_term_resource_id, panel_shadow_resource_id,
111 search_bar_shadow_resource_id, search_provider_icon_resource_id, 114 search_bar_shadow_resource_id, search_provider_icon_resource_id,
112 close_icon_resource_id); 115 close_icon_resource_id, bar_handle_resource_id);
113 116
114 float content_view_top = search_bar_bottom + search_promo_height; 117 float content_view_top = search_bar_bottom + search_promo_height;
115 float should_render_bar_border = search_bar_border_visible 118 float should_render_bar_border = search_bar_border_visible
116 && !should_render_progress_bar; 119 && !should_render_progress_bar;
117 120
118 // ----------------------------------------------------------------- 121 // -----------------------------------------------------------------
119 // Overlay Panel 122 // Overlay Panel
120 // ----------------------------------------------------------------- 123 // -----------------------------------------------------------------
121 OverlayPanelLayer::SetProperties( 124 OverlayPanelLayer::SetProperties(
122 dp_to_px, 125 dp_to_px, content_layer, content_view_top, search_panel_x, search_panel_y,
123 content_layer, 126 search_panel_width, search_panel_height, search_bar_margin_side,
124 content_view_top, 127 search_bar_height, search_bar_top, search_term_opacity,
125 search_panel_x, 128 should_render_bar_border, search_bar_border_height,
126 search_panel_y, 129 search_bar_shadow_visible, search_bar_shadow_opacity, close_icon_opacity,
127 search_panel_width, 130 bar_handle_offset_y, bar_padding_bottom);
128 search_panel_height,
129 search_bar_margin_side,
130 search_bar_height,
131 search_bar_top,
132 search_term_opacity,
133 should_render_bar_border,
134 search_bar_border_height,
135 search_bar_shadow_visible,
136 search_bar_shadow_opacity,
137 close_icon_opacity);
138 131
139 bool is_rtl = l10n_util::IsLayoutRtl(); 132 bool is_rtl = l10n_util::IsLayoutRtl();
140 133
141 // --------------------------------------------------------------------------- 134 // ---------------------------------------------------------------------------
142 // Peek Promo 135 // Peek Promo
143 // --------------------------------------------------------------------------- 136 // ---------------------------------------------------------------------------
144 if (search_peek_promo_visible) { 137 if (search_peek_promo_visible) {
145 // Grabs the Search Opt Out Promo resource. 138 // Grabs the Search Opt Out Promo resource.
146 ui::Resource* peek_promo_text_resource = resource_manager_->GetResource( 139 ui::Resource* peek_promo_text_resource = resource_manager_->GetResource(
147 ui::ANDROID_RESOURCE_TYPE_DYNAMIC, peek_promo_text_resource_id); 140 ui::ANDROID_RESOURCE_TYPE_DYNAMIC, peek_promo_text_resource_id);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 } 219 }
227 } else { 220 } else {
228 // Peek Promo Container 221 // Peek Promo Container
229 if (peek_promo_container_.get() && peek_promo_container_->parent()) 222 if (peek_promo_container_.get() && peek_promo_container_->parent())
230 peek_promo_container_->RemoveFromParent(); 223 peek_promo_container_->RemoveFromParent();
231 } 224 }
232 225
233 // --------------------------------------------------------------------------- 226 // ---------------------------------------------------------------------------
234 // Search Term, Context and Search Caption 227 // Search Term, Context and Search Caption
235 // --------------------------------------------------------------------------- 228 // ---------------------------------------------------------------------------
236 SetupTextLayer( 229 SetupTextLayer(bar_content_height_, search_text_layer_min_height,
237 search_bar_top, 230 search_caption_resource_id, search_caption_visible,
238 search_bar_height, 231 search_caption_animation_percentage, search_term_opacity,
239 search_text_layer_min_height, 232 search_context_resource_id, search_context_opacity,
240 search_caption_resource_id, 233 search_term_caption_spacing);
241 search_caption_visible,
242 search_caption_animation_percentage,
243 search_term_opacity,
244 search_context_resource_id,
245 search_context_opacity,
246 search_term_caption_spacing);
247 234
248 // --------------------------------------------------------------------------- 235 // ---------------------------------------------------------------------------
249 // Arrow Icon 236 // Arrow Icon
250 // --------------------------------------------------------------------------- 237 // ---------------------------------------------------------------------------
251 // Grabs the arrow icon resource. 238 // Grabs the arrow icon resource.
252 ui::Resource* arrow_icon_resource = resource_manager_->GetResource( 239 ui::Resource* arrow_icon_resource = resource_manager_->GetResource(
253 ui::ANDROID_RESOURCE_TYPE_STATIC, arrow_up_resource_id); 240 ui::ANDROID_RESOURCE_TYPE_STATIC, arrow_up_resource_id);
254 241
255 // Positions the icon at the end of the bar. 242 // Positions the icon at the end of the bar.
256 float arrow_icon_left; 243 float arrow_icon_left;
257 if (is_rtl) { 244 if (is_rtl) {
258 arrow_icon_left = search_bar_margin_side; 245 arrow_icon_left = search_bar_margin_side;
259 } else { 246 } else {
260 arrow_icon_left = search_panel_width - arrow_icon_resource->size().width() - 247 arrow_icon_left = search_panel_width - arrow_icon_resource->size().width() -
261 search_bar_margin_side; 248 search_bar_margin_side;
262 } 249 }
263 250
264 // Centers the Arrow Icon vertically in the bar. 251 // Centers the Arrow Icon vertically in the bar.
265 float arrow_icon_top = search_bar_top + search_bar_height / 2 - 252 float arrow_icon_top =
266 arrow_icon_resource->size().height() / 2; 253 (bar_content_height_ - arrow_icon_resource->size().height()) / 2;
267 254
268 arrow_icon_->SetUIResourceId(arrow_icon_resource->ui_resource()->id()); 255 arrow_icon_->SetUIResourceId(arrow_icon_resource->ui_resource()->id());
269 arrow_icon_->SetBounds(arrow_icon_resource->size()); 256 arrow_icon_->SetBounds(arrow_icon_resource->size());
270 arrow_icon_->SetPosition( 257 arrow_icon_->SetPosition(
271 gfx::PointF(arrow_icon_left, arrow_icon_top)); 258 gfx::PointF(arrow_icon_left, arrow_icon_top));
272 arrow_icon_->SetOpacity(arrow_icon_opacity); 259 arrow_icon_->SetOpacity(arrow_icon_opacity);
273 260
274 gfx::Transform transform; 261 gfx::Transform transform;
275 if (arrow_icon_rotation != 0.f) { 262 if (arrow_icon_rotation != 0.f) {
276 // Apply rotation about the center of the icon. 263 // Apply rotation about the center of the icon.
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 364
378 if (progress_bar_.get() && progress_bar_->parent()) 365 if (progress_bar_.get() && progress_bar_->parent())
379 progress_bar_->RemoveFromParent(); 366 progress_bar_->RemoveFromParent();
380 } 367 }
381 368
382 // --------------------------------------------------------------------------- 369 // ---------------------------------------------------------------------------
383 // Divider Line 370 // Divider Line
384 // --------------------------------------------------------------------------- 371 // ---------------------------------------------------------------------------
385 if (divider_line_visibility_percentage > 0.f) { 372 if (divider_line_visibility_percentage > 0.f) {
386 if (divider_line_->parent() != layer_) 373 if (divider_line_->parent() != layer_)
387 layer_->AddChild(divider_line_); 374 bar_content_layer_->AddChild(divider_line_);
388 375
389 // The divider line animates in from the bottom. 376 // The divider line animates in from the bottom.
390 float divider_line_y_offset = 377 float divider_line_y_offset =
391 ((search_bar_height - divider_line_height) / 2) + 378 ((bar_content_height_ - divider_line_height) / 2) +
392 (divider_line_height * (1.f - divider_line_visibility_percentage)); 379 (divider_line_height * (1.f - divider_line_visibility_percentage));
393 divider_line_->SetPosition(gfx::PointF(divider_line_x_offset, 380 divider_line_->SetPosition(gfx::PointF(divider_line_x_offset,
394 divider_line_y_offset)); 381 divider_line_y_offset));
395 382
396 // The divider line should not draw below its final resting place. 383 // The divider line should not draw below its final resting place.
397 // Set bounds to restrict the vertical draw position. 384 // Set bounds to restrict the vertical draw position.
398 divider_line_->SetBounds( 385 divider_line_->SetBounds(
399 gfx::Size(divider_line_width, 386 gfx::Size(divider_line_width,
400 divider_line_height * divider_line_visibility_percentage)); 387 divider_line_height * divider_line_visibility_percentage));
401 divider_line_->SetBackgroundColor(divider_line_color); 388 divider_line_->SetBackgroundColor(divider_line_color);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
512 // If the custom image has a height less than |bar_image_size_|, it will 499 // If the custom image has a height less than |bar_image_size_|, it will
513 // have a top margin that needs to be accounted for while running the 500 // have a top margin that needs to be accounted for while running the
514 // animation. The final |custom_image_y_offset| should be equal to 501 // animation. The final |custom_image_y_offset| should be equal to
515 // |tpp_margin|. 502 // |tpp_margin|.
516 float custom_image_y_offset = 503 float custom_image_y_offset =
517 (bar_image_size_ * (1.f - visibility_percentage)) + top_margin; 504 (bar_image_size_ * (1.f - visibility_percentage)) + top_margin;
518 custom_image_layer->SetPosition( 505 custom_image_layer->SetPosition(
519 gfx::PointF(side_margin, custom_image_y_offset)); 506 gfx::PointF(side_margin, custom_image_y_offset));
520 } 507 }
521 508
522 void ContextualSearchLayer::SetupTextLayer(float bar_top, 509 void ContextualSearchLayer::SetupTextLayer(float bar_height,
523 float bar_height,
524 float search_text_layer_min_height, 510 float search_text_layer_min_height,
525 int caption_resource_id, 511 int caption_resource_id,
526 bool caption_visible, 512 bool caption_visible,
527 float animation_percentage, 513 float animation_percentage,
528 float search_term_opacity, 514 float search_term_opacity,
529 int context_resource_id, 515 int context_resource_id,
530 float context_opacity, 516 float context_opacity,
531 float term_caption_spacing) { 517 float term_caption_spacing) {
532 // --------------------------------------------------------------------------- 518 // ---------------------------------------------------------------------------
533 // Setup the Drawing Hierarchy 519 // Setup the Drawing Hierarchy
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 // The search_caption_ may not have had it's resource set by this point, if so 570 // The search_caption_ may not have had it's resource set by this point, if so
585 // the bounds will be zero and everything will still work. 571 // the bounds will be zero and everything will still work.
586 float term_height = main_text->bounds().height(); 572 float term_height = main_text->bounds().height();
587 float caption_height = search_caption_->bounds().height(); 573 float caption_height = search_caption_->bounds().height();
588 574
589 float layer_height = std::max(search_text_layer_min_height, 575 float layer_height = std::max(search_text_layer_min_height,
590 term_height + caption_height + term_caption_spacing); 576 term_height + caption_height + term_caption_spacing);
591 float layer_width = 577 float layer_width =
592 std::max(main_text->bounds().width(), search_caption_->bounds().width()); 578 std::max(main_text->bounds().width(), search_caption_->bounds().width());
593 579
594 float layer_top = bar_top + (bar_height - layer_height) / 2; 580 float layer_top = (bar_height - layer_height) / 2;
595 text_layer_->SetBounds(gfx::Size(layer_width, layer_height)); 581 text_layer_->SetBounds(gfx::Size(layer_width, layer_height));
596 text_layer_->SetPosition(gfx::PointF(0.f, layer_top)); 582 text_layer_->SetPosition(gfx::PointF(0.f, layer_top));
597 text_layer_->SetMasksToBounds(true); 583 text_layer_->SetMasksToBounds(true);
598 584
599 // --------------------------------------------------------------------------- 585 // ---------------------------------------------------------------------------
600 // Layout Text Layer 586 // Layout Text Layer
601 // --------------------------------------------------------------------------- 587 // ---------------------------------------------------------------------------
602 // ---Top of Search Bar--- <- bar_top 588 // ---Top of Search Bar--- <- bar_top
603 // 589 //
604 // ---Top of Text Layer--- <- layer_top 590 // ---Top of Text Layer--- <- layer_top
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 peek_promo_container_->AddChild(peek_promo_text_); 746 peek_promo_container_->AddChild(peek_promo_text_);
761 747
762 // Search Bar Text 748 // Search Bar Text
763 search_context_->SetIsDrawable(true); 749 search_context_->SetIsDrawable(true);
764 750
765 // Search Bar Caption 751 // Search Bar Caption
766 search_caption_->SetIsDrawable(true); 752 search_caption_->SetIsDrawable(true);
767 753
768 // Arrow Icon 754 // Arrow Icon
769 arrow_icon_->SetIsDrawable(true); 755 arrow_icon_->SetIsDrawable(true);
770 layer_->AddChild(arrow_icon_); 756 bar_content_layer_->AddChild(arrow_icon_);
771 757
772 // Search Opt Out Promo 758 // Search Opt Out Promo
773 search_promo_container_->SetIsDrawable(true); 759 search_promo_container_->SetIsDrawable(true);
774 search_promo_container_->SetBackgroundColor(kSearchBackgroundColor); 760 search_promo_container_->SetBackgroundColor(kSearchBackgroundColor);
775 search_promo_->SetIsDrawable(true); 761 search_promo_->SetIsDrawable(true);
776 762
777 // Progress Bar Background 763 // Progress Bar Background
778 progress_bar_background_->SetIsDrawable(true); 764 progress_bar_background_->SetIsDrawable(true);
779 progress_bar_background_->SetFillCenter(true); 765 progress_bar_background_->SetFillCenter(true);
780 766
781 // Progress Bar 767 // Progress Bar
782 progress_bar_->SetIsDrawable(true); 768 progress_bar_->SetIsDrawable(true);
783 progress_bar_->SetFillCenter(true); 769 progress_bar_->SetFillCenter(true);
784 770
785 // Icon - holds thumbnail, search provider icon and/or quick action icon 771 // Icon - holds thumbnail, search provider icon and/or quick action icon
786 icon_layer_->SetIsDrawable(true); 772 icon_layer_->SetIsDrawable(true);
787 layer_->AddChild(icon_layer_); 773 bar_content_layer_->AddChild(icon_layer_);
788 774
789 // Search provider icon 775 // Search provider icon
790 search_provider_icon_layer_->SetIsDrawable(true); 776 search_provider_icon_layer_->SetIsDrawable(true);
791 777
792 // Thumbnail 778 // Thumbnail
793 thumbnail_layer_->SetIsDrawable(true); 779 thumbnail_layer_->SetIsDrawable(true);
794 780
795 // Quick action icon 781 // Quick action icon
796 quick_action_icon_layer_->SetIsDrawable(true); 782 quick_action_icon_layer_->SetIsDrawable(true);
797 783
798 // Divider line 784 // Divider line
799 divider_line_->SetIsDrawable(true); 785 divider_line_->SetIsDrawable(true);
800 786
801 // Content layer 787 // Content layer
802 text_layer_->SetIsDrawable(true); 788 text_layer_->SetIsDrawable(true);
803 // NOTE(mdjones): This can be called multiple times to add other text layers. 789 // NOTE(mdjones): This can be called multiple times to add other text layers.
804 AddBarTextLayer(text_layer_); 790 AddBarTextLayer(text_layer_);
805 text_layer_->AddChild(search_context_); 791 text_layer_->AddChild(search_context_);
806 792
807 // Touch Highlight Layer 793 // Touch Highlight Layer
808 touch_highlight_layer_->SetIsDrawable(true); 794 touch_highlight_layer_->SetIsDrawable(true);
809 touch_highlight_layer_->SetBackgroundColor(kTouchHighlightColor); 795 touch_highlight_layer_->SetBackgroundColor(kTouchHighlightColor);
810 } 796 }
811 797
812 ContextualSearchLayer::~ContextualSearchLayer() { 798 ContextualSearchLayer::~ContextualSearchLayer() {
813 } 799 }
814 800
815 } // namespace android 801 } // namespace android
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698