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 "ash/wm/event_client_impl.h" 6 7 #include "ash/session_state_delegate.h" 8 #include "ash/shell.h" 9 #include "ash/shell_window_ids.h" 10 #include "ui/aura/window.h" 11 12 namespace ash { 13 namespace internal { 14 15 EventClientImpl::EventClientImpl() { 16 } 17 18 EventClientImpl::~EventClientImpl() { 19 } 20 21 bool EventClientImpl::CanProcessEventsWithinSubtree( 22 const aura::Window* window) const { 23 const aura::RootWindow* root_window = window ? window->GetRootWindow() : NULL; 24 if (!root_window) 25 return true; 26 if (Shell::GetInstance()->session_state_delegate()->IsUserSessionBlocked()) { 27 const aura::Window* lock_screen_containers = Shell::GetContainer( 28 root_window, 29 kShellWindowId_LockScreenContainersContainer); 30 const aura::Window* lock_background_containers = Shell::GetContainer( 31 root_window, 32 kShellWindowId_LockScreenBackgroundContainer); 33 const aura::Window* lock_screen_related_containers = Shell::GetContainer( 34 root_window, 35 kShellWindowId_LockScreenRelatedContainersContainer); 36 return (window->Contains(lock_screen_containers) && 37 window->Contains(lock_background_containers) && 38 window->Contains(lock_screen_related_containers)) || 39 lock_screen_containers->Contains(window) || 40 lock_background_containers->Contains(window) || 41 lock_screen_related_containers->Contains(window); 42 } 43 return true; 44 } 45 46 ui::EventTarget* EventClientImpl::GetToplevelEventTarget() { 47 return Shell::GetInstance(); 48 } 49 50 } // namespace internal 51 } // namespace ash 52