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 |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2fd0173ce4074153a44add0374368304aab5a0a6 |
--- /dev/null |
+++ b/chrome/browser/android/compositor/layer/toolbar_layer.cc |
@@ -0,0 +1,79 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/android/compositor/layer/toolbar_layer.h" |
+ |
+#include "cc/layers/solid_color_layer.h" |
+#include "cc/layers/ui_resource_layer.h" |
+#include "third_party/skia/include/core/SkColor.h" |
+#include "ui/android/resources/resource_manager.h" |
+#include "ui/android/resources/ui_resource_android.h" |
+ |
+const SkColor kNormalAnonymizeContentColor = SK_ColorWHITE; |
+const SkColor kIncognitoAnonymizeContentColor = 0xFF737373; |
+ |
+namespace chrome { |
+namespace android { |
+ |
+// static |
+scoped_refptr<ToolbarLayer> ToolbarLayer::Create() { |
+ return make_scoped_refptr(new ToolbarLayer()); |
+} |
+ |
+scoped_refptr<cc::Layer> ToolbarLayer::layer() { |
+ return layer_; |
+} |
+ |
+void ToolbarLayer::PushResource(ui::ResourceManager::Resource* resource, |
+ bool anonymize, |
+ bool anonymize_component_is_incognito, |
+ bool show_debug) { |
+ DCHECK(resource); |
+ |
+ // 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. |
+ layer_->SetBounds(resource->padding.size()); |
+ |
+ bitmap_layer_->SetUIResourceId(resource->ui_resource->id()); |
+ bitmap_layer_->SetBounds(resource->size); |
+ |
+ anonymize_layer_->SetHideLayerAndSubtree(!anonymize); |
+ if (anonymize) { |
+ anonymize_layer_->SetPosition(resource->aperture.origin()); |
+ anonymize_layer_->SetBounds(resource->aperture.size()); |
+ anonymize_layer_->SetBackgroundColor(anonymize_component_is_incognito |
+ ? kIncognitoAnonymizeContentColor |
+ : kNormalAnonymizeContentColor); |
+ } |
+ |
+ debug_layer_->SetBounds(resource->size); |
+ if (show_debug && !debug_layer_->parent()) |
+ layer_->AddChild(debug_layer_); |
+ else if (!show_debug && debug_layer_->parent()) |
+ debug_layer_->RemoveFromParent(); |
+} |
+ |
+ToolbarLayer::ToolbarLayer() |
+ : layer_(cc::Layer::Create()), |
+ bitmap_layer_(cc::UIResourceLayer::Create()), |
+ anonymize_layer_(cc::SolidColorLayer::Create()), |
+ debug_layer_(cc::SolidColorLayer::Create()) { |
+ bitmap_layer_->SetIsDrawable(true); |
+ layer_->AddChild(bitmap_layer_); |
+ |
+ anonymize_layer_->SetHideLayerAndSubtree(true); |
+ anonymize_layer_->SetIsDrawable(true); |
+ anonymize_layer_->SetBackgroundColor(kNormalAnonymizeContentColor); |
+ layer_->AddChild(anonymize_layer_); |
+ |
+ debug_layer_->SetIsDrawable(true); |
+ debug_layer_->SetBackgroundColor(SK_ColorGREEN); |
+ debug_layer_->SetOpacity(0.5f); |
+} |
+ |
+ToolbarLayer::~ToolbarLayer() { |
+} |
+ |
+} // namespace android |
+} // namespace chrome |