1 // Copyright 2018 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_FOR_UI_H_
6 #define BASE_MESSAGE_LOOP_MESSAGE_PUMP_FOR_UI_H_
7 
8 // This header is a forwarding header to coalesce the various platform specific
9 // implementations of MessagePumpForUI.
10 
11 #include "build/build_config.h"
12 
13 #if defined(OS_WIN)
14 #include "base/message_loop/message_pump_win.h"
15 #elif defined(OS_ANDROID) && 0
16 #include "base/message_loop/message_pump_android.h"
17 #elif defined(OS_MACOSX)
18 #include "base/message_loop/message_pump.h"
19 #elif defined(OS_NACL) || defined(OS_AIX)
20 // No MessagePumpForUI, see below.
21 #elif defined(USE_GLIB) && !defined(ANDROID)
22 #include "base/message_loop/message_pump_glib.h"
23 #elif defined(OS_LINUX) || defined(OS_BSD)|| defined(ANDROID)
24 #include "base/message_loop/message_pump_libevent.h"
25 #elif defined(OS_FUCHSIA)
26 #include "base/message_loop/message_pump_fuchsia.h"
27 #endif
28 
29 namespace base {
30 
31 #if defined(OS_WIN)
32 // Windows defines it as-is.
33 using MessagePumpForUI = MessagePumpForUI;
34 #elif defined(OS_ANDROID)
35 #if 0 // Drop support for MessagePumpForUI for libchrome on Android targets.
36 // Android defines it as-is.
37 using MessagePumpForUI = MessagePumpForUI;
38 #endif
39 #elif defined(OS_MACOSX)
40 // MessagePumpForUI isn't bound to a specific impl on Mac. While each impl can
41 // be represented by a plain MessagePump: MessagePumpMac::Create() must be used
42 // to instantiate the right impl.
43 using MessagePumpForUI = MessagePump;
44 #elif defined(OS_NACL) || defined(OS_AIX)
45 // Currently NaCl and AIX don't have a MessagePumpForUI.
46 // TODO(abarth): Figure out if we need this.
47 #elif defined(USE_GLIB) && !defined(ANDROID)
48 using MessagePumpForUI = MessagePumpGlib;
49 #elif defined(OS_LINUX) || defined(OS_BSD) || defined(ANDROID)
50 using MessagePumpForUI = MessagePumpLibevent;
51 #elif defined(OS_FUCHSIA)
52 using MessagePumpForUI = MessagePumpFuchsia;
53 #else
54 #error Platform does not define MessagePumpForUI
55 #endif
56 
57 }  // namespace base
58 
59 #endif  // BASE_MESSAGE_LOOP_MESSAGE_PUMP_FOR_UI_H_
60