- add sources.
[platform/framework/web/crosswalk.git] / src / ash / wm / system_background_controller.cc
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/wm/system_background_controller.h"
6
7 #include "ui/aura/root_window.h"
8 #include "ui/compositor/layer.h"
9 #include "ui/compositor/layer_type.h"
10
11 namespace ash {
12 namespace internal {
13
14 SystemBackgroundController::SystemBackgroundController(
15     aura::RootWindow* root_window,
16     SkColor color)
17     : root_window_(root_window),
18       layer_(new ui::Layer(ui::LAYER_SOLID_COLOR)) {
19   root_window_->AddObserver(this);
20   layer_->SetColor(color);
21
22   ui::Layer* root_layer = root_window_->layer();
23   layer_->SetBounds(gfx::Rect(root_layer->bounds().size()));
24   root_layer->Add(layer_.get());
25   root_layer->StackAtBottom(layer_.get());
26 }
27
28 SystemBackgroundController::~SystemBackgroundController() {
29   root_window_->RemoveObserver(this);
30 }
31
32 void SystemBackgroundController::SetColor(SkColor color) {
33   layer_->SetColor(color);
34 }
35
36 void SystemBackgroundController::OnWindowBoundsChanged(
37     aura::Window* root,
38     const gfx::Rect& old_bounds,
39     const gfx::Rect& new_bounds) {
40   DCHECK_EQ(root_window_, root);
41   layer_->SetBounds(gfx::Rect(root_window_->layer()->bounds().size()));
42 }
43
44 }  // namespace internal
45 }  // namespace ash