Index: ipc/ipc_channel_mojo.cc |
diff --git a/ipc/ipc_channel_mojo.cc b/ipc/ipc_channel_mojo.cc |
index 22efa3a335f6a9594eda2dccad69497dc8579b80..70a12f4f37e07edce6bbf238bd85358f7dc06d47 100644 |
--- a/ipc/ipc_channel_mojo.cc |
+++ b/ipc/ipc_channel_mojo.cc |
@@ -307,6 +307,14 @@ void ChannelMojo::OnBootstrapError() { |
listener_->OnChannelError(); |
} |
+void ChannelMojo::OnAssociatedInterfaceRequest( |
+ const std::string& name, |
+ mojo::ScopedInterfaceEndpointHandle handle) { |
+ auto iter = associated_interfaces_.find(name); |
+ if (iter != associated_interfaces_.end()) |
+ iter->second.Run(std::move(handle)); |
+} |
+ |
void ChannelMojo::InitMessageReader(mojom::ChannelAssociatedPtrInfo sender, |
mojom::ChannelAssociatedRequest receiver, |
base::ProcessId peer_pid) { |
@@ -392,6 +400,9 @@ base::ProcessId ChannelMojo::GetSelfPID() const { |
return bootstrap_->GetSelfPID(); |
} |
+Channel::AssociatedInterfaceSupport* |
+ChannelMojo::GetAssociatedInterfaceSupport() { return this; } |
+ |
void ChannelMojo::OnMessageReceived(const Message& message) { |
TRACE_EVENT2("ipc,toplevel", "ChannelMojo::OnMessageReceived", |
"class", IPC_MESSAGE_ID_CLASS(message.type()), |
@@ -468,4 +479,23 @@ MojoResult ChannelMojo::WriteToMessageAttachmentSet( |
return MOJO_RESULT_OK; |
} |
+mojo::AssociatedGroup* ChannelMojo::GetAssociatedGroup() { |
+ DCHECK(bootstrap_); |
+ return bootstrap_->GetAssociatedGroup(); |
+} |
+ |
+void ChannelMojo::AddGenericAssociatedInterface( |
+ const std::string& name, |
+ const GenericAssociatedInterfaceFactory& factory) { |
+ auto result = associated_interfaces_.insert({ name, factory }); |
+ DCHECK(result.second); |
+} |
+ |
+void ChannelMojo::GetGenericRemoteAssociatedInterface( |
+ const std::string& name, |
+ mojo::ScopedInterfaceEndpointHandle handle) { |
+ DCHECK(message_reader_); |
+ message_reader_->GetRemoteInterface(name, std::move(handle)); |
+} |
+ |
} // namespace IPC |