Home | History | Annotate | Download | only in client
      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 #include "ui/aura/window.h"
     10 
     11 namespace aura {
     12 
     13 class Event;
     14 class RootWindow;
     15 
     16 namespace client {
     17 
     18 // An interface implemented by an object that alters event processing.
     19 class 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 RootWindow.
     32 AURA_EXPORT void SetEventClient(RootWindow* root_window, EventClient* client);
     33 AURA_EXPORT EventClient* GetEventClient(const RootWindow* root_window);
     34 
     35 }  // namespace clients
     36 }  // namespace aura
     37 
     38 #endif  // UI_AURA_CLIENT_EVENT_CLIENT_H_
     39