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_;