1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "mojo/public/cpp/application/application_runner.h" 6 7 #include "mojo/public/cpp/application/application_delegate.h" 8 #include "mojo/public/cpp/application/application_impl.h" 9 #include "mojo/public/cpp/environment/environment.h" 10 #include "mojo/public/cpp/utility/run_loop.h" 11 12 namespace mojo { 13 14 // static Terminate()15void ApplicationImpl::Terminate() { 16 RunLoop::current()->Quit(); 17 } 18 ApplicationRunner(ApplicationDelegate * delegate)19ApplicationRunner::ApplicationRunner(ApplicationDelegate* delegate) 20 : delegate_(delegate) {} ~ApplicationRunner()21ApplicationRunner::~ApplicationRunner() { assert(!delegate_); } 22 Run(MojoHandle shell_handle)23MojoResult ApplicationRunner::Run(MojoHandle shell_handle) { 24 Environment env; 25 { 26 RunLoop loop; 27 ApplicationImpl app(delegate_, 28 MakeScopedHandle(MessagePipeHandle(shell_handle))); 29 loop.Run(); 30 } 31 32 delete delegate_; 33 delegate_ = NULL; 34 return MOJO_RESULT_OK; 35 } 36 37 } // namespace mojo 38