Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: ui/events/platform/platform_event_source.h

Issue 2978873002: Singletons changes necessary to run the UI Service inside the browser's process. (Closed)
Patch Set: Removing unneeded dependency. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/events/devices/input_device_manager.cc ('k') | ui/events/platform/platform_event_source.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_ 5 #ifndef UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
6 #define UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_ 6 #define UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 15 matching lines...) Expand all
26 namespace test { 26 namespace test {
27 class PlatformEventSourceTestAPI; 27 class PlatformEventSourceTestAPI;
28 } 28 }
29 29
30 // PlatformEventSource receives events from a source and dispatches the events 30 // PlatformEventSource receives events from a source and dispatches the events
31 // to the appropriate dispatchers. 31 // to the appropriate dispatchers.
32 class EVENTS_EXPORT PlatformEventSource { 32 class EVENTS_EXPORT PlatformEventSource {
33 public: 33 public:
34 virtual ~PlatformEventSource(); 34 virtual ~PlatformEventSource();
35 35
36 // Returns the thread-local singleton.
36 static PlatformEventSource* GetInstance(); 37 static PlatformEventSource* GetInstance();
37 38
38 // Adds a dispatcher to the dispatcher list. If a dispatcher is added during 39 // Adds a dispatcher to the dispatcher list. If a dispatcher is added during
39 // dispatching an event, then the newly added dispatcher also receives that 40 // dispatching an event, then the newly added dispatcher also receives that
40 // event. 41 // event.
41 void AddPlatformEventDispatcher(PlatformEventDispatcher* dispatcher); 42 void AddPlatformEventDispatcher(PlatformEventDispatcher* dispatcher);
42 43
43 // Removes a dispatcher from the dispatcher list. Dispatchers can safely be 44 // Removes a dispatcher from the dispatcher list. Dispatchers can safely be
44 // removed from the dispatcher list during an event is being dispatched, 45 // removed from the dispatcher list during an event is being dispatched,
45 // without affecting the dispatch of the event to other existing dispatchers. 46 // without affecting the dispatch of the event to other existing dispatchers.
(...skipping 11 matching lines...) Expand all
57 PlatformEventDispatcher* dispatcher); 58 PlatformEventDispatcher* dispatcher);
58 59
59 // Called to indicate that the source should stop dispatching the current 60 // Called to indicate that the source should stop dispatching the current
60 // stream of events and wait until the next iteration of the message-loop to 61 // stream of events and wait until the next iteration of the message-loop to
61 // dispatch the rest of the events. 62 // dispatch the rest of the events.
62 virtual void StopCurrentEventStream(); 63 virtual void StopCurrentEventStream();
63 64
64 void AddPlatformEventObserver(PlatformEventObserver* observer); 65 void AddPlatformEventObserver(PlatformEventObserver* observer);
65 void RemovePlatformEventObserver(PlatformEventObserver* observer); 66 void RemovePlatformEventObserver(PlatformEventObserver* observer);
66 67
68 // Creates PlatformEventSource and sets it as a thread-local singleton.
67 static std::unique_ptr<PlatformEventSource> CreateDefault(); 69 static std::unique_ptr<PlatformEventSource> CreateDefault();
68 70
69 protected: 71 protected:
70 PlatformEventSource(); 72 PlatformEventSource();
71 73
72 // Dispatches |platform_event| to the dispatchers. If there is an override 74 // Dispatches |platform_event| to the dispatchers. If there is an override
73 // dispatcher installed using |OverrideDispatcher()|, then that dispatcher 75 // dispatcher installed using |OverrideDispatcher()|, then that dispatcher
74 // receives the event first. |POST_DISPATCH_QUIT_LOOP| flag is set in the 76 // receives the event first. |POST_DISPATCH_QUIT_LOOP| flag is set in the
75 // returned value if the event-source should stop dispatching events at the 77 // returned value if the event-source should stop dispatching events at the
76 // current message-loop iteration. 78 // current message-loop iteration.
77 virtual uint32_t DispatchEvent(PlatformEvent platform_event); 79 virtual uint32_t DispatchEvent(PlatformEvent platform_event);
78 80
79 private: 81 private:
80 friend class ScopedEventDispatcher; 82 friend class ScopedEventDispatcher;
81 friend class test::PlatformEventSourceTestAPI; 83 friend class test::PlatformEventSourceTestAPI;
82 84
83 static PlatformEventSource* instance_;
84
85 // This is invoked when the list of dispatchers changes (i.e. a new dispatcher 85 // This is invoked when the list of dispatchers changes (i.e. a new dispatcher
86 // is added, or a dispatcher is removed). 86 // is added, or a dispatcher is removed).
87 virtual void OnDispatcherListChanged(); 87 virtual void OnDispatcherListChanged();
88 88
89 void OnOverriddenDispatcherRestored(); 89 void OnOverriddenDispatcherRestored();
90 90
91 // Use an base::ObserverList<> instead of an std::vector<> to store the list 91 // Use an base::ObserverList<> instead of an std::vector<> to store the list
92 // of 92 // of
93 // dispatchers, so that adding/removing dispatchers during an event dispatch 93 // dispatchers, so that adding/removing dispatchers during an event dispatch
94 // is well-defined. 94 // is well-defined.
95 typedef base::ObserverList<PlatformEventDispatcher> 95 typedef base::ObserverList<PlatformEventDispatcher>
96 PlatformEventDispatcherList; 96 PlatformEventDispatcherList;
97 PlatformEventDispatcherList dispatchers_; 97 PlatformEventDispatcherList dispatchers_;
98 PlatformEventDispatcher* overridden_dispatcher_; 98 PlatformEventDispatcher* overridden_dispatcher_;
99 99
100 // Used to keep track of whether the current override-dispatcher has been 100 // Used to keep track of whether the current override-dispatcher has been
101 // reset and a previous override-dispatcher has been restored. 101 // reset and a previous override-dispatcher has been restored.
102 bool overridden_dispatcher_restored_; 102 bool overridden_dispatcher_restored_;
103 103
104 base::ObserverList<PlatformEventObserver> observers_; 104 base::ObserverList<PlatformEventObserver> observers_;
105 105
106 DISALLOW_COPY_AND_ASSIGN(PlatformEventSource); 106 DISALLOW_COPY_AND_ASSIGN(PlatformEventSource);
107 }; 107 };
108 108
109 } // namespace ui 109 } // namespace ui
110 110
111 #endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_ 111 #endif // UI_EVENTS_PLATFORM_PLATFORM_EVENT_SOURCE_H_
OLDNEW
« no previous file with comments | « ui/events/devices/input_device_manager.cc ('k') | ui/events/platform/platform_event_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698