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#ifndef UI_AURA_CLIENT_EVENT_CLIENT_H_ 6#define UI_AURA_CLIENT_EVENT_CLIENT_H_ 7 8#include "ui/aura/aura_export.h" 9 10namespace ui { 11class EventTarget; 12} 13 14namespace aura { 15class Window; 16namespace client { 17 18// An interface implemented by an object that alters event processing. 19class AURA_EXPORT EventClient { 20 public: 21 // Returns true if events can be processed by |window| or any of its children. 22 virtual bool CanProcessEventsWithinSubtree(const Window* window) const = 0; 23 24 // Returns the top level EventTarget for the current environment. 25 virtual ui::EventTarget* GetToplevelEventTarget() = 0; 26 27 protected: 28 virtual ~EventClient() {} 29}; 30 31// Sets/Gets the event client on the root Window. 32AURA_EXPORT void SetEventClient(Window* root_window, EventClient* client); 33AURA_EXPORT EventClient* GetEventClient(const Window* root_window); 34 35} // namespace clients 36} // namespace aura 37 38#endif // UI_AURA_CLIENT_EVENT_CLIENT_H_ 39