Upstream version 6.35.121.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / ash / ash_util.cc
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/window_event_dispatcher.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   aura::Window::Windows root_windows =
24       ash::Shell::GetInstance()->GetAllRootWindows();
25
26   for (aura::Window::Windows::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