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

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: clean up 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/base_switches.h"
8 #include "base/command_line.h"
9 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
10 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
11 #include "cc/layers/layer.h" 9 #include "cc/layers/layer.h"
12 #include "cc/layers/layer_collections.h" 10 #include "cc/layers/layer_collections.h"
13 #include "cc/layers/nine_patch_layer.h" 11 #include "cc/layers/nine_patch_layer.h"
14 #include "cc/layers/solid_color_layer.h" 12 #include "cc/layers/solid_color_layer.h"
15 #include "cc/layers/ui_resource_layer.h" 13 #include "cc/layers/ui_resource_layer.h"
16 #include "cc/resources/scoped_ui_resource.h" 14 #include "cc/resources/scoped_ui_resource.h"
17 #include "chrome/browser/android/compositor/decoration_title.h" 15 #include "chrome/browser/android/compositor/decoration_title.h"
18 #include "chrome/browser/android/compositor/layer/content_layer.h" 16 #include "chrome/browser/android/compositor/layer/content_layer.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 float brightness, 128 float brightness,
131 float close_btn_width, 129 float close_btn_width,
132 float static_to_view_blend, 130 float static_to_view_blend,
133 float content_width, 131 float content_width,
134 float content_height, 132 float content_height,
135 float view_width, 133 float view_width,
136 float view_height, 134 float view_height,
137 bool show_toolbar, 135 bool show_toolbar,
138 int default_theme_color, 136 int default_theme_color,
139 int toolbar_background_color, 137 int toolbar_background_color,
138 int default_close_button_color,
140 int close_button_color, 139 int close_button_color,
141 bool anonymize_toolbar, 140 bool anonymize_toolbar,
142 int toolbar_textbox_resource_id, 141 int toolbar_textbox_resource_id,
143 int toolbar_textbox_background_color, 142 int toolbar_textbox_background_color,
144 float toolbar_textbox_alpha, 143 float toolbar_textbox_alpha,
145 float toolbar_alpha, 144 float toolbar_alpha,
146 float toolbar_y_offset, 145 float toolbar_y_offset,
147 float side_border_scale, 146 float side_border_scale,
148 bool attach_content, 147 bool attach_content,
149 bool inset_border) { 148 bool inset_border) {
150 if (alpha <= 0) { 149 if (alpha <= 0) {
151 layer_->SetHideLayerAndSubtree(true); 150 layer_->SetHideLayerAndSubtree(true);
152 return; 151 return;
153 } 152 }
154 153
155 layer_->SetHideLayerAndSubtree(false); 154 layer_->SetHideLayerAndSubtree(false);
156 155
157 // Grab required resources 156 // Grab required resources
158 ui::ResourceManager::Resource* border_resource = 157 ui::ResourceManager::Resource* border_resource =
159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 158 resource_manager_->GetStaticResourceWithTint(border_resource_id,
160 border_resource_id); 159 toolbar_background_color,
160 default_theme_color);
161 ui::ResourceManager::Resource* border_inner_shadow_resource = 161 ui::ResourceManager::Resource* border_inner_shadow_resource =
162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
163 border_inner_shadow_resource_id); 163 border_inner_shadow_resource_id);
164 ui::ResourceManager::Resource* shadow_resource = 164 ui::ResourceManager::Resource* shadow_resource =
165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
166 shadow_resource_id); 166 shadow_resource_id);
167 ui::ResourceManager::Resource* contour_resource = 167 ui::ResourceManager::Resource* contour_resource =
168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
169 contour_resource_id); 169 contour_resource_id);
170 ui::ResourceManager::Resource* close_btn_resource = 170 ui::ResourceManager::Resource* close_btn_resource =
171 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 171 resource_manager_->GetStaticResourceWithTint(close_button_resource_id,
172 close_button_resource_id); 172 close_button_color,
173 default_close_button_color);
173 ui::ResourceManager::Resource* back_logo_resource = nullptr; 174 ui::ResourceManager::Resource* back_logo_resource = nullptr;
174 175
175 DecorationTitle* title_layer = nullptr; 176 DecorationTitle* title_layer = nullptr;
176 177
177 //---------------------------------------------------------------------------- 178 //----------------------------------------------------------------------------
178 // Handle Border Scaling (Upscale/Downscale everything until final scaling) 179 // Handle Border Scaling (Upscale/Downscale everything until final scaling)
179 //---------------------------------------------------------------------------- 180 //----------------------------------------------------------------------------
180 width /= border_scale; 181 width /= border_scale;
181 height /= border_scale; 182 height /= border_scale;
182 shadow_x /= border_scale; 183 shadow_x /= border_scale;
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 contour_shadow_->SetBounds(contour_size); 475 contour_shadow_->SetBounds(contour_size);
475 contour_shadow_->SetOpacity(contour_alpha); 476 contour_shadow_->SetOpacity(contour_alpha);
476 } 477 }
477 478
478 front_border_->SetHideLayerAndSubtree(!border_visible); 479 front_border_->SetHideLayerAndSubtree(!border_visible);
479 if (border_visible) { 480 if (border_visible) {
480 front_border_->SetPosition(border_position); 481 front_border_->SetPosition(border_position);
481 front_border_->SetBounds(border_size); 482 front_border_->SetBounds(border_size);
482 front_border_->SetOpacity(border_alpha); 483 front_border_->SetOpacity(border_alpha);
483 front_border_->SetNearestNeighbor(toolbar_visible); 484 front_border_->SetNearestNeighbor(toolbar_visible);
484
485 int tab_switcher_color = default_theme_color;
486
487 // Colorize the tab decoration if enabled.
488 if (tab_switcher_themes_enabled_) {
489 tab_switcher_color = toolbar_background_color;
490 }
491
492 if (toolbar_background_color != toolbar_background_color_) {
493 toolbar_background_color_ = toolbar_background_color;
494 front_border_->SetFilters(
495 *createSolidColorFilter(tab_switcher_color).get());
496 }
497 } 485 }
498 486
499 front_border_inner_shadow_->SetHideLayerAndSubtree( 487 front_border_inner_shadow_->SetHideLayerAndSubtree(
500 !border_inner_shadow_visible); 488 !border_inner_shadow_visible);
501 if (border_inner_shadow_visible) { 489 if (border_inner_shadow_visible) {
502 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); 490 front_border_inner_shadow_->SetPosition(border_inner_shadow_position);
503 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); 491 front_border_inner_shadow_->SetBounds(border_inner_shadow_size);
504 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); 492 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha);
505 } 493 }
506 494
(...skipping 18 matching lines...) Expand all
525 title_position.y() + 513 title_position.y() +
526 (title_size.height() - title_layer->size().height()) / 2.f); 514 (title_size.height() - title_layer->size().height()) / 2.f);
527 515
528 title_->SetPosition(vertically_centered_position); 516 title_->SetPosition(vertically_centered_position);
529 title_layer->setBounds(title_size); 517 title_layer->setBounds(title_size);
530 title_layer->setOpacity(border_alpha); 518 title_layer->setOpacity(border_alpha);
531 } 519 }
532 520
533 close_button_->SetHideLayerAndSubtree(!close_btn_visible); 521 close_button_->SetHideLayerAndSubtree(!close_btn_visible);
534 if (close_btn_visible) { 522 if (close_btn_visible) {
535
536 if (close_button_color != close_button_color_) {
537 close_button_color_ = close_button_color;
538 close_button_->SetFilters(
539 *createSolidColorFilter(close_button_color).get());
540 }
541
542 close_button_->SetPosition(close_button_position); 523 close_button_->SetPosition(close_button_position);
543 close_button_->SetBounds(close_button_size); 524 close_button_->SetBounds(close_button_size);
544 // Non-linear alpha looks better. 525 // Non-linear alpha looks better.
545 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); 526 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha);
546 } 527 }
547 528
548 if (content_visible && attach_content) { 529 if (content_visible && attach_content) {
549 { 530 {
550 // content_ and back_logo_ Transforms 531 // content_ and back_logo_ Transforms
551 gfx::Transform transform; 532 gfx::Transform transform;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
631 // than 1. 612 // than 1.
632 if (brightness != brightness_) { 613 if (brightness != brightness_) {
633 brightness_ = brightness; 614 brightness_ = brightness;
634 cc::FilterOperations filters; 615 cc::FilterOperations filters;
635 if (brightness_ < 1.f) 616 if (brightness_ < 1.f)
636 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); 617 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_));
637 layer_->SetFilters(filters); 618 layer_->SetFilters(filters);
638 } 619 }
639 } 620 }
640 621
641 std::unique_ptr<cc::FilterOperations> TabLayer::createSolidColorFilter(
642 int color) {
643 std::unique_ptr<cc::FilterOperations> filters =
644 base::WrapUnique(new cc::FilterOperations());
645 SkScalar colorMatrix[] = {
646 SkColorGetR(color) / 255.0f, 0, 0, 0, 0,
647 0, SkColorGetG(color) / 255.0f, 0, 0, 0,
648 0, 0, SkColorGetB(color) / 255.0f, 0, 0,
649 0, 0, 0, 1, 0,
650 };
651 filters->Append(cc::FilterOperation::CreateColorMatrixFilter(colorMatrix));
652 return filters;
653 }
654
655 scoped_refptr<cc::Layer> TabLayer::layer() { 622 scoped_refptr<cc::Layer> TabLayer::layer() {
656 return layer_; 623 return layer_;
657 } 624 }
658 625
659 TabLayer::TabLayer(bool incognito, 626 TabLayer::TabLayer(bool incognito,
660 ui::ResourceManager* resource_manager, 627 ui::ResourceManager* resource_manager,
661 LayerTitleCache* layer_title_cache, 628 LayerTitleCache* layer_title_cache,
662 TabContentManager* tab_content_manager) 629 TabContentManager* tab_content_manager)
663 : incognito_(incognito), 630 : incognito_(incognito),
664 toolbar_background_color_(0),
665 close_button_color_(0),
666 tab_switcher_themes_enabled_(false),
667 resource_manager_(resource_manager), 631 resource_manager_(resource_manager),
668 layer_title_cache_(layer_title_cache), 632 layer_title_cache_(layer_title_cache),
669 layer_(cc::Layer::Create()), 633 layer_(cc::Layer::Create()),
670 toolbar_layer_(ToolbarLayer::Create(resource_manager)), 634 toolbar_layer_(ToolbarLayer::Create(resource_manager)),
671 title_(cc::Layer::Create()), 635 title_(cc::Layer::Create()),
672 content_(ContentLayer::Create(tab_content_manager)), 636 content_(ContentLayer::Create(tab_content_manager)),
673 side_padding_(cc::SolidColorLayer::Create()), 637 side_padding_(cc::SolidColorLayer::Create()),
674 bottom_padding_(cc::SolidColorLayer::Create()), 638 bottom_padding_(cc::SolidColorLayer::Create()),
675 close_button_(cc::UIResourceLayer::Create()), 639 close_button_(cc::UIResourceLayer::Create()),
676 front_border_(cc::NinePatchLayer::Create()), 640 front_border_(cc::NinePatchLayer::Create()),
(...skipping 17 matching lines...) Expand all
694 contour_shadow_->SetIsDrawable(true); 658 contour_shadow_->SetIsDrawable(true);
695 side_padding_->SetIsDrawable(true); 659 side_padding_->SetIsDrawable(true);
696 bottom_padding_->SetIsDrawable(true); 660 bottom_padding_->SetIsDrawable(true);
697 front_border_->SetIsDrawable(true); 661 front_border_->SetIsDrawable(true);
698 front_border_inner_shadow_->SetIsDrawable(true); 662 front_border_inner_shadow_->SetIsDrawable(true);
699 shadow_->SetIsDrawable(true); 663 shadow_->SetIsDrawable(true);
700 close_button_->SetIsDrawable(true); 664 close_button_->SetIsDrawable(true);
701 back_logo_->SetIsDrawable(true); 665 back_logo_->SetIsDrawable(true);
702 666
703 front_border_->SetFillCenter(false); 667 front_border_->SetFillCenter(false);
704
705 tab_switcher_themes_enabled_ =
706 base::CommandLine::ForCurrentProcess()->HasSwitch(
707 switches::kEnableTabSwitcherThemeColors);
708 } 668 }
709 669
710 TabLayer::~TabLayer() { 670 TabLayer::~TabLayer() {
711 } 671 }
712 672
713 void TabLayer::SetTitle(DecorationTitle* title) { 673 void TabLayer::SetTitle(DecorationTitle* title) {
714 scoped_refptr<cc::Layer> layer = title ? title->layer() : nullptr; 674 scoped_refptr<cc::Layer> layer = title ? title->layer() : nullptr;
715 675
716 if (!layer.get()) { 676 if (!layer.get()) {
717 title_->RemoveAllChildren(); 677 title_->RemoveAllChildren();
718 } else { 678 } else {
719 const cc::LayerList& children = title_->children(); 679 const cc::LayerList& children = title_->children();
720 if (children.size() == 0 || children[0]->id() != layer->id()) { 680 if (children.size() == 0 || children[0]->id() != layer->id()) {
721 title_->RemoveAllChildren(); 681 title_->RemoveAllChildren();
722 title_->AddChild(layer); 682 title_->AddChild(layer);
723 } 683 }
724 } 684 }
725 685
726 if (title) 686 if (title)
727 title->SetUIResourceIds(); 687 title->SetUIResourceIds();
728 } 688 }
729 689
730 } // namespace android 690 } // namespace android
731 } // namespace chrome 691 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698