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/high_contrast/high_contrast_controller.h" 6 7#include "ash/shell.h" 8#include "ui/aura/window_event_dispatcher.h" 9#include "ui/compositor/layer.h" 10 11namespace ash { 12 13HighContrastController::HighContrastController() 14 : enabled_(false) { 15 Shell::GetInstance()->AddShellObserver(this); 16} 17 18HighContrastController::~HighContrastController() { 19 Shell::GetInstance()->RemoveShellObserver(this); 20} 21 22void HighContrastController::SetEnabled(bool enabled) { 23 enabled_ = enabled; 24 25 // Update all active displays. 26 aura::Window::Windows root_window_list = Shell::GetAllRootWindows(); 27 for (aura::Window::Windows::iterator it = root_window_list.begin(); 28 it != root_window_list.end(); it++) { 29 UpdateDisplay(*it); 30 } 31} 32 33void HighContrastController::UpdateDisplay(aura::Window* root_window) { 34 root_window->layer()->SetLayerInverted(enabled_); 35} 36 37void HighContrastController::OnRootWindowAdded(aura::Window* root_window) { 38 UpdateDisplay(root_window); 39} 40 41} // namespace ash 42