| Index: content/common/mojo/mojo_shell_connection_impl.cc
|
| diff --git a/content/common/mojo/mojo_shell_connection_impl.cc b/content/common/mojo/mojo_shell_connection_impl.cc
|
| index 93ba749fd178f6e4dffcdbda6db118f35ea842f5..6c5ef64a781e49dbfea18901945818a57531d393 100644
|
| --- a/content/common/mojo/mojo_shell_connection_impl.cc
|
| +++ b/content/common/mojo/mojo_shell_connection_impl.cc
|
| @@ -100,6 +100,32 @@ bool MojoShellConnectionImpl::AcceptConnection(shell::Connection* connection) {
|
| return accept;
|
| }
|
|
|
| +shell::InterfaceRegistry*
|
| +MojoShellConnectionImpl::GetInterfaceRegistryForConnection() {
|
| + // TODO(beng): This is really horrible since obviously subject to issues
|
| + // of ordering, but is no more horrible than this API is in general.
|
| + shell::InterfaceRegistry* registry = nullptr;
|
| + for (auto& client : embedded_shell_clients_) {
|
| + registry = client->GetInterfaceRegistryForConnection();
|
| + if (registry)
|
| + return registry;
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| +shell::InterfaceProvider*
|
| +MojoShellConnectionImpl::GetInterfaceProviderForConnection() {
|
| + // TODO(beng): This is really horrible since obviously subject to issues
|
| + // of ordering, but is no more horrible than this API is in general.
|
| + shell::InterfaceProvider* provider = nullptr;
|
| + for (auto& client : embedded_shell_clients_) {
|
| + provider = client->GetInterfaceProviderForConnection();
|
| + if (provider)
|
| + return provider;
|
| + }
|
| + return nullptr;
|
| +}
|
| +
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // MojoShellConnectionImpl,
|
| // shell::InterfaceFactory<shell::mojom::ShellClientFactory> implementation:
|
| @@ -145,7 +171,13 @@ void MojoShellConnectionImpl::SetConnectionLostClosure(
|
|
|
| void MojoShellConnectionImpl::AddEmbeddedShellClient(
|
| std::unique_ptr<shell::ShellClient> shell_client) {
|
| - embedded_shell_clients_.push_back(std::move(shell_client));
|
| + embedded_shell_clients_.push_back(shell_client.get());
|
| + owned_shell_clients_.push_back(std::move(shell_client));
|
| +}
|
| +
|
| +void MojoShellConnectionImpl::AddEmbeddedShellClient(
|
| + shell::ShellClient* shell_client) {
|
| + embedded_shell_clients_.push_back(shell_client);
|
| }
|
|
|
| void MojoShellConnectionImpl::AddEmbeddedService(
|
|
|