| 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/application/public/cpp/application_impl.h" | 5 #include "mojo/application/public/cpp/application_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 application_url, application_url, remote_services.Pass(), | 79 application_url, application_url, remote_services.Pass(), |
| 80 local_request.Pass(), allowed)); | 80 local_request.Pass(), allowed)); |
| 81 shell_->ConnectToApplication(request.Pass(), remote_services_proxy.Pass(), | 81 shell_->ConnectToApplication(request.Pass(), remote_services_proxy.Pass(), |
| 82 local_services.Pass(), filter.Pass(), | 82 local_services.Pass(), filter.Pass(), |
| 83 registry->GetConnectToApplicationCallback()); | 83 registry->GetConnectToApplicationCallback()); |
| 84 if (!delegate_->ConfigureOutgoingConnection(registry.get())) | 84 if (!delegate_->ConfigureOutgoingConnection(registry.get())) |
| 85 return nullptr; | 85 return nullptr; |
| 86 return registry.Pass(); | 86 return registry.Pass(); |
| 87 } | 87 } |
| 88 | 88 |
| 89 void ApplicationImpl::WaitForInitialize() { | 89 void ApplicationImpl::Initialize(ShellPtr shell, const mojo::String& url) { |
| 90 DCHECK(!shell_.is_bound()); | 90 shell_ = shell.Pass(); |
| 91 binding_.WaitForIncomingMethodCall(); | 91 shell_.set_connection_error_handler([this]() { OnConnectionError(); }); |
| 92 url_ = url; |
| 93 delegate_->Initialize(this); |
| 92 } | 94 } |
| 93 | 95 |
| 94 void ApplicationImpl::Quit() { | 96 void ApplicationImpl::Quit() { |
| 95 // We can't quit immediately, since there could be in-flight requests from the | 97 // We can't quit immediately, since there could be in-flight requests from the |
| 96 // shell. So check with it first. | 98 // shell. So check with it first. |
| 97 if (shell_) { | 99 if (shell_) { |
| 98 quit_requested_ = true; | 100 quit_requested_ = true; |
| 99 shell_->QuitApplication(); | 101 shell_->QuitApplication(); |
| 100 } else { | 102 } else { |
| 101 QuitNow(); | 103 QuitNow(); |
| 102 } | 104 } |
| 103 } | 105 } |
| 104 | 106 |
| 105 void ApplicationImpl::Initialize(ShellPtr shell, const mojo::String& url) { | |
| 106 shell_ = shell.Pass(); | |
| 107 shell_.set_connection_error_handler([this]() { OnConnectionError(); }); | |
| 108 url_ = url; | |
| 109 delegate_->Initialize(this); | |
| 110 } | |
| 111 | |
| 112 void ApplicationImpl::AcceptConnection( | 107 void ApplicationImpl::AcceptConnection( |
| 113 const String& requestor_url, | 108 const String& requestor_url, |
| 114 InterfaceRequest<ServiceProvider> services, | 109 InterfaceRequest<ServiceProvider> services, |
| 115 ServiceProviderPtr exposed_services, | 110 ServiceProviderPtr exposed_services, |
| 116 Array<String> allowed_interfaces, | 111 Array<String> allowed_interfaces, |
| 117 const String& url) { | 112 const String& url) { |
| 118 scoped_ptr<ApplicationConnection> registry(new internal::ServiceRegistry( | 113 scoped_ptr<ApplicationConnection> registry(new internal::ServiceRegistry( |
| 119 url, requestor_url, exposed_services.Pass(), services.Pass(), | 114 url, requestor_url, exposed_services.Pass(), services.Pass(), |
| 120 allowed_interfaces.To<std::set<std::string>>())); | 115 allowed_interfaces.To<std::set<std::string>>())); |
| 121 if (!delegate_->ConfigureIncomingConnection(registry.get())) | 116 if (!delegate_->ConfigureIncomingConnection(registry.get())) |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 } | 154 } |
| 160 | 155 |
| 161 void ApplicationImpl::UnbindConnections( | 156 void ApplicationImpl::UnbindConnections( |
| 162 InterfaceRequest<Application>* application_request, | 157 InterfaceRequest<Application>* application_request, |
| 163 ShellPtr* shell) { | 158 ShellPtr* shell) { |
| 164 *application_request = binding_.Unbind(); | 159 *application_request = binding_.Unbind(); |
| 165 shell->Bind(shell_.PassInterface()); | 160 shell->Bind(shell_.PassInterface()); |
| 166 } | 161 } |
| 167 | 162 |
| 168 } // namespace mojo | 163 } // namespace mojo |
| OLD | NEW |