Define MessagePumpDefault and use it to implement MessageLoop on non-Windows
platforms.  This is actually just a first-step toward the real fix which is to
use MessagePumpDefault on all platforms on non-UI and non-IO threads.

This CL also fixes some GCC compilation errors.  I renamed MessageLoopOwnable
to TaskBase, which seems more appropriate since a MessageLoopOwnable has a
next Task pointer and clearly is only meaningful in the context of Task.  (I
wonder why it is even a separate class, but that is another issue.)  I had to
make the next_task / set_next_task methods public since they are used by an
inner class of MessageLoop.  Perhaps those inner classes should be made into
top-level classes, but that seemed like too much to change at this time.

R=jar,mmentovai

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1045 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/base/message_loop.cc b/base/message_loop.cc
index 4d61b6a..c82c3ee6 100644
--- a/base/message_loop.cc
+++ b/base/message_loop.cc
@@ -32,6 +32,7 @@
 #include <algorithm>
 
 #include "base/logging.h"
+#include "base/message_pump_default.h"
 #include "base/string_util.h"
 #include "base/thread_local_storage.h"
 
@@ -79,14 +80,17 @@
 MessageLoop::MessageLoop()
 #pragma warning(suppress: 4355)  // OK, to use |this| in the initializer list.
     : timer_manager_(this),
-      exception_restoration_(false),
       nestable_tasks_allowed_(true),
+      exception_restoration_(false),
       state_(NULL) {
   DCHECK(tls_index_) << "static initializer failed";
   DCHECK(!current()) << "should only have one message loop per thread";
   ThreadLocalStorage::Set(tls_index_, this);
+  // TODO(darin): Generalize this to support instantiating different pumps.
 #if defined(OS_WIN)
   pump_ = new base::MessagePumpWin();
+#else
+  pump_ = new base::MessagePumpDefault();
 #endif
 }
 
@@ -453,7 +457,7 @@
 
 bool MessageLoop::PrioritizedTaskQueue::PrioritizedTask::operator < (
     PrioritizedTask const & right) const {
-  int compare = task_->priority_ - right.task_->priority_;
+  int compare = task_->priority() - right.task_->priority();
   if (compare)
     return compare < 0;
   // Don't compare directly, but rather subtract.  This handles overflow