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 11 namespace ash { 12 13 HighContrastController::HighContrastController() 14 : enabled_(false) { 15 Shell::GetInstance()->AddShellObserver(this); 16 } 17 18 HighContrastController::~HighContrastController() { 19 Shell::GetInstance()->RemoveShellObserver(this); 20 } 21 22 void 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 33 void HighContrastController::UpdateDisplay(aura::Window* root_window) { 34 root_window->layer()->SetLayerInverted(enabled_); 35 } 36 37 void HighContrastController::OnRootWindowAdded(aura::Window* root_window) { 38 UpdateDisplay(root_window); 39 } 40 41 } // namespace ash 42