Home | History | Annotate | Download | only in high_contrast
      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