| Index: mojo/shell/native_application_support.h | 
| diff --git a/mojo/shell/native_application_support.h b/mojo/shell/native_application_support.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..572c089b426246b48e1b53deb280be2598827b32 | 
| --- /dev/null | 
| +++ b/mojo/shell/native_application_support.h | 
| @@ -0,0 +1,51 @@ | 
| +// Copyright 2014 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef SHELL_NATIVE_APPLICATION_SUPPORT_H_ | 
| +#define SHELL_NATIVE_APPLICATION_SUPPORT_H_ | 
| + | 
| +#include "base/native_library.h" | 
| +#include "mojo/public/cpp/bindings/interface_request.h" | 
| + | 
| +#if defined(OS_WIN) | 
| +#undef DELETE | 
| +#endif | 
| + | 
| +namespace base { | 
| +class FilePath; | 
| +} | 
| + | 
| +namespace mojo { | 
| + | 
| +class Application; | 
| + | 
| +namespace shell { | 
| + | 
| +enum class NativeApplicationCleanup { DELETE, DONT_DELETE }; | 
| + | 
| +// Loads the native Mojo application from the DSO specified by |app_path|. | 
| +// Returns the |base::NativeLibrary| for the application on success (or null on | 
| +// failure). If |cleanup| is |DELETE|, it will delete |app_path| (regardless of | 
| +// sucess or failure). | 
| +// | 
| +// Note: The caller may choose to eventually unload the returned DSO. If so, | 
| +// this should be done only after the thread on which |LoadNativeApplication()| | 
| +// and |RunNativeApplication()| were called has terminated, so that any | 
| +// thread-local destructors have been executed. | 
| +base::NativeLibrary LoadNativeApplication(const base::FilePath& app_path, | 
| +                                          NativeApplicationCleanup cleanup); | 
| + | 
| +// Runs the native Mojo application from the DSO that was loaded using | 
| +// |LoadNativeApplication()|; this tolerates |app_library| being null. This | 
| +// should be called on the same thread as |LoadNativeApplication()|. Returns | 
| +// true if |MojoMain()| was called (even if it returns an error), and false | 
| +// otherwise. | 
| +// TODO(vtl): Maybe this should also have a |MojoResult| as an out parameter? | 
| +bool RunNativeApplication(base::NativeLibrary app_library, | 
| +                          InterfaceRequest<Application> application_request); | 
| + | 
| +}  // namespace shell | 
| +}  // namespace mojo | 
| + | 
| +#endif  // SHELL_NATIVE_APPLICATION_SUPPORT_H_ | 
|  |