• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_EVENTS_EVENT_SOURCE_H_
6 #define UI_EVENTS_EVENT_SOURCE_H_
7 
8 #include <vector>
9 
10 #include "ui/events/event_dispatcher.h"
11 #include "ui/events/events_export.h"
12 
13 namespace ui {
14 
15 class Event;
16 class EventProcessor;
17 class EventRewriter;
18 
19 // EventSource receives events from the native platform (e.g. X11, win32 etc.)
20 // and sends the events to an EventProcessor.
21 class EVENTS_EXPORT EventSource {
22  public:
23   EventSource();
24   virtual ~EventSource();
25 
26   virtual EventProcessor* GetEventProcessor() = 0;
27 
28   // Adds a rewriter to modify events before they are sent to the
29   // EventProcessor. The rewriter must be explicitly removed from the
30   // EventSource before the rewriter is destroyed. The EventSource
31   // does not take ownership of the rewriter.
32   void AddEventRewriter(EventRewriter* rewriter);
33   void RemoveEventRewriter(EventRewriter* rewriter);
34 
35  protected:
36   EventDispatchDetails SendEventToProcessor(Event* event);
37 
38  private:
39   friend class EventSourceTestApi;
40 
41   typedef std::vector<EventRewriter*> EventRewriterList;
42   EventDispatchDetails DeliverEventToProcessor(Event* event);
43   EventRewriterList rewriter_list_;
44   DISALLOW_COPY_AND_ASSIGN(EventSource);
45 };
46 
47 }  // namespace ui
48 
49 #endif // UI_EVENTS_EVENT_SOURCE_H_
50