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 "ash/wm/event_client_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/session_state_delegate.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_window_ids.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/window.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace internal { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EventClientImpl::EventClientImpl() { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EventClientImpl::~EventClientImpl() { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool EventClientImpl::CanProcessEventsWithinSubtree( 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const aura::Window* window) const { 23ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch const aura::RootWindow* root_window = window ? window->GetRootWindow() : NULL; 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch if (!root_window) 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return true; 26bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked()) { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const aura::Window* lock_screen_containers = Shell::GetContainer( 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kShellWindowId_LockScreenContainersContainer); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const aura::Window* lock_background_containers = Shell::GetContainer( 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window, 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kShellWindowId_LockScreenBackgroundContainer); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const aura::Window* lock_screen_related_containers = Shell::GetContainer( 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) root_window, 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) kShellWindowId_LockScreenRelatedContainersContainer); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return (window->Contains(lock_screen_containers) && 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->Contains(lock_background_containers) && 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->Contains(lock_screen_related_containers)) || 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) lock_screen_containers->Contains(window) || 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lock_background_containers->Contains(window) || 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lock_screen_related_containers->Contains(window); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ui::EventTarget* EventClientImpl::GetToplevelEventTarget() { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return Shell::GetInstance(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace internal 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 52