Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: services/service_manager/public/cpp/interface_binder.cc

Issue 2859343003: Enable overriding interface binders for any services running in current process. (Closed)
Patch Set: Override by service identity --> service name Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698