Chromium Code Reviews| Index: mojo/application/public/cpp/lib/application_impl.cc |
| diff --git a/mojo/application/public/cpp/lib/application_impl.cc b/mojo/application/public/cpp/lib/application_impl.cc |
| index 200bce4083a13c223f4f06e5d1314f7bf2d3bb44..416daa4f51e43f59fa585d088f411c38074442f6 100644 |
| --- a/mojo/application/public/cpp/lib/application_impl.cc |
| +++ b/mojo/application/public/cpp/lib/application_impl.cc |
| @@ -23,6 +23,18 @@ void DefaultTerminationClosure() { |
| base::MessageLoop::current()->Quit(); |
| } |
| +template <typename E, typename T> |
| +struct TypeConverter < std::set<E>, Array<T> > { |
|
sky
2015/07/22 15:57:44
You shouldn't need the extra spaces anymore, eg <s
|
| + static std::set<E> Convert(const Array<T>& input) { |
| + std::set<E> result; |
| + if (!input.is_null()) { |
| + for (size_t i = 0; i < input.size(); ++i) |
| + result.insert(TypeConverter<E, T>::Convert(input[i])); |
| + } |
| + return result; |
| + } |
| +}; |
| + |
| } // namespace |
| ApplicationImpl::ApplicationImpl(ApplicationDelegate* delegate, |
| @@ -65,7 +77,8 @@ ApplicationImpl::~ApplicationImpl() { |
| } |
| ApplicationConnection* ApplicationImpl::ConnectToApplication( |
| - mojo::URLRequestPtr request) { |
| + mojo::URLRequestPtr request, |
| + CapabilityFilterPtr filter) { |
| if (!shell_) |
| return nullptr; |
| ServiceProviderPtr local_services; |
| @@ -73,10 +86,10 @@ ApplicationConnection* ApplicationImpl::ConnectToApplication( |
| ServiceProviderPtr remote_services; |
| std::string application_url = request->url.To<std::string>(); |
| shell_->ConnectToApplication(request.Pass(), GetProxy(&remote_services), |
| - local_services.Pass()); |
| + local_services.Pass(), filter.Pass()); |
| internal::ServiceRegistry* registry = new internal::ServiceRegistry( |
| this, application_url, application_url, remote_services.Pass(), |
| - local_request.Pass()); |
| + local_request.Pass(), std::set<std::string>()); |
| if (!delegate_->ConfigureOutgoingConnection(registry)) { |
| registry->CloseConnection(); |
| return nullptr; |
| @@ -141,9 +154,11 @@ void ApplicationImpl::AcceptConnection( |
| const String& requestor_url, |
| InterfaceRequest<ServiceProvider> services, |
| ServiceProviderPtr exposed_services, |
| + Array<String> allowed_interfaces, |
| const String& url) { |
| internal::ServiceRegistry* registry = new internal::ServiceRegistry( |
| - this, url, requestor_url, exposed_services.Pass(), services.Pass()); |
| + this, url, requestor_url, exposed_services.Pass(), services.Pass(), |
| + allowed_interfaces.To<std::set<std::string> >()); |
|
sky
2015/07/22 15:57:45
nit: '> >' -> '>>'
|
| if (!delegate_->ConfigureIncomingConnection(registry)) { |
| registry->CloseConnection(); |
| return; |