| Index: services/service_manager/public/cpp/interface_binder.cc
|
| diff --git a/services/service_manager/public/cpp/interface_binder.cc b/services/service_manager/public/cpp/interface_binder.cc
|
| index 48a6cd98f10d618130cc77c4377b49bf47a76f1c..81ec6ccc771bbefdf0278c72bfb787d2438e6477 100644
|
| --- a/services/service_manager/public/cpp/interface_binder.cc
|
| +++ b/services/service_manager/public/cpp/interface_binder.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "services/service_manager/public/cpp/interface_binder.h"
|
|
|
| +#include "services/service_manager/public/cpp/bind_source_info.h"
|
| +
|
| namespace service_manager {
|
|
|
| GenericCallbackBinder::GenericCallbackBinder(
|
| @@ -32,4 +34,32 @@ void GenericCallbackBinder::RunCallback(const BindCallback& callback,
|
| callback.Run(std::move(handle));
|
| }
|
|
|
| +FullCallbackBinder::FullCallbackBinder(
|
| + const BindCallback& callback,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
|
| + : callback_(callback), task_runner_(task_runner) {}
|
| +
|
| +FullCallbackBinder::~FullCallbackBinder() {}
|
| +
|
| +void FullCallbackBinder::BindInterface(const BindSourceInfo& source_info,
|
| + const std::string& interface_name,
|
| + mojo::ScopedMessagePipeHandle handle) {
|
| + if (task_runner_) {
|
| + task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&FullCallbackBinder::RunCallback, callback_, source_info,
|
| + interface_name, base::Passed(&handle)));
|
| + return;
|
| + }
|
| + RunCallback(callback_, source_info, interface_name, std::move(handle));
|
| +}
|
| +
|
| +// static
|
| +void FullCallbackBinder::RunCallback(const BindCallback& callback,
|
| + const BindSourceInfo& source_info,
|
| + const std::string& interface_name,
|
| + mojo::ScopedMessagePipeHandle handle) {
|
| + callback.Run(source_info, interface_name, std::move(handle));
|
| +}
|
| +
|
| } // namespace service_manager
|
|
|