| Index: mojo/application/run_application.cc
|
| diff --git a/mojo/application/run_application.cc b/mojo/application/run_application.cc
|
| index bee1f417939a36b57b26c3c4e50fae71f379565b..fdfb1b58f9d90b21a8b769b36933d9ea7d3b7187 100644
|
| --- a/mojo/application/run_application.cc
|
| +++ b/mojo/application/run_application.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/threading/thread_local_storage.h"
|
| #include "build/build_config.h"
|
| +#include "mojo/application/run_application_options_chromium.h"
|
| #include "mojo/message_pump/message_pump_mojo.h"
|
| #include "mojo/public/cpp/application/application_impl_base.h"
|
| #include "mojo/public/cpp/system/message_pipe.h"
|
| @@ -38,7 +39,8 @@ struct ResultHolder {
|
| } // namespace
|
|
|
| MojoResult RunMainApplication(MojoHandle application_request_handle,
|
| - ApplicationImplBase* application_impl) {
|
| + ApplicationImplBase* application_impl,
|
| + const RunApplicationOptions* options) {
|
| base::CommandLine::Init(0, nullptr);
|
| base::AtExitManager at_exit;
|
|
|
| @@ -48,20 +50,28 @@ MojoResult RunMainApplication(MojoHandle application_request_handle,
|
| base::debug::EnableInProcessStackDumping();
|
| #endif
|
|
|
| - return RunApplication(application_request_handle, application_impl);
|
| + return RunApplication(application_request_handle, application_impl, options);
|
| }
|
|
|
| MojoResult RunApplication(MojoHandle application_request_handle,
|
| - ApplicationImplBase* application_impl) {
|
| + ApplicationImplBase* application_impl,
|
| + const RunApplicationOptions* options) {
|
| DCHECK(!g_current_result_holder.Get());
|
|
|
| ResultHolder result_holder;
|
| g_current_result_holder.Set(&result_holder);
|
|
|
| - std::unique_ptr<base::MessageLoop> loop;
|
| - // TODO(vtl): Support other types of message loops. (That's why I'm leaving
|
| - // |loop| as a unique_ptr.)
|
| - loop.reset(new base::MessageLoop(common::MessagePumpMojo::Create()));
|
| + // Note: If |options| is non-null, it better point to a
|
| + // |RunApplicationOptionsChromium|.
|
| + base::MessageLoop::Type message_loop_type =
|
| + options
|
| + ? static_cast<const RunApplicationOptionsChromium*>(options)
|
| + ->message_loop_type
|
| + : base::MessageLoop::TYPE_CUSTOM;
|
| + std::unique_ptr<base::MessageLoop> loop(
|
| + (message_loop_type == base::MessageLoop::TYPE_CUSTOM)
|
| + ? new base::MessageLoop(common::MessagePumpMojo::Create())
|
| + : new base::MessageLoop(message_loop_type));
|
| application_impl->Bind(InterfaceRequest<Application>(
|
| MakeScopedHandle(MessagePipeHandle(application_request_handle))));
|
| loop->Run();
|
|
|