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

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: fix text color when cache is full 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,
148 bool title_layer_needs_update) {
147 if (alpha <= 0) { 149 if (alpha <= 0) {
148 layer_->SetHideLayerAndSubtree(true); 150 layer_->SetHideLayerAndSubtree(true);
149 return; 151 return;
150 } 152 }
151 153
152 layer_->SetHideLayerAndSubtree(false); 154 layer_->SetHideLayerAndSubtree(false);
153 155
154 // Grab required resources 156 // Grab required resources
155 ui::ResourceManager::Resource* border_resource = 157 ui::ResourceManager::Resource* border_resource =
156 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 158 resource_manager_->GetStaticResourceWithTint(border_resource_id,
157 border_resource_id); 159 toolbar_background_color,
160 default_theme_color);
158 ui::ResourceManager::Resource* border_inner_shadow_resource = 161 ui::ResourceManager::Resource* border_inner_shadow_resource =
159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
160 border_inner_shadow_resource_id); 163 border_inner_shadow_resource_id);
161 ui::ResourceManager::Resource* shadow_resource = 164 ui::ResourceManager::Resource* shadow_resource =
162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
163 shadow_resource_id); 166 shadow_resource_id);
164 ui::ResourceManager::Resource* contour_resource = 167 ui::ResourceManager::Resource* contour_resource =
165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
166 contour_resource_id); 169 contour_resource_id);
170
171 // If the tint for the border was not created, use the default color for the
172 // close button.
173 if (title_layer_needs_update) {
174 layer_title_cache_->UpdateTitleForTab(id, border_resource->tint);
175 }
176 int close_color = close_button_color;
177 if (border_resource->tint == default_theme_color) {
178 close_color = default_close_button_color;
179 }
167 ui::ResourceManager::Resource* close_btn_resource = 180 ui::ResourceManager::Resource* close_btn_resource =
168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, 181 resource_manager_->GetStaticResourceWithTint(close_button_resource_id,
169 close_button_resource_id); 182 close_color,
183 default_close_button_color);
184
170 ui::ResourceManager::Resource* back_logo_resource = nullptr; 185 ui::ResourceManager::Resource* back_logo_resource = nullptr;
171 186
172 DecorationTitle* title_layer = nullptr; 187 DecorationTitle* title_layer = nullptr;
173 188
174 //---------------------------------------------------------------------------- 189 //----------------------------------------------------------------------------
175 // Handle Border Scaling (Upscale/Downscale everything until final scaling) 190 // Handle Border Scaling (Upscale/Downscale everything until final scaling)
176 //---------------------------------------------------------------------------- 191 //----------------------------------------------------------------------------
177 width /= border_scale; 192 width /= border_scale;
178 height /= border_scale; 193 height /= border_scale;
179 shadow_x /= border_scale; 194 shadow_x /= border_scale;
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 contour_shadow_->SetBounds(contour_size); 486 contour_shadow_->SetBounds(contour_size);
472 contour_shadow_->SetOpacity(contour_alpha); 487 contour_shadow_->SetOpacity(contour_alpha);
473 } 488 }
474 489
475 front_border_->SetHideLayerAndSubtree(!border_visible); 490 front_border_->SetHideLayerAndSubtree(!border_visible);
476 if (border_visible) { 491 if (border_visible) {
477 front_border_->SetPosition(border_position); 492 front_border_->SetPosition(border_position);
478 front_border_->SetBounds(border_size); 493 front_border_->SetBounds(border_size);
479 front_border_->SetOpacity(border_alpha); 494 front_border_->SetOpacity(border_alpha);
480 front_border_->SetNearestNeighbor(toolbar_visible); 495 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 } 496 }
488 497
489 front_border_inner_shadow_->SetHideLayerAndSubtree( 498 front_border_inner_shadow_->SetHideLayerAndSubtree(
490 !border_inner_shadow_visible); 499 !border_inner_shadow_visible);
491 if (border_inner_shadow_visible) { 500 if (border_inner_shadow_visible) {
492 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); 501 front_border_inner_shadow_->SetPosition(border_inner_shadow_position);
493 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); 502 front_border_inner_shadow_->SetBounds(border_inner_shadow_size);
494 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); 503 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha);
495 } 504 }
496 505
(...skipping 18 matching lines...) Expand all
515 title_position.y() + 524 title_position.y() +
516 (title_size.height() - title_layer->size().height()) / 2.f); 525 (title_size.height() - title_layer->size().height()) / 2.f);
517 526
518 title_->SetPosition(vertically_centered_position); 527 title_->SetPosition(vertically_centered_position);
519 title_layer->setBounds(title_size); 528 title_layer->setBounds(title_size);
520 title_layer->setOpacity(border_alpha); 529 title_layer->setOpacity(border_alpha);
521 } 530 }
522 531
523 close_button_->SetHideLayerAndSubtree(!close_btn_visible); 532 close_button_->SetHideLayerAndSubtree(!close_btn_visible);
524 if (close_btn_visible) { 533 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); 534 close_button_->SetPosition(close_button_position);
533 close_button_->SetBounds(close_button_size); 535 close_button_->SetBounds(close_button_size);
534 // Non-linear alpha looks better. 536 // Non-linear alpha looks better.
535 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); 537 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha);
536 } 538 }
537 539
538 if (content_visible && attach_content) { 540 if (content_visible && attach_content) {
539 { 541 {
540 // content_ and back_logo_ Transforms 542 // content_ and back_logo_ Transforms
541 gfx::Transform transform; 543 gfx::Transform transform;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 // than 1. 623 // than 1.
622 if (brightness != brightness_) { 624 if (brightness != brightness_) {
623 brightness_ = brightness; 625 brightness_ = brightness;
624 cc::FilterOperations filters; 626 cc::FilterOperations filters;
625 if (brightness_ < 1.f) 627 if (brightness_ < 1.f)
626 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); 628 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_));
627 layer_->SetFilters(filters); 629 layer_->SetFilters(filters);
628 } 630 }
629 } 631 }
630 632
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() { 633 scoped_refptr<cc::Layer> TabLayer::layer() {
646 return layer_; 634 return layer_;
647 } 635 }
648 636
649 TabLayer::TabLayer(bool incognito, 637 TabLayer::TabLayer(bool incognito,
650 ui::ResourceManager* resource_manager, 638 ui::ResourceManager* resource_manager,
651 LayerTitleCache* layer_title_cache, 639 LayerTitleCache* layer_title_cache,
652 TabContentManager* tab_content_manager) 640 TabContentManager* tab_content_manager)
653 : incognito_(incognito), 641 : incognito_(incognito),
654 toolbar_background_color_(0),
655 close_button_color_(0),
656 resource_manager_(resource_manager), 642 resource_manager_(resource_manager),
657 layer_title_cache_(layer_title_cache), 643 layer_title_cache_(layer_title_cache),
658 layer_(cc::Layer::Create()), 644 layer_(cc::Layer::Create()),
659 toolbar_layer_(ToolbarLayer::Create(resource_manager)), 645 toolbar_layer_(ToolbarLayer::Create(resource_manager)),
660 title_(cc::Layer::Create()), 646 title_(cc::Layer::Create()),
661 content_(ContentLayer::Create(tab_content_manager)), 647 content_(ContentLayer::Create(tab_content_manager)),
662 side_padding_(cc::SolidColorLayer::Create()), 648 side_padding_(cc::SolidColorLayer::Create()),
663 bottom_padding_(cc::SolidColorLayer::Create()), 649 bottom_padding_(cc::SolidColorLayer::Create()),
664 close_button_(cc::UIResourceLayer::Create()), 650 close_button_(cc::UIResourceLayer::Create()),
665 front_border_(cc::NinePatchLayer::Create()), 651 front_border_(cc::NinePatchLayer::Create()),
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 title_->AddChild(layer); 693 title_->AddChild(layer);
708 } 694 }
709 } 695 }
710 696
711 if (title) 697 if (title)
712 title->SetUIResourceIds(); 698 title->SetUIResourceIds();
713 } 699 }
714 700
715 } // namespace android 701 } // namespace android
716 } // namespace chrome 702 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698