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

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

Issue 2293573002: Add tinted static UI resource cache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address vmpstr comments Created 4 years, 3 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/tab_layer.h" 5 #include "chrome/browser/android/compositor/layer/tab_layer.h"
6 6
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "cc/layers/layer.h" 9 #include "cc/layers/layer.h"
10 #include "cc/layers/layer_collections.h" 10 #include "cc/layers/layer_collections.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 float brightness, 127 float brightness,
128 float close_btn_width, 128 float close_btn_width,
129 float static_to_view_blend, 129 float static_to_view_blend,
130 float content_width, 130 float content_width,
131 float content_height, 131 float content_height,
132 float view_width, 132 float view_width,
133 float view_height, 133 float view_height,
134 bool show_toolbar, 134 bool show_toolbar,
135 int default_theme_color, 135 int default_theme_color,
136 int toolbar_background_color, 136 int toolbar_background_color,
137 int default_close_button_color,
137 int close_button_color, 138 int close_button_color,
138 bool anonymize_toolbar, 139 bool anonymize_toolbar,
139 int toolbar_textbox_resource_id, 140 int toolbar_textbox_resource_id,
140 int toolbar_textbox_background_color, 141 int toolbar_textbox_background_color,
141 float toolbar_textbox_alpha, 142 float toolbar_textbox_alpha,
142 float toolbar_alpha, 143 float toolbar_alpha,
143 float toolbar_y_offset, 144 float toolbar_y_offset,
144 float side_border_scale, 145 float side_border_scale,
145 bool attach_content, 146 bool attach_content,
146 bool inset_border) { 147 bool inset_border) {
147 if (alpha <= 0) { 148 if (alpha <= 0) {
148 layer_->SetHideLayerAndSubtree(true); 149 layer_->SetHideLayerAndSubtree(true);
149 return; 150 return;
150 } 151 }
151 152
152 layer_->SetHideLayerAndSubtree(false); 153 layer_->SetHideLayerAndSubtree(false);
153 154
154 // Grab required resources 155 // Grab required resources
155 ui::ResourceManager::Resource* border_resource = 156 ui::ResourceManager::Resource* border_resource =
156 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 157 resource_manager_->GetStaticResourceWithTint(border_resource_id,
157 border_resource_id); 158 toolbar_background_color,
159 default_theme_color);
158 ui::ResourceManager::Resource* border_inner_shadow_resource = 160 ui::ResourceManager::Resource* border_inner_shadow_resource =
159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 161 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
160 border_inner_shadow_resource_id); 162 border_inner_shadow_resource_id);
161 ui::ResourceManager::Resource* shadow_resource = 163 ui::ResourceManager::Resource* shadow_resource =
162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 164 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
163 shadow_resource_id); 165 shadow_resource_id);
164 ui::ResourceManager::Resource* contour_resource = 166 ui::ResourceManager::Resource* contour_resource =
165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 167 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
166 contour_resource_id); 168 contour_resource_id);
167 ui::ResourceManager::Resource* close_btn_resource = 169 ui::ResourceManager::Resource* close_btn_resource =
168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 170 resource_manager_->GetStaticResourceWithTint(close_button_resource_id,
169 close_button_resource_id); 171 close_button_color,
172 default_close_button_color);
170 ui::ResourceManager::Resource* back_logo_resource = nullptr; 173 ui::ResourceManager::Resource* back_logo_resource = nullptr;
171 174
172 DecorationTitle* title_layer = nullptr; 175 DecorationTitle* title_layer = nullptr;
173 176
174 //---------------------------------------------------------------------------- 177 //----------------------------------------------------------------------------
175 // Handle Border Scaling (Upscale/Downscale everything until final scaling) 178 // Handle Border Scaling (Upscale/Downscale everything until final scaling)
176 //---------------------------------------------------------------------------- 179 //----------------------------------------------------------------------------
177 width /= border_scale; 180 width /= border_scale;
178 height /= border_scale; 181 height /= border_scale;
179 shadow_x /= border_scale; 182 shadow_x /= border_scale;
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 contour_shadow_->SetBounds(contour_size); 474 contour_shadow_->SetBounds(contour_size);
472 contour_shadow_->SetOpacity(contour_alpha); 475 contour_shadow_->SetOpacity(contour_alpha);
473 } 476 }
474 477
475 front_border_->SetHideLayerAndSubtree(!border_visible); 478 front_border_->SetHideLayerAndSubtree(!border_visible);
476 if (border_visible) { 479 if (border_visible) {
477 front_border_->SetPosition(border_position); 480 front_border_->SetPosition(border_position);
478 front_border_->SetBounds(border_size); 481 front_border_->SetBounds(border_size);
479 front_border_->SetOpacity(border_alpha); 482 front_border_->SetOpacity(border_alpha);
480 front_border_->SetNearestNeighbor(toolbar_visible); 483 front_border_->SetNearestNeighbor(toolbar_visible);
481
482 if (toolbar_background_color != toolbar_background_color_) {
483 toolbar_background_color_ = toolbar_background_color;
484 front_border_->SetFilters(
485 *createSolidColorFilter(toolbar_background_color).get());
486 }
487 } 484 }
488 485
489 front_border_inner_shadow_->SetHideLayerAndSubtree( 486 front_border_inner_shadow_->SetHideLayerAndSubtree(
490 !border_inner_shadow_visible); 487 !border_inner_shadow_visible);
491 if (border_inner_shadow_visible) { 488 if (border_inner_shadow_visible) {
492 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); 489 front_border_inner_shadow_->SetPosition(border_inner_shadow_position);
493 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); 490 front_border_inner_shadow_->SetBounds(border_inner_shadow_size);
494 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); 491 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha);
495 } 492 }
496 493
(...skipping 18 matching lines...) Expand all
515 title_position.y() + 512 title_position.y() +
516 (title_size.height() - title_layer->size().height()) / 2.f); 513 (title_size.height() - title_layer->size().height()) / 2.f);
517 514
518 title_->SetPosition(vertically_centered_position); 515 title_->SetPosition(vertically_centered_position);
519 title_layer->setBounds(title_size); 516 title_layer->setBounds(title_size);
520 title_layer->setOpacity(border_alpha); 517 title_layer->setOpacity(border_alpha);
521 } 518 }
522 519
523 close_button_->SetHideLayerAndSubtree(!close_btn_visible); 520 close_button_->SetHideLayerAndSubtree(!close_btn_visible);
524 if (close_btn_visible) { 521 if (close_btn_visible) {
525
526 if (close_button_color != close_button_color_) {
527 close_button_color_ = close_button_color;
528 close_button_->SetFilters(
529 *createSolidColorFilter(close_button_color).get());
530 }
531
532 close_button_->SetPosition(close_button_position); 522 close_button_->SetPosition(close_button_position);
533 close_button_->SetBounds(close_button_size); 523 close_button_->SetBounds(close_button_size);
534 // Non-linear alpha looks better. 524 // Non-linear alpha looks better.
535 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); 525 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha);
536 } 526 }
537 527
538 if (content_visible && attach_content) { 528 if (content_visible && attach_content) {
539 { 529 {
540 // content_ and back_logo_ Transforms 530 // content_ and back_logo_ Transforms
541 gfx::Transform transform; 531 gfx::Transform transform;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 // than 1. 611 // than 1.
622 if (brightness != brightness_) { 612 if (brightness != brightness_) {
623 brightness_ = brightness; 613 brightness_ = brightness;
624 cc::FilterOperations filters; 614 cc::FilterOperations filters;
625 if (brightness_ < 1.f) 615 if (brightness_ < 1.f)
626 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); 616 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_));
627 layer_->SetFilters(filters); 617 layer_->SetFilters(filters);
628 } 618 }
629 } 619 }
630 620
631 std::unique_ptr<cc::FilterOperations> TabLayer::createSolidColorFilter(
632 int color) {
633 std::unique_ptr<cc::FilterOperations> filters =
634 base::WrapUnique(new cc::FilterOperations());
635 SkScalar colorMatrix[] = {
636 SkColorGetR(color) / 255.0f, 0, 0, 0, 0,
637 0, SkColorGetG(color) / 255.0f, 0, 0, 0,
638 0, 0, SkColorGetB(color) / 255.0f, 0, 0,
639 0, 0, 0, 1, 0,
640 };
641 filters->Append(cc::FilterOperation::CreateColorMatrixFilter(colorMatrix));
642 return filters;
643 }
644
645 scoped_refptr<cc::Layer> TabLayer::layer() { 621 scoped_refptr<cc::Layer> TabLayer::layer() {
646 return layer_; 622 return layer_;
647 } 623 }
648 624
649 TabLayer::TabLayer(bool incognito, 625 TabLayer::TabLayer(bool incognito,
650 ui::ResourceManager* resource_manager, 626 ui::ResourceManager* resource_manager,
651 LayerTitleCache* layer_title_cache, 627 LayerTitleCache* layer_title_cache,
652 TabContentManager* tab_content_manager) 628 TabContentManager* tab_content_manager)
653 : incognito_(incognito), 629 : incognito_(incognito),
654 toolbar_background_color_(0),
655 close_button_color_(0),
656 resource_manager_(resource_manager), 630 resource_manager_(resource_manager),
657 layer_title_cache_(layer_title_cache), 631 layer_title_cache_(layer_title_cache),
658 layer_(cc::Layer::Create()), 632 layer_(cc::Layer::Create()),
659 toolbar_layer_(ToolbarLayer::Create(resource_manager)), 633 toolbar_layer_(ToolbarLayer::Create(resource_manager)),
660 title_(cc::Layer::Create()), 634 title_(cc::Layer::Create()),
661 content_(ContentLayer::Create(tab_content_manager)), 635 content_(ContentLayer::Create(tab_content_manager)),
662 side_padding_(cc::SolidColorLayer::Create()), 636 side_padding_(cc::SolidColorLayer::Create()),
663 bottom_padding_(cc::SolidColorLayer::Create()), 637 bottom_padding_(cc::SolidColorLayer::Create()),
664 close_button_(cc::UIResourceLayer::Create()), 638 close_button_(cc::UIResourceLayer::Create()),
665 front_border_(cc::NinePatchLayer::Create()), 639 front_border_(cc::NinePatchLayer::Create()),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 title_->AddChild(layer); 681 title_->AddChild(layer);
708 } 682 }
709 } 683 }
710 684
711 if (title) 685 if (title)
712 title->SetUIResourceIds(); 686 title->SetUIResourceIds();
713 } 687 }
714 688
715 } // namespace android 689 } // namespace android
716 } // namespace chrome 690 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698