| // Copyright (c) 2013 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/debug.h" | 
 |  | 
 | #include "ash/shell.h" | 
 | #include "cc/debug/layer_tree_debug_state.h" | 
 | #include "ui/aura/window_tree_host.h" | 
 | #include "ui/compositor/compositor.h" | 
 |  | 
 | namespace ash { | 
 | namespace debug { | 
 |  | 
 | void ToggleShowDebugBorders() { | 
 |   aura::Window::Windows root_windows = Shell::Get()->GetAllRootWindows(); | 
 |   std::unique_ptr<cc::DebugBorderTypes> value; | 
 |   for (aura::Window::Windows::iterator it = root_windows.begin(); | 
 |        it != root_windows.end(); ++it) { | 
 |     ui::Compositor* compositor = (*it)->GetHost()->compositor(); | 
 |     cc::LayerTreeDebugState state = compositor->GetLayerTreeDebugState(); | 
 |     if (!value.get()) | 
 |       value.reset(new cc::DebugBorderTypes(state.show_debug_borders.flip())); | 
 |     state.show_debug_borders = *value.get(); | 
 |     compositor->SetLayerTreeDebugState(state); | 
 |   } | 
 | } | 
 |  | 
 | void ToggleShowFpsCounter() { | 
 |   aura::Window::Windows root_windows = Shell::Get()->GetAllRootWindows(); | 
 |   std::unique_ptr<bool> value; | 
 |   for (aura::Window::Windows::iterator it = root_windows.begin(); | 
 |        it != root_windows.end(); ++it) { | 
 |     ui::Compositor* compositor = (*it)->GetHost()->compositor(); | 
 |     cc::LayerTreeDebugState state = compositor->GetLayerTreeDebugState(); | 
 |     if (!value.get()) | 
 |       value.reset(new bool(!state.show_fps_counter)); | 
 |     state.show_fps_counter = *value.get(); | 
 |     compositor->SetLayerTreeDebugState(state); | 
 |   } | 
 | } | 
 |  | 
 | void ToggleShowPaintRects() { | 
 |   aura::Window::Windows root_windows = Shell::Get()->GetAllRootWindows(); | 
 |   std::unique_ptr<bool> value; | 
 |   for (aura::Window::Windows::iterator it = root_windows.begin(); | 
 |        it != root_windows.end(); ++it) { | 
 |     ui::Compositor* compositor = (*it)->GetHost()->compositor(); | 
 |     cc::LayerTreeDebugState state = compositor->GetLayerTreeDebugState(); | 
 |     if (!value.get()) | 
 |       value.reset(new bool(!state.show_paint_rects)); | 
 |     state.show_paint_rects = *value.get(); | 
 |     compositor->SetLayerTreeDebugState(state); | 
 |   } | 
 | } | 
 |  | 
 | }  // namespace debug | 
 | }  // namespace ash |