Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1048)

Unified Diff: mojo/application/run_application.cc

Issue 2015643002: Add (optional) options to Run[Main]Application(). (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: doh Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();

Powered by Google App Engine
This is Rietveld 408576698