Index: mojo/shell/public/cpp/lib/application_runner.cc |
diff --git a/mojo/shell/public/cpp/lib/application_runner.cc b/mojo/shell/public/cpp/lib/application_runner.cc |
index 5253053d43f55ebe113404b038976858ab1abffc..201aa62da40e866be03be013d1dd9ea2e4886812 100644 |
--- a/mojo/shell/public/cpp/lib/application_runner.cc |
+++ b/mojo/shell/public/cpp/lib/application_runner.cc |
@@ -5,10 +5,12 @@ |
#include "mojo/shell/public/cpp/application_runner.h" |
#include "base/at_exit.h" |
+#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
#include "base/process/launch.h" |
+#include "base/run_loop.h" |
#include "mojo/shell/public/cpp/shell_client.h" |
#include "mojo/shell/public/cpp/shell_connection.h" |
@@ -54,7 +56,9 @@ MojoResult ApplicationRunner::Run(MojoHandle shell_client_request_handle, |
client_.get(), |
MakeRequest<shell::mojom::ShellClient>(MakeScopedHandle( |
MessagePipeHandle(shell_client_request_handle))))); |
- loop->Run(); |
+ base::RunLoop run_loop; |
+ connection_->set_connection_lost_closure(run_loop.QuitClosure()); |
+ run_loop.Run(); |
// It's very common for the client to cache the app and terminate on errors. |
// If we don't delete the client before the app we run the risk of the |
// client having a stale reference to the app and trying to use it. |