| Index: mojo/public/cpp/application/lib/application_impl.cc
|
| diff --git a/mojo/public/cpp/application/lib/application_impl.cc b/mojo/public/cpp/application/lib/application_impl.cc
|
| index f5831aafa8ea8e2cd2ba004147f8eb92fe8def88..557a615c88576c3aff07280a57f544872e916a2f 100644
|
| --- a/mojo/public/cpp/application/lib/application_impl.cc
|
| +++ b/mojo/public/cpp/application/lib/application_impl.cc
|
| @@ -10,28 +10,43 @@
|
|
|
| namespace mojo {
|
|
|
| +ApplicationImpl::ShellPtrWatcher::ShellPtrWatcher(ApplicationImpl* impl)
|
| + : impl_(impl) {}
|
| +
|
| +ApplicationImpl::ShellPtrWatcher::~ShellPtrWatcher() {}
|
| +
|
| +void ApplicationImpl::ShellPtrWatcher::OnConnectionError() {
|
| + impl_->OnShellError();
|
| +}
|
| +
|
| ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate)
|
| - : delegate_(delegate) {}
|
| + : delegate_(delegate), shell_watch_(this) {}
|
|
|
| ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate,
|
| ScopedMessagePipeHandle shell_handle)
|
| - : delegate_(delegate) {
|
| + : delegate_(delegate), shell_watch_(this) {
|
| BindShell(shell_handle.Pass());
|
| }
|
|
|
| ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate,
|
| MojoHandle shell_handle)
|
| - : delegate_(delegate) {
|
| + : delegate_(delegate), shell_watch_(this) {
|
| BindShell(shell_handle);
|
| }
|
|
|
| -ApplicationImpl::~ApplicationImpl() {
|
| +void ApplicationImpl::ClearConnections() {
|
| for (ServiceRegistryList::iterator i(incoming_service_registries_.begin());
|
| i != incoming_service_registries_.end(); ++i)
|
| delete *i;
|
| for (ServiceRegistryList::iterator i(outgoing_service_registries_.begin());
|
| i != outgoing_service_registries_.end(); ++i)
|
| delete *i;
|
| + incoming_service_registries_.clear();
|
| + outgoing_service_registries_.clear();
|
| +}
|
| +
|
| +ApplicationImpl::~ApplicationImpl() {
|
| + ClearConnections();
|
| }
|
|
|
| ApplicationConnection* ApplicationImpl::ConnectToApplication(
|
| @@ -53,6 +68,7 @@ ApplicationConnection* ApplicationImpl::ConnectToApplication(
|
| void ApplicationImpl::BindShell(ScopedMessagePipeHandle shell_handle) {
|
| shell_.Bind(shell_handle.Pass());
|
| shell_.set_client(this);
|
| + shell_.set_error_handler(&shell_watch_);
|
| delegate_->Initialize(this);
|
| }
|
|
|
|
|