| Index: services/shell/public/cpp/interface_provider.h
|
| diff --git a/services/shell/public/cpp/interface_provider.h b/services/shell/public/cpp/interface_provider.h
|
| index 5cf1d95ace4480664869c0d74602c80842f9af64..01c3c8ca449969484961b9e371fb40637ede58e1 100644
|
| --- a/services/shell/public/cpp/interface_provider.h
|
| +++ b/services/shell/public/cpp/interface_provider.h
|
| @@ -5,6 +5,7 @@
|
| #ifndef SERVICES_SHELL_PUBLIC_CPP_INTERFACE_PROVIDER_H_
|
| #define SERVICES_SHELL_PUBLIC_CPP_INTERFACE_PROVIDER_H_
|
|
|
| +#include "base/bind.h"
|
| #include "services/shell/public/interfaces/interface_provider.mojom.h"
|
|
|
| namespace shell {
|
| @@ -79,6 +80,19 @@ class InterfaceProvider {
|
| void GetInterface(const std::string& name,
|
| mojo::ScopedMessagePipeHandle request_handle);
|
|
|
| + // Returns a callback to GetInterface<Interface>(). This can be passed to
|
| + // InterfaceRegistry::AddInterface() to forward requests.
|
| + template <typename Interface>
|
| + base::Callback<void(mojo::InterfaceRequest<Interface>)>
|
| + CreateInterfaceFactory() {
|
| + // InterfaceProvider::GetInterface() is overloaded, so static_cast to select
|
| + // the overload that takes an mojo::InterfaceRequest<Interface>.
|
| + return base::Bind(static_cast<void (InterfaceProvider::*)(
|
| + mojo::InterfaceRequest<Interface>)>(
|
| + &InterfaceProvider::GetInterface<Interface>),
|
| + GetWeakPtr());
|
| + }
|
| +
|
| private:
|
| void SetBinderForName(
|
| const std::string& name,
|
|
|