15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/ash/tabs/dock_info_ash.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/coordinate_conversion.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/root_window.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)aura::Window* GetLocalProcessWindowAtPointImpl( 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_point, 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<gfx::NativeView>& ignore, 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::Window* window) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (ignore.find(window) != ignore.end()) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!window->IsVisible()) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (window->id() == ash::internal::kShellWindowId_PhantomWindow || 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->id() == ash::internal::kShellWindowId_OverlayContainer) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (window->layer()->type() == ui::LAYER_TEXTURED) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return window->GetBoundsInScreen().Contains(screen_point) ? window : NULL; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (aura::Window::Windows::const_reverse_iterator i = 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) window->children().rbegin(); i != window->children().rend(); ++i) { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) aura::Window* result = 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetLocalProcessWindowAtPointImpl(screen_point, ignore, *i); 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (result) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return result; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chrome { 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DockInfo GetDockInfoAtPointAsh( 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_point, const std::set<gfx::NativeView>& ignore) { 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(beng): 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTIMPLEMENTED(); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return DockInfo(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)gfx::NativeView GetLocalProcessWindowAtPointAsh( 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Point& screen_point, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::set<gfx::NativeView>& ignore) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetLocalProcessWindowAtPointImpl( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) screen_point, ignore, ::ash::wm::GetRootWindowAt(screen_point)); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chrome 62