| Index: chrome/browser/android/compositor/layer/toolbar_layer.cc
|
| diff --git a/chrome/browser/android/compositor/layer/toolbar_layer.cc b/chrome/browser/android/compositor/layer/toolbar_layer.cc
|
| index 37cedf4a753c2886a1bb36df2843e89c02c905f1..8f7b3a0574997b518c28ee5d742438ba10f60c2c 100644
|
| --- a/chrome/browser/android/compositor/layer/toolbar_layer.cc
|
| +++ b/chrome/browser/android/compositor/layer/toolbar_layer.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "chrome/browser/android/compositor/layer/toolbar_layer.h"
|
|
|
| +#include "cc/layers/nine_patch_layer.h"
|
| #include "cc/layers/solid_color_layer.h"
|
| #include "cc/layers/ui_resource_layer.h"
|
| #include "cc/resources/scoped_ui_resource.h"
|
| @@ -15,8 +16,9 @@ namespace chrome {
|
| namespace android {
|
|
|
| // static
|
| -scoped_refptr<ToolbarLayer> ToolbarLayer::Create() {
|
| - return make_scoped_refptr(new ToolbarLayer());
|
| +scoped_refptr<ToolbarLayer> ToolbarLayer::Create(
|
| + ui::ResourceManager* resource_manager) {
|
| + return make_scoped_refptr(new ToolbarLayer(resource_manager));
|
| }
|
|
|
| scoped_refptr<cc::Layer> ToolbarLayer::layer() {
|
| @@ -24,13 +26,23 @@ scoped_refptr<cc::Layer> ToolbarLayer::layer() {
|
| }
|
|
|
| void ToolbarLayer::PushResource(
|
| - ui::ResourceManager::Resource* resource,
|
| + int toolbar_resource_id,
|
| int toolbar_background_color,
|
| bool anonymize,
|
| int toolbar_textbox_background_color,
|
| + int url_bar_background_resource_id,
|
| + float url_bar_alpha,
|
| bool show_debug,
|
| - float brightness) {
|
| - DCHECK(resource);
|
| + float brightness,
|
| + bool clip_shadow) {
|
| + ui::ResourceManager::Resource* resource =
|
| + resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC,
|
| + toolbar_resource_id);
|
| +
|
| + // Ensure the toolbar resource is available before making the layer visible.
|
| + layer_->SetHideLayerAndSubtree(!resource);
|
| + if (!resource)
|
| + return;
|
|
|
| // This layer effectively draws over the space it takes for shadows. Set the
|
| // bounds to the non-shadow size so that other things can properly line up.
|
| @@ -45,9 +57,38 @@ void ToolbarLayer::PushResource(
|
| toolbar_background_layer_->SetPosition(resource->padding.origin());
|
| toolbar_background_layer_->SetBackgroundColor(toolbar_background_color);
|
|
|
| + bool url_bar_visible = (resource->aperture.width() != 0);
|
| + url_bar_background_layer_->SetHideLayerAndSubtree(!url_bar_visible);
|
| + if (url_bar_visible) {
|
| + ui::ResourceManager::Resource* url_bar_background_resource =
|
| + resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC,
|
| + url_bar_background_resource_id);
|
| + gfx::Size url_bar_size(
|
| + resource->aperture.width() + url_bar_background_resource->size.width()
|
| + - url_bar_background_resource->padding.width(),
|
| + resource->aperture.height() + url_bar_background_resource->size.height()
|
| + - url_bar_background_resource->padding.height());
|
| + gfx::Rect url_bar_border(
|
| + url_bar_background_resource->Border(url_bar_size));
|
| + gfx::PointF url_bar_position = gfx::PointF(
|
| + resource->aperture.x() - url_bar_background_resource->padding.x(),
|
| + resource->aperture.y() - url_bar_background_resource->padding.y());
|
| +
|
| + url_bar_background_layer_->SetUIResourceId(
|
| + url_bar_background_resource->ui_resource->id());
|
| + url_bar_background_layer_->SetBorder(url_bar_border);
|
| + url_bar_background_layer_->SetAperture(
|
| + url_bar_background_resource->aperture);
|
| + url_bar_background_layer_->SetBounds(url_bar_size);
|
| + url_bar_background_layer_->SetPosition(url_bar_position);
|
| + url_bar_background_layer_->SetOpacity(url_bar_alpha);
|
| + }
|
| +
|
| bitmap_layer_->SetUIResourceId(resource->ui_resource->id());
|
| bitmap_layer_->SetBounds(resource->size);
|
|
|
| + layer_->SetMasksToBounds(clip_shadow);
|
| +
|
| anonymize_layer_->SetHideLayerAndSubtree(!anonymize);
|
| if (anonymize) {
|
| anonymize_layer_->SetPosition(gfx::PointF(resource->aperture.origin()));
|
| @@ -105,10 +146,13 @@ void ToolbarLayer::UpdateProgressBar(int progress_bar_x,
|
| }
|
| }
|
|
|
| -ToolbarLayer::ToolbarLayer()
|
| - : layer_(cc::Layer::Create(content::Compositor::LayerSettings())),
|
| +ToolbarLayer::ToolbarLayer(ui::ResourceManager* resource_manager)
|
| + : resource_manager_(resource_manager),
|
| + layer_(cc::Layer::Create(content::Compositor::LayerSettings())),
|
| toolbar_background_layer_(
|
| cc::SolidColorLayer::Create(content::Compositor::LayerSettings())),
|
| + url_bar_background_layer_(
|
| + cc::NinePatchLayer::Create(content::Compositor::LayerSettings())),
|
| bitmap_layer_(
|
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())),
|
| progress_bar_layer_(
|
| @@ -123,6 +167,10 @@ ToolbarLayer::ToolbarLayer()
|
| toolbar_background_layer_->SetIsDrawable(true);
|
| layer_->AddChild(toolbar_background_layer_);
|
|
|
| + url_bar_background_layer_->SetIsDrawable(true);
|
| + url_bar_background_layer_->SetFillCenter(true);
|
| + layer_->AddChild(url_bar_background_layer_);
|
| +
|
| bitmap_layer_->SetIsDrawable(true);
|
| layer_->AddChild(bitmap_layer_);
|
|
|
|
|