Add a mojo::RunApplication() for running implementations of ApplicationImplBase.
Also add a mojo::TerminateApplication() that works with it. And convert
some low-hanging fruit.
The API probably isn't final yet:
* As indicated by the TODO, RunApplication() should probably return a
MojoResult.
* Conversely, TerminateApplication() should probably take a MojoResult.
* I should probably have an additional "RunMainApplication()"
(MainRunApplication()?) for the main thread/MojoMain() case.
* Then I can separate out the APIs from the implementation, and the
"chromium" versions can implement the same API.
* (The main/non-main cases are the same in the "standalone" case, but in
the "chromium" version, the main case has to do more stuff.)
R=vardhan@google.com
Review URL: https://codereview.chromium.org/2004493002 .
diff --git a/services/test_service/test_service_impl.cc b/services/test_service/test_service_impl.cc
index 27487c8..bbd6a27 100644
--- a/services/test_service/test_service_impl.cc
+++ b/services/test_service/test_service_impl.cc
@@ -7,7 +7,6 @@
#include "base/bind.h"
#include "base/i18n/time_formatting.h"
#include "base/strings/utf_string_conversions.h"
-#include "mojo/public/cpp/application/application_impl.h"
#include "mojo/public/cpp/application/connect.h"
#include "services/test_service/test_service_application.h"
#include "services/test_service/test_time_service_impl.h"
@@ -16,18 +15,14 @@
namespace mojo {
namespace test {
-TestServiceImpl::TestServiceImpl(ApplicationImpl* app_impl,
- TestServiceApplication* application,
+TestServiceImpl::TestServiceImpl(TestServiceApplication* application,
InterfaceRequest<TestService> request)
- : application_(application),
- app_impl_(app_impl),
- binding_(this, request.Pass()) {
+ : application_(application), binding_(this, request.Pass()) {
binding_.set_connection_error_handler(
[this]() { application_->ReleaseRef(); });
}
-TestServiceImpl::~TestServiceImpl() {
-}
+TestServiceImpl::~TestServiceImpl() {}
void TestServiceImpl::Ping(const mojo::Callback<void()>& callback) {
if (tracking_)
@@ -44,7 +39,7 @@
void TestServiceImpl::ConnectToAppAndGetTime(
const mojo::String& app_url,
const mojo::Callback<void(int64_t)>& callback) {
- ConnectToService(app_impl_->shell(), app_url, GetProxy(&time_service_));
+ ConnectToService(application_->shell(), app_url, GetProxy(&time_service_));
if (tracking_) {
tracking_->RecordNewRequest();
time_service_->StartTrackingRequests(mojo::Callback<void()>());
@@ -55,7 +50,7 @@
void TestServiceImpl::StartTrackingRequests(
const mojo::Callback<void()>& callback) {
TestRequestTrackerPtr tracker;
- ConnectToService(app_impl_->shell(), "mojo:test_request_tracker_app",
+ ConnectToService(application_->shell(), "mojo:test_request_tracker_app",
GetProxy(&tracker));
tracking_.reset(new TrackedService(tracker.Pass(), Name_, callback));
}