• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 BASE_MESSAGE_LOOP_MESSAGE_PUMP_OBSERVER_H
6 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_OBSERVER_H
7 
8 #include "base/base_export.h"
9 #include "base/event_types.h"
10 
11 namespace base {
12 
13 enum EventStatus {
14   EVENT_CONTINUE,    // The event should be dispatched as normal.
15 #if defined(USE_X11)
16   EVENT_HANDLED      // The event should not be processed any farther.
17 #endif
18 };
19 
20 // A MessagePumpObserver is an object that receives global
21 // notifications from the UI MessageLoop with MessagePumpWin or
22 // MessagePumpX11.
23 //
24 // NOTE: An Observer implementation should be extremely fast!
25 //
26 // For use with MessagePumpX11, please see message_pump_glib.h for more
27 // info about how this is invoked in this environment.
28 class BASE_EXPORT MessagePumpObserver {
29  public:
30   // This method is called before processing a NativeEvent. If the
31   // method returns EVENT_HANDLED, it indicates the event has already
32   // been handled, so the event is not processed any farther. If the
33   // method returns EVENT_CONTINUE, the event dispatching proceeds as
34   // normal.
35   virtual EventStatus WillProcessEvent(const NativeEvent& event) = 0;
36 
37   // This method is called after processing a message. This method
38   // will not be called if WillProcessEvent returns EVENT_HANDLED.
39   virtual void DidProcessEvent(const NativeEvent& event) = 0;
40 
41  protected:
~MessagePumpObserver()42   virtual ~MessagePumpObserver() {}
43 };
44 
45 }  // namespace base
46 
47 #endif  // BASE_MESSAGE_LOOP_MESSAGE_PUMP_OBSERVER_H
48