Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / events / event_source.h
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_