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_DISPATCHER_H 6 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_DISPATCHER_H 7 8 #include "base/base_export.h" 9 #include "base/event_types.h" 10 11 namespace base { 12 13 // Dispatcher is used during a nested invocation of Run to dispatch events when 14 // |RunLoop(dispatcher).Run()| is used. If |RunLoop().Run()| is invoked, 15 // MessageLoop does not dispatch events (or invoke TranslateMessage), rather 16 // every message is passed to Dispatcher's Dispatch method for dispatch. It is 17 // up to the Dispatcher whether or not to dispatch the event. 18 // 19 // The nested loop is exited by either posting a quit, or returning false 20 // from Dispatch. 21 class BASE_EXPORT MessagePumpDispatcher { 22 public: 23 virtual ~MessagePumpDispatcher() {} 24 25 // Dispatches the event. If true is returned processing continues as 26 // normal. If false is returned, the nested loop exits immediately. 27 virtual bool Dispatch(const NativeEvent& event) = 0; 28 }; 29 30 } // namespace base 31 32 #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_DISPATCHER_H 33