| 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
|
| deleted file mode 100644
|
| index 01c3c8ca449969484961b9e371fb40637ede58e1..0000000000000000000000000000000000000000
|
| --- a/services/shell/public/cpp/interface_provider.h
|
| +++ /dev/null
|
| @@ -1,122 +0,0 @@
|
| -// Copyright 2016 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#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 {
|
| -
|
| -// Encapsulates a mojom::InterfaceProviderPtr implemented in a remote
|
| -// application. Provides two main features:
|
| -// - a typesafe GetInterface() method for binding InterfacePtrs.
|
| -// - a testing API that allows local callbacks to be registered that bind
|
| -// requests for remote interfaces.
|
| -// An instance of this class is used by the GetInterface() methods on
|
| -// Connection.
|
| -class InterfaceProvider {
|
| - public:
|
| - using ForwardCallback = base::Callback<void(const std::string&,
|
| - mojo::ScopedMessagePipeHandle)>;
|
| - class TestApi {
|
| - public:
|
| - explicit TestApi(InterfaceProvider* provider) : provider_(provider) {}
|
| - ~TestApi() {}
|
| -
|
| - void SetBinderForName(
|
| - const std::string& name,
|
| - const base::Callback<void(mojo::ScopedMessagePipeHandle)>& binder) {
|
| - provider_->SetBinderForName(name, binder);
|
| - }
|
| -
|
| - void ClearBinders() {
|
| - provider_->ClearBinders();
|
| - }
|
| -
|
| - private:
|
| - InterfaceProvider* provider_;
|
| - DISALLOW_COPY_AND_ASSIGN(TestApi);
|
| - };
|
| -
|
| - InterfaceProvider();
|
| - ~InterfaceProvider();
|
| -
|
| - // Binds this InterfaceProvider to an actual mojom::InterfaceProvider pipe.
|
| - // It is an error to call this on a forwarding InterfaceProvider, i.e. this
|
| - // call is exclusive to Forward().
|
| - void Bind(mojom::InterfaceProviderPtr interface_provider);
|
| -
|
| - // Sets this InterfaceProvider to forward all GetInterface() requests to
|
| - // |callback|. It is an error to call this on a bound InterfaceProvider, i.e.
|
| - // this call is exclusive to Bind(). In addition, and unlike Bind(), this MUST
|
| - // be called before any calls to GetInterface() are made.
|
| - void Forward(const ForwardCallback& callback);
|
| -
|
| - // Returns a raw pointer to the remote InterfaceProvider.
|
| - mojom::InterfaceProvider* get() { return interface_provider_.get(); }
|
| -
|
| - // Sets a closure to be run when the remote InterfaceProvider pipe is closed.
|
| - void SetConnectionLostClosure(const base::Closure& connection_lost_closure);
|
| -
|
| - base::WeakPtr<InterfaceProvider> GetWeakPtr();
|
| -
|
| - // Binds |ptr| to an implementation of Interface in the remote application.
|
| - // |ptr| can immediately be used to start sending requests to the remote
|
| - // interface.
|
| - template <typename Interface>
|
| - void GetInterface(mojo::InterfacePtr<Interface>* ptr) {
|
| - mojo::MessagePipe pipe;
|
| - ptr->Bind(mojo::InterfacePtrInfo<Interface>(std::move(pipe.handle0), 0u));
|
| -
|
| - GetInterface(Interface::Name_, std::move(pipe.handle1));
|
| - }
|
| - template <typename Interface>
|
| - void GetInterface(mojo::InterfaceRequest<Interface> request) {
|
| - GetInterface(Interface::Name_, std::move(request.PassMessagePipe()));
|
| - }
|
| - 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,
|
| - const base::Callback<void(mojo::ScopedMessagePipeHandle)>& binder) {
|
| - binders_[name] = binder;
|
| - }
|
| - void ClearBinders();
|
| -
|
| - using BinderMap = std::map<
|
| - std::string, base::Callback<void(mojo::ScopedMessagePipeHandle)>>;
|
| - BinderMap binders_;
|
| -
|
| - mojom::InterfaceProviderPtr interface_provider_;
|
| - mojom::InterfaceProviderRequest pending_request_;
|
| -
|
| - // A callback to receive all GetInterface() requests in lieu of the
|
| - // InterfaceProvider pipe.
|
| - ForwardCallback forward_callback_;
|
| -
|
| - base::WeakPtrFactory<InterfaceProvider> weak_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(InterfaceProvider);
|
| -};
|
| -
|
| -} // namespace shell
|
| -
|
| -#endif // SERVICES_SHELL_PUBLIC_CPP_INTERFACE_PROVIDER_H_
|
|
|