Yet more ApplicationDelegate -> ApplicationImplBase conversion. Almost there. R=vardhan@google.com Review URL: https://codereview.chromium.org/2015363003 .
diff --git a/apps/benchmark/benchmark_app.cc b/apps/benchmark/benchmark_app.cc index 3e2ea0b..87b5ec3 100644 --- a/apps/benchmark/benchmark_app.cc +++ b/apps/benchmark/benchmark_app.cc
@@ -19,11 +19,11 @@ #include "base/strings/string_util.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/application_impl.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/public/cpp/application/connect.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/bindings/interface_handle.h" #include "mojo/public/interfaces/application/service_provider.mojom.h" #include "mojo/services/tracing/interfaces/tracing.mojom.h" @@ -31,18 +31,18 @@ namespace benchmark { namespace { -class BenchmarkApp : public mojo::ApplicationDelegate, +class BenchmarkApp : public mojo::ApplicationImplBase, public TraceCollectorClient::Receiver { public: BenchmarkApp() {} ~BenchmarkApp() override {} - // mojo:ApplicationDelegate: - void Initialize(mojo::ApplicationImpl* app) override { + // mojo:ApplicationImplBase: + void OnInitialize() override { // Parse command-line arguments. - if (!GetRunArgs(app->args(), &args_)) { + if (!GetRunArgs(args(), &args_)) { LOG(ERROR) << "Failed to parse the input arguments."; - mojo::ApplicationImpl::Terminate(); + mojo::TerminateApplication(MOJO_RESULT_INVALID_ARGUMENT); return; } @@ -57,8 +57,7 @@ // Connect to trace collector, which will fetch the trace events produced by // the app being benchmarked. tracing::TraceCollectorPtr trace_collector; - mojo::ConnectToService(app->shell(), "mojo:tracing", - GetProxy(&trace_collector)); + mojo::ConnectToService(shell(), "mojo:tracing", GetProxy(&trace_collector)); trace_collector_client_.reset( new TraceCollectorClient(this, trace_collector.Pass())); trace_collector_client_->Start(categories_str); @@ -66,7 +65,7 @@ // Start tracing the application with 1 sec of delay. base::MessageLoop::current()->PostDelayedTask( FROM_HERE, base::Bind(&BenchmarkApp::StartTracedApplication, - base::Unretained(this), app), + base::Unretained(this)), base::TimeDelta::FromSeconds(1)); } @@ -85,12 +84,12 @@ return base::JoinString(unique_categories, ","); } - void StartTracedApplication(mojo::ApplicationImpl* app) { + void StartTracedApplication() { // Record the time origin for measurements just before connecting to the app // being benchmarked. time_origin_ = base::TimeTicks::FromInternalValue(MojoGetTimeTicksNow()); - app->shell()->ConnectToApplication( - args_.app, GetProxy(&traced_app_connection_), nullptr); + shell()->ConnectToApplication(args_.app, GetProxy(&traced_app_connection_), + nullptr); // Post task to stop tracing when the time is up. base::MessageLoop::current()->PostDelayedTask( @@ -122,7 +121,7 @@ std::vector<Event> events; if (!GetEvents(trace_data, &events)) { LOG(ERROR) << "Failed to parse the trace data"; - mojo::ApplicationImpl::Terminate(); + mojo::TerminateApplication(MOJO_RESULT_UNKNOWN); return; } @@ -147,7 +146,7 @@ } else { printf("some measurements failed\n"); } - mojo::ApplicationImpl::Terminate(); + mojo::TerminateApplication(MOJO_RESULT_OK); } private: @@ -162,8 +161,9 @@ } // namespace benchmark MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new benchmark::BenchmarkApp); - auto ret = runner.Run(application_request); + mojo::ScopedChromiumInit init; + benchmark::BenchmarkApp benchmark_app; + auto ret = mojo::RunApplication(application_request, &benchmark_app); fflush(nullptr); return ret; }
diff --git a/examples/echo/echo_benchmark.cc b/examples/echo/echo_benchmark.cc index 30e8044..3d4f27d 100644 --- a/examples/echo/echo_benchmark.cc +++ b/examples/echo/echo_benchmark.cc
@@ -8,12 +8,12 @@ #include "base/strings/string_number_conversions.h" #include "base/trace_event/trace_event.h" #include "examples/echo/echo.mojom.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/common/tracing_impl.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/application_impl.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/public/cpp/application/connect.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/utility/run_loop.h" namespace mojo { @@ -24,24 +24,24 @@ static const base::TimeDelta kDelayTime = base::TimeDelta::FromMicroseconds(50); -class EchoClientDelegate; +class EchoClientApp; class EchoResponse { public: - EchoResponse(EchoClientDelegate* echo, int idx, bool traced) - : echoDelegate_(echo), idx_(idx), traced_(traced) {} + EchoResponse(EchoClientApp* echo, int idx, bool traced) + : echo_client_app_(echo), idx_(idx), traced_(traced) {} void Run(const String& value) const; private: - EchoClientDelegate* echoDelegate_; + EchoClientApp* echo_client_app_; int idx_; bool traced_; }; -class EchoClientDelegate : public ApplicationDelegate { +class EchoClientApp : public ApplicationImplBase { public: - EchoClientDelegate() + EchoClientApp() : warmup_(true), num_clients_(1), num_active_clients_(1), @@ -49,25 +49,24 @@ ending_(false), benchmark_duration_(base::TimeDelta::FromSeconds(10)) {} - void Initialize(ApplicationImpl* app) override { - tracing_.Initialize(app->shell(), &app->args()); + void OnInitialize() override { + tracing_.Initialize(shell(), &args()); - ParseArguments(app); + ParseArguments(); for (int i = 0; i < num_clients_; i++) { EchoPtr echo; if (use_dart_server_) { - ConnectToService(app->shell(), "mojo:dart_echo_server", - GetProxy(&echo)); + ConnectToService(shell(), "mojo:dart_echo_server", GetProxy(&echo)); } else { - ConnectToService(app->shell(), "mojo:echo_server", GetProxy(&echo)); + ConnectToService(shell(), "mojo:echo_server", GetProxy(&echo)); } echoClients_.push_back(echo.Pass()); } BeginEcho(0); base::MessageLoop::current()->PostDelayedTask( FROM_HERE, - base::Bind(&EchoClientDelegate::EndWarmup, base::Unretained(this)), + base::Bind(&EchoClientApp::EndWarmup, base::Unretained(this)), kWarmupTime); } @@ -77,12 +76,10 @@ idx = 0; } base::MessageLoop::current()->PostDelayedTask( - FROM_HERE, - base::Bind(&EchoClientDelegate::Run, base::Unretained(this), idx), + FROM_HERE, base::Bind(&EchoClientApp::Run, base::Unretained(this), idx), kDelayTime); base::MessageLoop::current()->PostDelayedTask( - FROM_HERE, - base::Bind(&EchoClientDelegate::EndRun, base::Unretained(this)), + FROM_HERE, base::Bind(&EchoClientApp::EndRun, base::Unretained(this)), benchmark_duration_); } @@ -129,10 +126,10 @@ return false; } - void ParseArguments(ApplicationImpl* app) { + void ParseArguments() { int benchmark_duration_seconds = 0; - for (size_t i = 0; i < app->args().size(); i++) { - const std::string& argument = app->args()[i]; + for (size_t i = 0; i < args().size(); i++) { + const std::string& argument = args()[i]; if (GetBoolArgument(argument, "--dart-server", &use_dart_server_)) { continue; } @@ -167,15 +164,15 @@ }; void EchoResponse::Run(const String& value) const { - echoDelegate_->EndEcho(idx_, traced_); - echoDelegate_->BeginEcho(idx_ + 1); + echo_client_app_->EndEcho(idx_, traced_); + echo_client_app_->BeginEcho(idx_ + 1); } } // namespace examples } // namespace mojo MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner( - new mojo::examples::EchoClientDelegate); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + mojo::examples::EchoClientApp echo_client_app; + return mojo::RunApplication(application_request, &echo_client_app); }
diff --git a/examples/forwarding_content_handler/forwarding_content_handler.cc b/examples/forwarding_content_handler/forwarding_content_handler.cc index cfc284a..e6d3531 100644 --- a/examples/forwarding_content_handler/forwarding_content_handler.cc +++ b/examples/forwarding_content_handler/forwarding_content_handler.cc
@@ -6,11 +6,12 @@ #include "base/macros.h" #include "base/memory/scoped_ptr.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/application/content_handler_factory.h" #include "mojo/data_pipe_utils/data_pipe_utils.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_delegate.h" +#include "mojo/public/cpp/application/application_impl_base.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/application/service_provider_impl.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/public/cpp/utility/run_loop.h" @@ -51,15 +52,14 @@ ShellPtr shell_; }; -class ForwardingContentHandler : public ApplicationDelegate, +class ForwardingContentHandler : public ApplicationImplBase, public ContentHandlerFactory::ManagedDelegate { public: ForwardingContentHandler() {} private: - // Overridden from ApplicationDelegate: - bool ConfigureIncomingConnection( - ServiceProviderImpl* service_provider_impl) override { + // Overridden from ApplicationImplBase: + bool OnAcceptConnection(ServiceProviderImpl* service_provider_impl) override { service_provider_impl->AddService<ContentHandler>( ContentHandlerFactory::GetInterfaceRequestHandler(this)); return true; @@ -87,7 +87,7 @@ } // namespace mojo MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner( - new mojo::examples::ForwardingContentHandler()); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + mojo::examples::ForwardingContentHandler forwarding_content_handler; + return mojo::RunApplication(application_request, &forwarding_content_handler); }
diff --git a/examples/trace_me/trace_me_app.cc b/examples/trace_me/trace_me_app.cc index 81887cf..6ab1913 100644 --- a/examples/trace_me/trace_me_app.cc +++ b/examples/trace_me/trace_me_app.cc
@@ -8,11 +8,11 @@ #include "base/threading/thread.h" #include "base/time/time.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/common/tracing_impl.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/application_impl.h" +#include "mojo/public/cpp/application/application_impl_base.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/application/service_provider_impl.h" // This is an example app that uses implementation of tracing from mojo/common @@ -44,16 +44,16 @@ kDoWorkDelay); } -class TraceMeApp : public mojo::ApplicationDelegate { +class TraceMeApp : public mojo::ApplicationImplBase { public: TraceMeApp() {} ~TraceMeApp() override {} - // mojo:ApplicationDelegate: - void Initialize(mojo::ApplicationImpl* app) override { + // mojo:ApplicationImplBase: + void OnInitialize() override { // Allow TracingImpl to connect to the central tracing service, advertising // its ability to provide trace events. - tracing_.Initialize(app->shell(), &app->args()); + tracing_.Initialize(shell(), &args()); TRACE_EVENT0("trace_me", "initialized"); @@ -61,8 +61,8 @@ FROM_HERE, base::Bind(&DoWork), kDoWorkDelay); } - // mojo:ApplicationDelegate: - bool ConfigureIncomingConnection( + // mojo:ApplicationImplBase: + bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override { TRACE_EVENT0("trace_me", "connected"); return true; @@ -76,6 +76,7 @@ } // namespace examples MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new examples::TraceMeApp); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + examples::TraceMeApp trace_me_app; + return mojo::RunApplication(application_request, &trace_me_app); }
diff --git a/mojo/application/run_application.cc b/mojo/application/run_application.cc index ea067d4..9f84b9e 100644 --- a/mojo/application/run_application.cc +++ b/mojo/application/run_application.cc
@@ -10,6 +10,7 @@ #include "base/command_line.h" #include "base/debug/stack_trace.h" #include "base/lazy_instance.h" +#include "base/logging.h" #include "base/message_loop/message_loop.h" #include "base/threading/thread_local.h" #include "build/build_config.h" @@ -73,7 +74,15 @@ } void TerminateApplication(MojoResult result) { - DCHECK(base::MessageLoop::current()->is_running()); + // TODO(vtl): Rather than asserting |...->is_running()|, just assert that we + // have one, since we may be called during message loop teardown. (The + // HandleWatcher is notified of the message loop's pending destruction, and + // triggers connection errors.) I should think about this some more. + DCHECK(base::MessageLoop::current()); + if (!base::MessageLoop::current()->is_running()) { + DLOG(WARNING) << "TerminateApplication() with message loop not running"; + return; + } base::MessageLoop::current()->Quit(); ResultHolder* result_holder = g_current_result_holder.Pointer()->Get();
diff --git a/services/debugger/debugger.cc b/services/debugger/debugger.cc index e642f1a..689e0c2 100644 --- a/services/debugger/debugger.cc +++ b/services/debugger/debugger.cc
@@ -8,12 +8,12 @@ #include "base/debug/profiler.h" #include "base/strings/string_number_conversions.h" #include "base/strings/stringprintf.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/data_pipe_utils/data_pipe_utils.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/application_impl.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/public/cpp/application/connect.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/services/http_server/cpp/http_server_util.h" #include "mojo/services/http_server/interfaces/http_server.mojom.h" @@ -29,26 +29,24 @@ namespace debugger { -class Debugger : public mojo::ApplicationDelegate, +class Debugger : public mojo::ApplicationImplBase, public http_server::HttpHandler { public: - Debugger() : is_tracing_(false), app_(nullptr), handler_binding_(this) {} + Debugger() : is_tracing_(false), handler_binding_(this) {} ~Debugger() override {} private: - // mojo::ApplicationDelegate: - void Initialize(mojo::ApplicationImpl* app) override { - app_ = app; - + // mojo::ApplicationImplBase: + void OnInitialize() override { // Format: --args-for="app_url command_port" - if (app->args().size() < 2) { + if (args().size() < 2) { LOG(ERROR) << "--args-for required to specify command_port"; - mojo::ApplicationImpl::Terminate(); + mojo::TerminateApplication(MOJO_RESULT_INVALID_ARGUMENT); return; } - base::StringToUint(app->args()[1], &command_port_); + base::StringToUint(args()[1], &command_port_); http_server::HttpServerFactoryPtr http_server_factory; - mojo::ConnectToService(app->shell(), "mojo:http_server", + mojo::ConnectToService(shell(), "mojo:http_server", GetProxy(&http_server_factory)); mojo::NetAddressPtr local_address(mojo::NetAddress::New()); @@ -118,8 +116,7 @@ } if (!tracing_) { - mojo::ConnectToService(app_->shell(), "mojo:tracing", - GetProxy(&tracing_)); + mojo::ConnectToService(shell(), "mojo:tracing", GetProxy(&tracing_)); } is_tracing_ = true; mojo::DataPipe pipe; @@ -146,7 +143,6 @@ } bool is_tracing_; - mojo::ApplicationImpl* app_; tracing::TraceCollectorPtr tracing_; uint32_t command_port_; @@ -161,7 +157,7 @@ } // namespace debugger MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new debugger::Debugger); - runner.set_message_loop_type(base::MessageLoop::TYPE_IO); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + debugger::Debugger debugger_app; + return mojo::RunApplication(application_request, &debugger_app); }
diff --git a/services/gfx/compositor/compositor_app.cc b/services/gfx/compositor/compositor_app.cc index bd05c8a..7f52199 100644 --- a/services/gfx/compositor/compositor_app.cc +++ b/services/gfx/compositor/compositor_app.cc
@@ -16,25 +16,23 @@ namespace compositor { -CompositorApp::CompositorApp() : app_impl_(nullptr) {} +CompositorApp::CompositorApp() {} CompositorApp::~CompositorApp() {} -void CompositorApp::Initialize(mojo::ApplicationImpl* app_impl) { - app_impl_ = app_impl; - +void CompositorApp::OnInitialize() { auto command_line = base::CommandLine::ForCurrentProcess(); - command_line->InitFromArgv(app_impl_->args()); + command_line->InitFromArgv(args()); logging::LoggingSettings settings; settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; logging::InitLogging(settings); - tracing_.Initialize(app_impl_->shell(), &app_impl_->args()); + tracing_.Initialize(shell(), &args()); engine_.reset(new CompositorEngine()); } -bool CompositorApp::ConfigureIncomingConnection( +bool CompositorApp::OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) { service_provider_impl->AddService<mojo::gfx::composition::Compositor>( [this](const mojo::ConnectionContext& connection_context,
diff --git a/services/gfx/compositor/compositor_app.h b/services/gfx/compositor/compositor_app.h index ceb0428..892ba2e 100644 --- a/services/gfx/compositor/compositor_app.h +++ b/services/gfx/compositor/compositor_app.h
@@ -8,28 +8,26 @@ #include <memory> #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "mojo/common/strong_binding_set.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/cpp/application/application_delegate.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/services/gfx/composition/interfaces/compositor.mojom.h" #include "services/gfx/compositor/compositor_engine.h" namespace compositor { // Compositor application entry point. -class CompositorApp : public mojo::ApplicationDelegate { +class CompositorApp : public mojo::ApplicationImplBase { public: CompositorApp(); ~CompositorApp() override; private: - // |ApplicationDelegate|: - void Initialize(mojo::ApplicationImpl* app_impl) override; - bool ConfigureIncomingConnection( + // |ApplicationImplBase|: + void OnInitialize() override; + bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override; - mojo::ApplicationImpl* app_impl_; mojo::TracingImpl tracing_; mojo::StrongBindingSet<mojo::gfx::composition::Compositor>
diff --git a/services/gfx/compositor/main.cc b/services/gfx/compositor/main.cc index e03e9ca..f3d9354 100644 --- a/services/gfx/compositor/main.cc +++ b/services/gfx/compositor/main.cc
@@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "mojo/application/application_runner_chromium.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" +#include "mojo/public/cpp/application/run_application.h" #include "services/gfx/compositor/compositor_app.h" MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new compositor::CompositorApp); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + compositor::CompositorApp compositor_app; + return mojo::RunApplication(application_request, &compositor_app); }
diff --git a/services/http_server/http_server_app.cc b/services/http_server/http_server_app.cc index c6d6b3c..780dd9c 100644 --- a/services/http_server/http_server_app.cc +++ b/services/http_server/http_server_app.cc
@@ -20,7 +20,7 @@ ~HttpServerApp() override {} private: - // ApplicationDelegate: + // ApplicationImplBase: bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override { service_provider_impl->AddService<HttpServerFactory>([this](
diff --git a/services/ui/input_manager/input_manager_app.cc b/services/ui/input_manager/input_manager_app.cc index d75969c..62d8ab7 100644 --- a/services/ui/input_manager/input_manager_app.cc +++ b/services/ui/input_manager/input_manager_app.cc
@@ -7,32 +7,27 @@ #include "base/command_line.h" #include "base/logging.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/application/service_provider_impl.h" #include "services/ui/input_manager/input_associate.h" namespace input_manager { -InputManagerApp::InputManagerApp() : app_impl_(nullptr) {} +InputManagerApp::InputManagerApp() {} InputManagerApp::~InputManagerApp() {} -void InputManagerApp::Initialize(mojo::ApplicationImpl* app_impl) { - app_impl_ = app_impl; - +void InputManagerApp::OnInitialize() { auto command_line = base::CommandLine::ForCurrentProcess(); - command_line->InitFromArgv(app_impl_->args()); + command_line->InitFromArgv(args()); logging::LoggingSettings settings; settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; logging::InitLogging(settings); - tracing_.Initialize(app_impl->shell(), &app_impl->args()); + tracing_.Initialize(shell(), &args()); } -bool InputManagerApp::ConfigureIncomingConnection( +bool InputManagerApp::OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) { service_provider_impl->AddService<mojo::ui::ViewAssociate>([this]( const mojo::ConnectionContext& connection_context,
diff --git a/services/ui/input_manager/input_manager_app.h b/services/ui/input_manager/input_manager_app.h index d0c13ac..36eb65e 100644 --- a/services/ui/input_manager/input_manager_app.h +++ b/services/ui/input_manager/input_manager_app.h
@@ -5,29 +5,26 @@ #ifndef SERVICES_UI_INPUT_MANAGER_INPUT_MANAGER_APP_H_ #define SERVICES_UI_INPUT_MANAGER_INPUT_MANAGER_APP_H_ -#include <memory> - #include "base/macros.h" #include "mojo/common/strong_binding_set.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/cpp/application/application_delegate.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/services/ui/views/interfaces/view_associates.mojom.h" namespace input_manager { // Input manager application entry point. -class InputManagerApp : public mojo::ApplicationDelegate { +class InputManagerApp : public mojo::ApplicationImplBase { public: InputManagerApp(); ~InputManagerApp() override; private: - // |ApplicationDelegate|: - void Initialize(mojo::ApplicationImpl* app_impl) override; - bool ConfigureIncomingConnection( + // |ApplicationImplBase|: + void OnInitialize() override; + bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override; - mojo::ApplicationImpl* app_impl_; mojo::TracingImpl tracing_; mojo::StrongBindingSet<mojo::ui::ViewAssociate> input_associates_;
diff --git a/services/ui/input_manager/main.cc b/services/ui/input_manager/main.cc index 286f898..ed3768a 100644 --- a/services/ui/input_manager/main.cc +++ b/services/ui/input_manager/main.cc
@@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "mojo/application/application_runner_chromium.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" +#include "mojo/public/cpp/application/run_application.h" #include "services/ui/input_manager/input_manager_app.h" MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new input_manager::InputManagerApp); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + input_manager::InputManagerApp input_manager_app; + return mojo::RunApplication(application_request, &input_manager_app); }
diff --git a/services/ui/launcher/launch_instance.cc b/services/ui/launcher/launch_instance.cc index ce3149e..6a95fdc 100644 --- a/services/ui/launcher/launch_instance.cc +++ b/services/ui/launcher/launch_instance.cc
@@ -5,25 +5,18 @@ #include "services/ui/launcher/launch_instance.h" #include "base/bind.h" -#include "base/command_line.h" #include "base/logging.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" -#include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_impl.h" -#include "mojo/public/cpp/application/connect.h" #include "services/ui/launcher/launcher_view_tree.h" namespace launcher { -LaunchInstance::LaunchInstance(mojo::ApplicationImpl* app_impl, - mojo::NativeViewportPtr viewport, +LaunchInstance::LaunchInstance(mojo::NativeViewportPtr viewport, mojo::ui::ViewProviderPtr view_provider, mojo::gfx::composition::Compositor* compositor, mojo::ui::ViewManager* view_manager, const base::Closure& shutdown_callback) - : app_impl_(app_impl), - viewport_(viewport.Pass()), + : viewport_(viewport.Pass()), view_provider_(view_provider.Pass()), compositor_(compositor), view_manager_(view_manager),
diff --git a/services/ui/launcher/launch_instance.h b/services/ui/launcher/launch_instance.h index 9e63db0..7f94617 100644 --- a/services/ui/launcher/launch_instance.h +++ b/services/ui/launcher/launch_instance.h
@@ -8,8 +8,6 @@ #include <memory> #include "base/callback.h" -#include "mojo/public/cpp/application/application_delegate.h" -#include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/bindings/binding.h" #include "mojo/services/gfx/composition/interfaces/compositor.mojom.h" #include "mojo/services/native_viewport/interfaces/native_viewport.mojom.h" @@ -23,8 +21,7 @@ class LaunchInstance : public mojo::NativeViewportEventDispatcher { public: - LaunchInstance(mojo::ApplicationImpl* app_impl, - mojo::NativeViewportPtr viewport, + LaunchInstance(mojo::NativeViewportPtr viewport, mojo::ui::ViewProviderPtr view_provider, mojo::gfx::composition::Compositor* compositor, mojo::ui::ViewManager* view_manager, @@ -44,12 +41,11 @@ void OnViewportMetricsChanged(mojo::ViewportMetricsPtr metrics); void RequestUpdatedViewportMetrics(); - mojo::ApplicationImpl* app_impl_; mojo::NativeViewportPtr viewport_; mojo::ui::ViewProviderPtr view_provider_; - mojo::gfx::composition::Compositor* compositor_; - mojo::ui::ViewManager* view_manager_; + mojo::gfx::composition::Compositor* const compositor_; + mojo::ui::ViewManager* const view_manager_; base::Closure shutdown_callback_; mojo::Binding<NativeViewportEventDispatcher>
diff --git a/services/ui/launcher/launcher_app.cc b/services/ui/launcher/launcher_app.cc index b29f831..0359d95 100644 --- a/services/ui/launcher/launcher_app.cc +++ b/services/ui/launcher/launcher_app.cc
@@ -8,29 +8,25 @@ #include "base/logging.h" #include "base/strings/string_split.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/application/connect.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/application/service_provider_impl.h" namespace launcher { -LauncherApp::LauncherApp() : app_impl_(nullptr), next_id_(0u) {} +LauncherApp::LauncherApp() : next_id_(0u) {} LauncherApp::~LauncherApp() {} -void LauncherApp::Initialize(mojo::ApplicationImpl* app_impl) { - app_impl_ = app_impl; - +void LauncherApp::OnInitialize() { auto command_line = base::CommandLine::ForCurrentProcess(); - command_line->InitFromArgv(app_impl_->args()); + command_line->InitFromArgv(args()); logging::LoggingSettings settings; settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; logging::InitLogging(settings); - tracing_.Initialize(app_impl_->shell(), &app_impl_->args()); + tracing_.Initialize(shell(), &args()); TRACE_EVENT0("launcher", __func__); InitCompositor(); @@ -43,14 +39,14 @@ } void LauncherApp::InitCompositor() { - mojo::ConnectToService(app_impl_->shell(), "mojo:compositor_service", + mojo::ConnectToService(shell(), "mojo:compositor_service", GetProxy(&compositor_)); compositor_.set_connection_error_handler(base::Bind( &LauncherApp::OnCompositorConnectionError, base::Unretained(this))); } void LauncherApp::InitViewManager() { - mojo::ConnectToService(app_impl_->shell(), "mojo:view_manager_service", + mojo::ConnectToService(shell(), "mojo:view_manager_service", GetProxy(&view_manager_)); view_manager_.set_connection_error_handler(base::Bind( &LauncherApp::OnViewManagerConnectionError, base::Unretained(this))); @@ -76,7 +72,7 @@ // Connect to the ViewAssociate. DVLOG(2) << "Connecting to ViewAssociate " << url; mojo::ui::ViewAssociatePtr view_associate; - mojo::ConnectToService(app_impl_->shell(), url, GetProxy(&view_associate)); + mojo::ConnectToService(shell(), url, GetProxy(&view_associate)); // Wire up the associate to the ViewManager. mojo::ui::ViewAssociateOwnerPtr view_associate_owner; @@ -91,7 +87,7 @@ view_manager_->FinishedRegisteringViewAssociates(); } -bool LauncherApp::ConfigureIncomingConnection( +bool LauncherApp::OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) { // Only present the launcher interface to the shell. if (service_provider_impl->connection_context().remote_url.empty()) { @@ -108,15 +104,15 @@ DVLOG(1) << "Launching " << application_url; mojo::NativeViewportPtr viewport; - mojo::ConnectToService(app_impl_->shell(), "mojo:native_viewport_service", + mojo::ConnectToService(shell(), "mojo:native_viewport_service", GetProxy(&viewport)); mojo::ui::ViewProviderPtr view_provider; - mojo::ConnectToService(app_impl_->shell(), application_url, - GetProxy(&view_provider)); + mojo::ConnectToService(shell(), application_url, GetProxy(&view_provider)); LaunchInternal(viewport.Pass(), view_provider.Pass()); } + void LauncherApp::LaunchOnViewport( mojo::InterfaceHandle<mojo::NativeViewport> viewport, mojo::InterfaceHandle<mojo::ui::ViewProvider> view_provider) { @@ -128,7 +124,7 @@ mojo::ui::ViewProviderPtr view_provider) { uint32_t next_id = next_id_++; std::unique_ptr<LaunchInstance> instance(new LaunchInstance( - app_impl_, viewport.Pass(), view_provider.Pass(), compositor_.get(), + viewport.Pass(), view_provider.Pass(), compositor_.get(), view_manager_.get(), base::Bind(&LauncherApp::OnLaunchTermination, base::Unretained(this), next_id))); instance->Launch(); @@ -138,23 +134,23 @@ void LauncherApp::OnLaunchTermination(uint32_t id) { launch_instances_.erase(id); if (launch_instances_.empty()) { - app_impl_->Terminate(); + mojo::TerminateApplication(MOJO_RESULT_OK); } } void LauncherApp::OnCompositorConnectionError() { LOG(ERROR) << "Exiting due to compositor connection error."; - app_impl_->Terminate(); + mojo::TerminateApplication(MOJO_RESULT_UNKNOWN); } void LauncherApp::OnViewManagerConnectionError() { LOG(ERROR) << "Exiting due to view manager connection error."; - app_impl_->Terminate(); + mojo::TerminateApplication(MOJO_RESULT_UNKNOWN); } void LauncherApp::OnViewAssociateConnectionError() { LOG(ERROR) << "Exiting due to view associate connection error."; - app_impl_->Terminate(); + mojo::TerminateApplication(MOJO_RESULT_UNKNOWN); }; } // namespace launcher
diff --git a/services/ui/launcher/launcher_app.h b/services/ui/launcher/launcher_app.h index e15ca4e..ab7d7ad 100644 --- a/services/ui/launcher/launcher_app.h +++ b/services/ui/launcher/launcher_app.h
@@ -7,27 +7,28 @@ #include <memory> #include <unordered_map> +#include <vector> #include "mojo/common/binding_set.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/cpp/application/application_delegate.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "services/ui/launcher/launch_instance.h" #include "services/ui/launcher/launcher.mojom.h" namespace launcher { -class LauncherApp : public mojo::ApplicationDelegate, public Launcher { +class LauncherApp : public mojo::ApplicationImplBase, public Launcher { public: LauncherApp(); ~LauncherApp() override; private: - // |ApplicationDelegate|: - void Initialize(mojo::ApplicationImpl* app_impl) override; + // |ApplicationImplBase|: + void OnInitialize() override; void InitCompositor(); void InitViewManager(); void InitViewAssociates(const std::string& associate_urls_command_line_param); - bool ConfigureIncomingConnection( + bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override; // |Launcher|: @@ -44,7 +45,6 @@ void OnViewManagerConnectionError(); void OnViewAssociateConnectionError(); - mojo::ApplicationImpl* app_impl_; mojo::TracingImpl tracing_; mojo::BindingSet<Launcher> bindings_;
diff --git a/services/ui/launcher/main.cc b/services/ui/launcher/main.cc index fa82e08..9ba77ad 100644 --- a/services/ui/launcher/main.cc +++ b/services/ui/launcher/main.cc
@@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "mojo/application/application_runner_chromium.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" +#include "mojo/public/cpp/application/run_application.h" #include "services/ui/launcher/launcher_app.h" MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new launcher::LauncherApp); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + launcher::LauncherApp launcher_app; + return mojo::RunApplication(application_request, &launcher_app); }
diff --git a/services/ui/view_manager/main.cc b/services/ui/view_manager/main.cc index dbfdade..f278090 100644 --- a/services/ui/view_manager/main.cc +++ b/services/ui/view_manager/main.cc
@@ -2,11 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "mojo/application/application_runner_chromium.h" +#include "mojo/environment/scoped_chromium_init.h" #include "mojo/public/c/system/main.h" +#include "mojo/public/cpp/application/run_application.h" #include "services/ui/view_manager/view_manager_app.h" MojoResult MojoMain(MojoHandle application_request) { - mojo::ApplicationRunnerChromium runner(new view_manager::ViewManagerApp); - return runner.Run(application_request); + mojo::ScopedChromiumInit init; + view_manager::ViewManagerApp view_manager_app; + return mojo::RunApplication(application_request, &view_manager_app); }
diff --git a/services/ui/view_manager/view_manager_app.cc b/services/ui/view_manager/view_manager_app.cc index 7a80178..ff5a201 100644 --- a/services/ui/view_manager/view_manager_app.cc +++ b/services/ui/view_manager/view_manager_app.cc
@@ -4,40 +4,33 @@ #include "services/ui/view_manager/view_manager_app.h" -#include <string> -#include <vector> - #include "base/command_line.h" #include "base/logging.h" #include "base/trace_event/trace_event.h" -#include "mojo/application/application_runner_chromium.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/c/system/main.h" -#include "mojo/public/cpp/application/application_impl.h" #include "mojo/public/cpp/application/connect.h" +#include "mojo/public/cpp/application/run_application.h" #include "mojo/public/cpp/application/service_provider_impl.h" #include "services/ui/view_manager/view_manager_impl.h" namespace view_manager { -ViewManagerApp::ViewManagerApp() : app_impl_(nullptr) {} +ViewManagerApp::ViewManagerApp() {} ViewManagerApp::~ViewManagerApp() {} -void ViewManagerApp::Initialize(mojo::ApplicationImpl* app_impl) { - app_impl_ = app_impl; - +void ViewManagerApp::OnInitialize() { auto command_line = base::CommandLine::ForCurrentProcess(); - command_line->InitFromArgv(app_impl_->args()); + command_line->InitFromArgv(args()); logging::LoggingSettings settings; settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG; logging::InitLogging(settings); - tracing_.Initialize(app_impl_->shell(), &app_impl_->args()); + tracing_.Initialize(shell(), &args()); // Connect to compositor. mojo::gfx::composition::CompositorPtr compositor; - mojo::ConnectToService(app_impl_->shell(), "mojo:compositor_service", + mojo::ConnectToService(shell(), "mojo:compositor_service", GetProxy(&compositor)); compositor.set_connection_error_handler(base::Bind( &ViewManagerApp::OnCompositorConnectionError, base::Unretained(this))); @@ -46,7 +39,7 @@ registry_.reset(new ViewRegistry(compositor.Pass())); } -bool ViewManagerApp::ConfigureIncomingConnection( +bool ViewManagerApp::OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) { service_provider_impl->AddService<mojo::ui::ViewManager>([this]( const mojo::ConnectionContext& connection_context, @@ -64,7 +57,7 @@ } void ViewManagerApp::Shutdown() { - app_impl_->Terminate(); + mojo::TerminateApplication(MOJO_RESULT_OK); } } // namespace view_manager
diff --git a/services/ui/view_manager/view_manager_app.h b/services/ui/view_manager/view_manager_app.h index 05e0844..f28ae7e 100644 --- a/services/ui/view_manager/view_manager_app.h +++ b/services/ui/view_manager/view_manager_app.h
@@ -10,7 +10,7 @@ #include "base/macros.h" #include "mojo/common/strong_binding_set.h" #include "mojo/common/tracing_impl.h" -#include "mojo/public/cpp/application/application_delegate.h" +#include "mojo/public/cpp/application/application_impl_base.h" #include "mojo/services/gfx/composition/interfaces/compositor.mojom.h" #include "mojo/services/ui/views/interfaces/view_manager.mojom.h" #include "services/ui/view_manager/view_registry.h" @@ -18,22 +18,21 @@ namespace view_manager { // View manager application entry point. -class ViewManagerApp : public mojo::ApplicationDelegate { +class ViewManagerApp : public mojo::ApplicationImplBase { public: ViewManagerApp(); ~ViewManagerApp() override; private: - // |ApplicationDelegate|: - void Initialize(mojo::ApplicationImpl* app_impl) override; - bool ConfigureIncomingConnection( + // |ApplicationImplBase|: + void OnInitialize() override; + bool OnAcceptConnection( mojo::ServiceProviderImpl* service_provider_impl) override; void OnCompositorConnectionError(); void Shutdown(); - mojo::ApplicationImpl* app_impl_; mojo::TracingImpl tracing_; mojo::StrongBindingSet<mojo::ui::ViewManager> view_managers_;