Home | History | Annotate | Download | only in ash
      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 "chrome/browser/ui/ash/ash_util.h"
      6 
      7 #include "ash/shell.h"
      8 #include "chrome/browser/ui/ash/ash_init.h"
      9 #include "chrome/browser/ui/host_desktop.h"
     10 #include "ui/aura/root_window.h"
     11 
     12 namespace chrome {
     13 
     14 bool IsNativeViewInAsh(gfx::NativeView native_view) {
     15 #if defined(OS_CHROMEOS)
     16   // Optimization. There is only ash on ChromeOS.
     17   return true;
     18 #endif
     19 
     20   if (!ash::Shell::HasInstance())
     21     return false;
     22 
     23   ash::Shell::RootWindowList root_windows =
     24       ash::Shell::GetInstance()->GetAllRootWindows();
     25 
     26   for (ash::Shell::RootWindowList::const_iterator it = root_windows.begin();
     27        it != root_windows.end(); ++it) {
     28     if ((*it)->Contains(native_view))
     29       return true;
     30   }
     31 
     32   return false;
     33 }
     34 
     35 bool IsNativeWindowInAsh(gfx::NativeWindow native_window) {
     36   return IsNativeViewInAsh(native_window);
     37 }
     38 
     39 void ToggleAshDesktop() {
     40   if (chrome::HOST_DESKTOP_TYPE_ASH == chrome::HOST_DESKTOP_TYPE_NATIVE)
     41     return;
     42 
     43   if (!ash::Shell::HasInstance())
     44     OpenAsh();
     45   else
     46     CloseAsh();
     47 }
     48 
     49 }  // namespace chrome
     50