| // 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/high_contrast/high_contrast_controller.h" |
| |
| #include "ash/shell.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| #include "ui/compositor/layer.h" |
| |
| namespace ash { |
| |
| HighContrastController::HighContrastController() |
| : enabled_(false) { |
| Shell::GetInstance()->AddShellObserver(this); |
| } |
| |
| HighContrastController::~HighContrastController() { |
| Shell::GetInstance()->RemoveShellObserver(this); |
| } |
| |
| void HighContrastController::SetEnabled(bool enabled) { |
| enabled_ = enabled; |
| |
| // Update all active displays. |
| aura::Window::Windows root_window_list = Shell::GetAllRootWindows(); |
| for (aura::Window::Windows::iterator it = root_window_list.begin(); |
| it != root_window_list.end(); it++) { |
| UpdateDisplay(*it); |
| } |
| } |
| |
| void HighContrastController::UpdateDisplay(aura::Window* root_window) { |
| root_window->layer()->SetLayerInverted(enabled_); |
| } |
| |
| void HighContrastController::OnRootWindowAdded(aura::Window* root_window) { |
| UpdateDisplay(root_window); |
| } |
| |
| } // namespace ash |