Home | History | Annotate | Download | only in lib
      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
     15 void ApplicationImpl::Terminate() {
     16   RunLoop::current()->Quit();
     17 }
     18 
     19 ApplicationRunner::ApplicationRunner(ApplicationDelegate* delegate)
     20     : delegate_(delegate) {}
     21 ApplicationRunner::~ApplicationRunner() { assert(!delegate_); }
     22 
     23 MojoResult 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