[Chromoting] Launch the host process elevated via ShellExecuteEx().

The host process is launched in in two steps now. An instance of remote_service.exe is launched in a user session (CreateProcessAsUser) and then it launches the host requesting elevation (ShellExecuteEx). This is needed because Windows 8 refuses to inject Alt+Tab unless uiAccess='true' is specified in the manifest, which in its turn requires ShellExecuteEx() to be used.

Lifetime of launched processes is controlled by assigning them to a job object.

Message loop changes are required to be able to process job object notifications on the I/O message loop.

BUG=135217

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

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


CrOS-Libchrome-Original-Commit: 773632872a2738c85cb4e29fdd300de02316fe26
diff --git a/base/message_loop.cc b/base/message_loop.cc
index 7cadede..32994bf 100644
--- a/base/message_loop.cc
+++ b/base/message_loop.cc
@@ -751,6 +751,10 @@
   pump_io()->RegisterIOHandler(file, handler);
 }
 
+bool MessageLoopForIO::RegisterJobObject(HANDLE job, IOHandler* handler) {
+  return pump_io()->RegisterJobObject(job, handler);
+}
+
 bool MessageLoopForIO::WaitForIOCompletion(DWORD timeout, IOHandler* filter) {
   return pump_io()->WaitForIOCompletion(timeout, filter);
 }