summaryrefslogtreecommitdiff
path: root/chromium/ash/wm/system_background_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/wm/system_background_controller.cc')
-rw-r--r--chromium/ash/wm/system_background_controller.cc45
1 files changed, 45 insertions, 0 deletions
diff --git a/chromium/ash/wm/system_background_controller.cc b/chromium/ash/wm/system_background_controller.cc
new file mode 100644
index 00000000000..7e4054e1378
--- /dev/null
+++ b/chromium/ash/wm/system_background_controller.cc
@@ -0,0 +1,45 @@
+// Copyright (c) 2012 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 "ash/wm/system_background_controller.h"
+
+#include "ui/aura/window.h"
+#include "ui/compositor/layer.h"
+#include "ui/compositor/layer_type.h"
+
+namespace ash {
+namespace internal {
+
+SystemBackgroundController::SystemBackgroundController(
+ aura::Window* root_window,
+ SkColor color)
+ : root_window_(root_window),
+ layer_(new ui::Layer(ui::LAYER_SOLID_COLOR)) {
+ root_window_->AddObserver(this);
+ layer_->SetColor(color);
+
+ ui::Layer* root_layer = root_window_->layer();
+ layer_->SetBounds(gfx::Rect(root_layer->bounds().size()));
+ root_layer->Add(layer_.get());
+ root_layer->StackAtBottom(layer_.get());
+}
+
+SystemBackgroundController::~SystemBackgroundController() {
+ root_window_->RemoveObserver(this);
+}
+
+void SystemBackgroundController::SetColor(SkColor color) {
+ layer_->SetColor(color);
+}
+
+void SystemBackgroundController::OnWindowBoundsChanged(
+ aura::Window* root,
+ const gfx::Rect& old_bounds,
+ const gfx::Rect& new_bounds) {
+ DCHECK_EQ(root_window_, root);
+ layer_->SetBounds(gfx::Rect(root_window_->layer()->bounds().size()));
+}
+
+} // namespace internal
+} // namespace ash