Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: base/message_loop/message_loop.cc

Issue 235893016: Some cleanups for the message_loop.h/cc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: tot-merge Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/message_loop/message_loop.h ('k') | base/message_loop/message_pump_glib.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/message_loop/message_loop.cc
diff --git a/base/message_loop/message_loop.cc b/base/message_loop/message_loop.cc
index 0ca6e81efabce6f9176f080b5ce9b3a5aa7142fd..dd1a393ab08633514df9d6d021a1be7ff4dbd23f 100644
--- a/base/message_loop/message_loop.cc
+++ b/base/message_loop/message_loop.cc
@@ -32,6 +32,9 @@
#if defined(OS_ANDROID)
#include "base/message_loop/message_pump_android.h"
#endif
+#if defined(USE_GLIB)
+#include "base/message_loop/message_pump_glib.h"
+#endif
namespace base {
@@ -95,6 +98,18 @@ bool AlwaysNotifyPump(MessageLoop::Type type) {
#endif
}
+#if defined(OS_IOS)
+typedef MessagePumpIOSForIO MessagePumpForIO;
+#elif defined(OS_NACL)
+typedef MessagePumpDefault MessagePumpForIO;
+#elif defined(OS_POSIX)
+typedef MessagePumpLibevent MessagePumpForIO;
+#endif
+
+MessagePumpForIO* ToPumpIO(MessagePump* pump) {
+ return static_cast<MessagePumpForIO*>(pump);
+}
+
} // namespace
//------------------------------------------------------------------------------
@@ -198,30 +213,20 @@ bool MessageLoop::InitMessagePumpForUIFactory(MessagePumpFactory* factory) {
// static
scoped_ptr<MessagePump> MessageLoop::CreateMessagePumpForType(Type type) {
// TODO(rvargas): Get rid of the OS guards.
-#if defined(OS_WIN)
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(new MessagePumpForUI())
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpForIO())
-#elif defined(OS_IOS)
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(MessagePumpMac::Create())
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpIOSForIO())
-#elif defined(OS_MACOSX)
+#if defined(USE_GLIB) && !defined(OS_NACL)
+ typedef MessagePumpGlib MessagePumpForUI;
+#elif defined(OS_LINUX) && !defined(OS_NACL)
+ typedef MessagePumpLibevent MessagePumpForUI;
+#endif
+
+#if defined(OS_IOS) || defined(OS_MACOSX)
#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(MessagePumpMac::Create())
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpLibevent())
#elif defined(OS_NACL)
// Currently NaCl doesn't have a UI MessageLoop.
// TODO(abarth): Figure out if we need this.
#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>()
-// ipc_channel_nacl.cc uses a worker thread to do socket reads currently, and
-// doesn't require extra support for watching file descriptors.
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpDefault())
-#elif defined(USE_OZONE)
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(new MessagePumpLibevent())
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpLibevent())
-#elif defined(OS_POSIX) // POSIX but not MACOSX.
-#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(new MessagePumpForUI())
-#define MESSAGE_PUMP_IO scoped_ptr<MessagePump>(new MessagePumpLibevent())
#else
-#error Not implemented
+#define MESSAGE_PUMP_UI scoped_ptr<MessagePump>(new MessagePumpForUI())
#endif
if (type == MessageLoop::TYPE_UI) {
@@ -230,11 +235,13 @@ scoped_ptr<MessagePump> MessageLoop::CreateMessagePumpForType(Type type) {
return MESSAGE_PUMP_UI;
}
if (type == MessageLoop::TYPE_IO)
- return MESSAGE_PUMP_IO;
+ return scoped_ptr<MessagePump>(new MessagePumpForIO());
+
#if defined(OS_ANDROID)
if (type == MessageLoop::TYPE_JAVA)
- return MESSAGE_PUMP_UI;
+ return scoped_ptr<MessagePump>(new MessagePumpForUI());
#endif
+
DCHECK_EQ(MessageLoop::TYPE_DEFAULT, type);
return scoped_ptr<MessagePump>(new MessagePumpDefault());
}
@@ -644,6 +651,7 @@ void MessageLoop::ReleaseSoonInternal(
PostNonNestableTask(from_here, Bind(releaser, object));
}
+#if !defined(OS_NACL)
//------------------------------------------------------------------------------
// MessageLoopForUI
@@ -660,25 +668,24 @@ void MessageLoopForUI::Attach() {
}
#endif
-#if !defined(OS_NACL) && defined(OS_WIN)
+#if defined(OS_WIN)
void MessageLoopForUI::AddObserver(Observer* observer) {
- pump_ui()->AddObserver(observer);
+ static_cast<MessagePumpWin*>(pump_.get())->AddObserver(observer);
}
void MessageLoopForUI::RemoveObserver(Observer* observer) {
- pump_ui()->RemoveObserver(observer);
+ static_cast<MessagePumpWin*>(pump_.get())->RemoveObserver(observer);
}
-#endif // !defined(OS_NACL) && defined(OS_WIN)
+#endif // defined(OS_WIN)
-#if !defined(OS_NACL) && \
- (defined(USE_OZONE) || (defined(OS_CHROMEOS) && !defined(USE_GLIB)))
+#if defined(USE_OZONE) || (defined(OS_CHROMEOS) && !defined(USE_GLIB))
bool MessageLoopForUI::WatchFileDescriptor(
int fd,
bool persistent,
MessagePumpLibevent::Mode mode,
MessagePumpLibevent::FileDescriptorWatcher *controller,
MessagePumpLibevent::Watcher *delegate) {
- return pump_libevent()->WatchFileDescriptor(
+ return static_cast<MessagePumpLibevent*>(pump_.get())->WatchFileDescriptor(
fd,
persistent,
mode,
@@ -687,53 +694,49 @@ bool MessageLoopForUI::WatchFileDescriptor(
}
#endif
+#endif // !defined(OS_NACL)
+
//------------------------------------------------------------------------------
// MessageLoopForIO
-#if defined(OS_WIN)
+#if !defined(OS_NACL)
+void MessageLoopForIO::AddIOObserver(
+ MessageLoopForIO::IOObserver* io_observer) {
+ ToPumpIO(pump_.get())->AddIOObserver(io_observer);
+}
+
+void MessageLoopForIO::RemoveIOObserver(
+ MessageLoopForIO::IOObserver* io_observer) {
+ ToPumpIO(pump_.get())->RemoveIOObserver(io_observer);
+}
+#if defined(OS_WIN)
void MessageLoopForIO::RegisterIOHandler(HANDLE file, IOHandler* handler) {
- pump_io()->RegisterIOHandler(file, handler);
+ ToPumpIO(pump_.get())->RegisterIOHandler(file, handler);
}
bool MessageLoopForIO::RegisterJobObject(HANDLE job, IOHandler* handler) {
- return pump_io()->RegisterJobObject(job, handler);
+ return ToPumpIO(pump_.get())->RegisterJobObject(job, handler);
}
bool MessageLoopForIO::WaitForIOCompletion(DWORD timeout, IOHandler* filter) {
- return pump_io()->WaitForIOCompletion(timeout, filter);
-}
-
-#elif defined(OS_IOS)
-
-bool MessageLoopForIO::WatchFileDescriptor(int fd,
- bool persistent,
- Mode mode,
- FileDescriptorWatcher *controller,
- Watcher *delegate) {
- return pump_io()->WatchFileDescriptor(
- fd,
- persistent,
- mode,
- controller,
- delegate);
+ return ToPumpIO(pump_.get())->WaitForIOCompletion(timeout, filter);
}
-
-#elif defined(OS_POSIX) && !defined(OS_NACL)
-
+#elif defined(OS_POSIX)
bool MessageLoopForIO::WatchFileDescriptor(int fd,
bool persistent,
Mode mode,
FileDescriptorWatcher *controller,
Watcher *delegate) {
- return pump_libevent()->WatchFileDescriptor(
+ return ToPumpIO(pump_.get())->WatchFileDescriptor(
fd,
persistent,
mode,
controller,
delegate);
}
-
#endif
+#endif // !defined(OS_NACL)
+
} // namespace base
« no previous file with comments | « base/message_loop/message_loop.h ('k') | base/message_loop/message_pump_glib.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698