| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_TYPE_H_ |
| #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_TYPE_H_ |
| |
| #include "build/build_config.h" |
| |
| namespace base { |
| |
| // A MessagePump has a particular type, which indicates the set of |
| // asynchronous events it may process in addition to tasks and timers. |
| |
| enum class MessagePumpType { |
| // This type of pump only supports tasks and timers. |
| DEFAULT, |
| |
| // This type of pump also supports native UI events (e.g., Windows |
| // messages). |
| UI, |
| |
| // User provided implementation of MessagePump interface |
| CUSTOM, |
| |
| // This type of pump also supports asynchronous IO. |
| IO, |
| |
| #if defined(OS_ANDROID) |
| // This type of pump is backed by a Java message handler which is |
| // responsible for running the tasks added to the ML. This is only for use |
| // on Android. TYPE_JAVA behaves in essence like TYPE_UI, except during |
| // construction where it does not use the main thread specific pump factory. |
| JAVA, |
| #endif // defined(OS_ANDROID) |
| |
| #if defined(OS_MACOSX) |
| // This type of pump is backed by a NSRunLoop. This is only for use on |
| // OSX and IOS. |
| NS_RUNLOOP, |
| #endif // defined(OS_MACOSX) |
| |
| #if defined(OS_WIN) |
| // This type of pump supports WM_QUIT messages in addition to other native |
| // UI events. This is only for use on windows. |
| UI_WITH_WM_QUIT_SUPPORT, |
| #endif // defined(OS_WIN) |
| }; |
| |
| } // namespace base |
| |
| #endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_TYPE_H_ |