Use an X event loop in the GPU process on Linux.

In future patches, X windows will be created in the GPU
process, and events sent to these windows will need to
be forwarded to their parent windows.

Linux uses GTK as the default UI event loop type, but
GTK is not in the GPU process, so the X11 event loop
type is used instead.

Update package dependencies.

This will cause a regression in nacl_helper-text/text. Test
expectations will need to be updated.

BUG=145600
TBR=thakis, piman, mmoss, erg

Review URL: https://chromiumcodereview.appspot.com/23530050

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222894 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 4fc7cc52d49f4de12f17a1254674b4dfc449d035
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h
index bdad1b2..3520b72 100644
--- a/base/message_loop/message_loop.h
+++ b/base/message_loop/message_loop.h
@@ -42,6 +42,9 @@
 #else
 #define USE_GTK_MESSAGE_PUMP
 #include "base/message_loop/message_pump_gtk.h"
+#if defined(TOOLKIT_GTK)
+#include "base/message_loop/message_pump_x11.h"
+#endif
 #endif
 
 #endif
@@ -110,6 +113,11 @@
   //   This type of ML also supports native UI events (e.g., Windows messages).
   //   See also MessageLoopForUI.
   //
+  // TYPE_GPU
+  //   This type of ML also supports native UI events for use in the GPU
+  //   process. On Linux this will always be an X11 ML (as compared with the
+  //   sometimes-GTK ML in the browser process).
+  //
   // TYPE_IO
   //   This type of ML also supports asynchronous IO.  See also
   //   MessageLoopForIO.
@@ -123,6 +131,9 @@
   enum Type {
     TYPE_DEFAULT,
     TYPE_UI,
+#if defined(TOOLKIT_GTK)
+    TYPE_GPU,
+#endif
     TYPE_IO,
 #if defined(OS_ANDROID)
     TYPE_JAVA,
@@ -416,6 +427,13 @@
   MessagePumpLibevent* pump_libevent() {
     return static_cast<MessagePumpLibevent*>(pump_.get());
   }
+#if defined(TOOLKIT_GTK)
+  friend class MessagePumpX11;
+  MessagePumpX11* pump_gpu() {
+    DCHECK_EQ(TYPE_GPU, type());
+    return static_cast<MessagePumpX11*>(pump_.get());
+  }
+#endif
 #endif
 
   scoped_ptr<MessagePump> pump_;
@@ -599,7 +617,7 @@
 #endif
 
  protected:
-#if defined(USE_AURA) && defined(USE_X11) && !defined(OS_NACL)
+#if defined(USE_X11)
   friend class MessagePumpX11;
 #endif
 #if defined(USE_OZONE) && !defined(OS_NACL)