103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file. 403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/application/application_runner.h" 603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/application/application_delegate.h" 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/application/application_impl.h" 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/environment/environment.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "mojo/public/cpp/utility/run_loop.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace mojo { 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// static 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void ApplicationImpl::Terminate() { 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) RunLoop::current()->Quit(); 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)ApplicationRunner::ApplicationRunner(ApplicationDelegate* delegate) 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) : delegate_(delegate) {} 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)ApplicationRunner::~ApplicationRunner() { assert(!delegate_); } 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)MojoResult ApplicationRunner::Run(MojoHandle shell_handle) { 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) Environment env; 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) { 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) RunLoop loop; 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ApplicationImpl app(delegate_, 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) MakeScopedHandle(MessagePipeHandle(shell_handle))); 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) loop.Run(); 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) } 3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) delete delegate_; 3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) delegate_ = NULL; 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) return MOJO_RESULT_OK; 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace mojo 38