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 11namespace base { 12 13enum 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// MessagePumpAuraX11. 23// 24// NOTE: An Observer implementation should be extremely fast! 25// 26// For use with MessagePumpAuraX11, please see message_pump_glib.h for more 27// info about how this is invoked in this environment. 28class 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: 42 virtual ~MessagePumpObserver() {} 43}; 44 45} // namespace base 46 47#endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_OBSERVER_H 48