Add ApplicationImplBase::Bind().
(And make the constructor not take an Application request.)
This is to allow implementations to be instantiated before the
message/run loop.
R=vardhan@google.com
Review URL: https://codereview.chromium.org/1993743004 .
diff --git a/mojo/public/cpp/application/application_impl_base.h b/mojo/public/cpp/application/application_impl_base.h
index 04109d7..8d3cbf6 100644
--- a/mojo/public/cpp/application/application_impl_base.h
+++ b/mojo/public/cpp/application/application_impl_base.h
@@ -31,10 +31,14 @@
// use this class in the current setup).
class ApplicationImplBase : public Application {
public:
- explicit ApplicationImplBase(
- InterfaceRequest<Application> application_request);
+ ApplicationImplBase();
~ApplicationImplBase() override;
+ // Binds the given |Application| request to this object. This must be done
+ // with the message (run) loop available/running, and this will cause this
+ // object to start serving requests (via that message loop).
+ void Bind(InterfaceRequest<Application> application_request);
+
// Quits the main run loop for this application.
// TODO(vtl): This is implemented in application_runner.cc (for example). Its
// presence here is pretty dubious.
diff --git a/mojo/public/cpp/application/lib/application_impl.cc b/mojo/public/cpp/application/lib/application_impl.cc
index 194c942..a9a7e58 100644
--- a/mojo/public/cpp/application/lib/application_impl.cc
+++ b/mojo/public/cpp/application/lib/application_impl.cc
@@ -10,7 +10,9 @@
ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate,
InterfaceRequest<Application> request)
- : ApplicationImplBase(request.Pass()), delegate_(delegate) {}
+ : delegate_(delegate) {
+ Bind(request.Pass());
+}
ApplicationImpl::~ApplicationImpl() {}
diff --git a/mojo/public/cpp/application/lib/application_impl_base.cc b/mojo/public/cpp/application/lib/application_impl_base.cc
index a5e90d6..544c262 100644
--- a/mojo/public/cpp/application/lib/application_impl_base.cc
+++ b/mojo/public/cpp/application/lib/application_impl_base.cc
@@ -13,12 +13,15 @@
namespace mojo {
-ApplicationImplBase::ApplicationImplBase(
- InterfaceRequest<Application> application_request)
- : application_binding_(this, application_request.Pass()) {}
+ApplicationImplBase::ApplicationImplBase() : application_binding_(this) {}
ApplicationImplBase::~ApplicationImplBase() {}
+void ApplicationImplBase::Bind(
+ InterfaceRequest<Application> application_request) {
+ application_binding_.Bind(application_request.Pass());
+}
+
bool ApplicationImplBase::HasArg(const std::string& arg) const {
return std::find(args_.begin(), args_.end(), arg) != args_.end();
}