1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Copyright 2014 The Chromium Authors. All rights reserved.
2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Use of this source code is governed by a BSD-style license that can be
3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// found in the LICENSE file.
4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "chrome/browser/ui/views/tabs/window_finder.h"
6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "ui/views/widget/desktop_aura/x11_topmost_window_finder.h"
8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if defined(USE_ASH)
10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgaura::Window* GetLocalProcessWindowAtPointAsh(
11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const gfx::Point& screen_point,
12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const std::set<aura::Window*>& ignore);
13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgaura::Window* GetLocalProcessWindowAtPoint(
16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    chrome::HostDesktopType host_desktop_type,
17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const gfx::Point& screen_point,
18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    const std::set<aura::Window*>& ignore) {
19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#if defined(USE_ASH)
20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  if (host_desktop_type == chrome::HOST_DESKTOP_TYPE_ASH)
21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org    return GetLocalProcessWindowAtPointAsh(screen_point, ignore);
22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif
23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org
24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  // The X11 server is the canonical state of what the window stacking order
25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  // is.
26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  views::X11TopmostWindowFinder finder;
27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org  return finder.FindLocalProcessWindowAt(screen_point, ignore);
28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}
29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org