Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Side by Side Diff: services/shell/public/cpp/lib/connector_impl.cc

Issue 2090773003: Add ability to bind a different InterfaceRegistry/InterfaceProvider to an incoming Connection. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "services/shell/public/cpp/lib/connector_impl.h" 5 #include "services/shell/public/cpp/lib/connector_impl.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "services/shell/public/cpp/identity.h" 8 #include "services/shell/public/cpp/identity.h"
9 #include "services/shell/public/cpp/lib/connection_impl.h" 9 #include "services/shell/public/cpp/lib/connection_impl.h"
10 10
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 // a position to know who we're talking to. 53 // a position to know who we're talking to.
54 CapabilityRequest request; 54 CapabilityRequest request;
55 request.interfaces.insert("*"); 55 request.interfaces.insert("*");
56 mojom::InterfaceProviderPtr local_interfaces; 56 mojom::InterfaceProviderPtr local_interfaces;
57 mojom::InterfaceProviderRequest local_request = GetProxy(&local_interfaces); 57 mojom::InterfaceProviderRequest local_request = GetProxy(&local_interfaces);
58 mojom::InterfaceProviderPtr remote_interfaces; 58 mojom::InterfaceProviderPtr remote_interfaces;
59 mojom::InterfaceProviderRequest remote_request = GetProxy(&remote_interfaces); 59 mojom::InterfaceProviderRequest remote_request = GetProxy(&remote_interfaces);
60 std::unique_ptr<internal::ConnectionImpl> registry( 60 std::unique_ptr<internal::ConnectionImpl> registry(
61 new internal::ConnectionImpl( 61 new internal::ConnectionImpl(
62 params->target().name(), params->target(), mojom::kInvalidInstanceID, 62 params->target().name(), params->target(), mojom::kInvalidInstanceID,
63 std::move(remote_interfaces), std::move(local_request), request, 63 request, Connection::State::PENDING));
64 Connection::State::PENDING)); 64 if (params->exposed_interfaces()) {
65 params->exposed_interfaces()->Bind(std::move(local_request));
66 registry->set_exposed_interfaces(params->exposed_interfaces());
67 } else {
68 std::unique_ptr<InterfaceRegistry> exposed_interfaces(
69 new InterfaceRegistry(registry.get()));
70 exposed_interfaces->Bind(std::move(local_request));
71 registry->SetExposedInterfaces(std::move(exposed_interfaces));
72 }
73 if (params->remote_interfaces()) {
74 params->remote_interfaces()->Bind(std::move(remote_interfaces));
75 registry->set_remote_interfaces(params->remote_interfaces());
76 } else {
77 std::unique_ptr<InterfaceProvider> remote_interface_provider(
78 new InterfaceProvider);
79 remote_interface_provider->Bind(std::move(remote_interfaces));
80 registry->SetRemoteInterfaces(std::move(remote_interface_provider));
81 }
65 82
66 mojom::ShellClientPtr shell_client; 83 mojom::ShellClientPtr shell_client;
67 mojom::PIDReceiverRequest pid_receiver_request; 84 mojom::PIDReceiverRequest pid_receiver_request;
68 params->TakeClientProcessConnection(&shell_client, &pid_receiver_request); 85 params->TakeClientProcessConnection(&shell_client, &pid_receiver_request);
69 mojom::ClientProcessConnectionPtr client_process_connection; 86 mojom::ClientProcessConnectionPtr client_process_connection;
70 if (shell_client.is_bound() && pid_receiver_request.is_pending()) { 87 if (shell_client.is_bound() && pid_receiver_request.is_pending()) {
71 client_process_connection = mojom::ClientProcessConnection::New(); 88 client_process_connection = mojom::ClientProcessConnection::New();
72 client_process_connection->shell_client = 89 client_process_connection->shell_client =
73 shell_client.PassInterface().PassHandle(); 90 shell_client.PassInterface().PassHandle();
74 client_process_connection->pid_receiver_request = 91 client_process_connection->pid_receiver_request =
(...skipping 10 matching lines...) Expand all
85 return std::move(registry); 102 return std::move(registry);
86 } 103 }
87 104
88 std::unique_ptr<Connector> ConnectorImpl::Clone() { 105 std::unique_ptr<Connector> ConnectorImpl::Clone() {
89 mojom::ConnectorPtr connector; 106 mojom::ConnectorPtr connector;
90 connector_->Clone(GetProxy(&connector)); 107 connector_->Clone(GetProxy(&connector));
91 return base::WrapUnique(new ConnectorImpl(connector.PassInterface())); 108 return base::WrapUnique(new ConnectorImpl(connector.PassInterface()));
92 } 109 }
93 110
94 } // namespace shell 111 } // namespace shell
OLDNEW
« no previous file with comments | « services/shell/public/cpp/lib/connection_impl.cc ('k') | services/shell/public/cpp/lib/interface_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698