| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "mojo/public/cpp/application/application_impl.h" | 5 #include "mojo/public/cpp/application/application_impl.h" |
| 6 | 6 |
| 7 #include "mojo/public/cpp/application/application_delegate.h" | 7 #include "mojo/public/cpp/application/application_delegate.h" |
| 8 #include "mojo/public/cpp/application/lib/service_registry.h" | 8 #include "mojo/public/cpp/application/lib/service_registry.h" |
| 9 #include "mojo/public/cpp/bindings/interface_ptr.h" | 9 #include "mojo/public/cpp/bindings/interface_ptr.h" |
| 10 #include "mojo/public/cpp/environment/logging.h" | 10 #include "mojo/public/cpp/environment/logging.h" |
| 11 | 11 |
| 12 namespace mojo { | 12 namespace mojo { |
| 13 | 13 |
| 14 class ApplicationImpl::ShellPtrWatcher : public ErrorHandler { | 14 class ApplicationImpl::ShellPtrWatcher : public ErrorHandler { |
| 15 public: | 15 public: |
| 16 ShellPtrWatcher(ApplicationImpl* impl) | 16 ShellPtrWatcher(ApplicationImpl* impl) |
| 17 : impl_(impl) {} | 17 : impl_(impl) {} |
| 18 | 18 |
| 19 virtual ~ShellPtrWatcher() {} | 19 virtual ~ShellPtrWatcher() {} |
| 20 | 20 |
| 21 virtual void OnConnectionError() override { impl_->OnShellError(); } | 21 virtual void OnConnectionError() override { impl_->OnShellError(); } |
| 22 | 22 |
| 23 private: | 23 private: |
| 24 ApplicationImpl* impl_; | 24 ApplicationImpl* impl_; |
| 25 MOJO_DISALLOW_COPY_AND_ASSIGN(ShellPtrWatcher); | 25 MOJO_DISALLOW_COPY_AND_ASSIGN(ShellPtrWatcher); |
| 26 }; | 26 }; |
| 27 | 27 |
| 28 ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, | 28 ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, |
| 29 ScopedMessagePipeHandle shell_handle) | 29 ScopedMessagePipeHandle shell_handle) |
| 30 : initialized_(false), delegate_(delegate), shell_watch_(NULL) { | 30 : initialized_(false), delegate_(delegate), shell_watch_(nullptr) { |
| 31 BindShell(shell_handle.Pass()); | 31 BindShell(shell_handle.Pass()); |
| 32 } | 32 } |
| 33 | 33 |
| 34 ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, | 34 ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, |
| 35 MojoHandle shell_handle) | 35 MojoHandle shell_handle) |
| 36 : initialized_(false), delegate_(delegate), shell_watch_(NULL) { | 36 : initialized_(false), delegate_(delegate), shell_watch_(nullptr) { |
| 37 BindShell(MakeScopedHandle(MessagePipeHandle(shell_handle))); | 37 BindShell(MakeScopedHandle(MessagePipeHandle(shell_handle))); |
| 38 } | 38 } |
| 39 | 39 |
| 40 void ApplicationImpl::ClearConnections() { | 40 void ApplicationImpl::ClearConnections() { |
| 41 for (ServiceRegistryList::iterator i(incoming_service_registries_.begin()); | 41 for (ServiceRegistryList::iterator i(incoming_service_registries_.begin()); |
| 42 i != incoming_service_registries_.end(); ++i) | 42 i != incoming_service_registries_.end(); ++i) |
| 43 delete *i; | 43 delete *i; |
| 44 for (ServiceRegistryList::iterator i(outgoing_service_registries_.begin()); | 44 for (ServiceRegistryList::iterator i(outgoing_service_registries_.begin()); |
| 45 i != outgoing_service_registries_.end(); ++i) | 45 i != outgoing_service_registries_.end(); ++i) |
| 46 delete *i; | 46 delete *i; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 64 const String& application_url) { | 64 const String& application_url) { |
| 65 MOJO_CHECK(initialized_); | 65 MOJO_CHECK(initialized_); |
| 66 ServiceProviderPtr out_service_provider; | 66 ServiceProviderPtr out_service_provider; |
| 67 shell_->ConnectToApplication(application_url, Get(&out_service_provider)); | 67 shell_->ConnectToApplication(application_url, Get(&out_service_provider)); |
| 68 internal::ServiceRegistry* registry = new internal::ServiceRegistry( | 68 internal::ServiceRegistry* registry = new internal::ServiceRegistry( |
| 69 this, | 69 this, |
| 70 application_url, | 70 application_url, |
| 71 out_service_provider.Pass()); | 71 out_service_provider.Pass()); |
| 72 if (!delegate_->ConfigureOutgoingConnection(registry)) { | 72 if (!delegate_->ConfigureOutgoingConnection(registry)) { |
| 73 delete registry; | 73 delete registry; |
| 74 return NULL; | 74 return nullptr; |
| 75 } | 75 } |
| 76 outgoing_service_registries_.push_back(registry); | 76 outgoing_service_registries_.push_back(registry); |
| 77 return registry; | 77 return registry; |
| 78 } | 78 } |
| 79 | 79 |
| 80 void ApplicationImpl::BindShell(ScopedMessagePipeHandle shell_handle) { | 80 void ApplicationImpl::BindShell(ScopedMessagePipeHandle shell_handle) { |
| 81 shell_watch_ = new ShellPtrWatcher(this); | 81 shell_watch_ = new ShellPtrWatcher(this); |
| 82 shell_.Bind(shell_handle.Pass()); | 82 shell_.Bind(shell_handle.Pass()); |
| 83 shell_.set_client(this); | 83 shell_.set_client(this); |
| 84 shell_.set_error_handler(shell_watch_); | 84 shell_.set_error_handler(shell_watch_); |
| 85 } | 85 } |
| 86 | 86 |
| 87 void ApplicationImpl::AcceptConnection(const String& requestor_url, | 87 void ApplicationImpl::AcceptConnection(const String& requestor_url, |
| 88 ServiceProviderPtr service_provider) { | 88 ServiceProviderPtr service_provider) { |
| 89 internal::ServiceRegistry* registry = new internal::ServiceRegistry( | 89 internal::ServiceRegistry* registry = new internal::ServiceRegistry( |
| 90 this, requestor_url, service_provider.Pass()); | 90 this, requestor_url, service_provider.Pass()); |
| 91 if (!delegate_->ConfigureIncomingConnection(registry)) { | 91 if (!delegate_->ConfigureIncomingConnection(registry)) { |
| 92 delete registry; | 92 delete registry; |
| 93 return; | 93 return; |
| 94 } | 94 } |
| 95 incoming_service_registries_.push_back(registry); | 95 incoming_service_registries_.push_back(registry); |
| 96 } | 96 } |
| 97 | 97 |
| 98 } // namespace mojo | 98 } // namespace mojo |
| OLD | NEW |