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

Side by Side Diff: services/service_manager/public/cpp/interface_binder.cc

Issue 2879843002: Reland 1: Enable overriding interface binders for any services running in current process. (Closed)
Patch Set: Identical with original CL 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/service_manager/public/cpp/interface_binder.h" 5 #include "services/service_manager/public/cpp/interface_binder.h"
6 6
7 #include "services/service_manager/public/cpp/bind_source_info.h"
8
7 namespace service_manager { 9 namespace service_manager {
8 10
11 namespace {
12
13 void BindCallbackAdapter(
14 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& callback,
15 const BindSourceInfo& source_info,
16 const std::string& interface_name,
17 mojo::ScopedMessagePipeHandle handle) {
18 callback.Run(std::move(handle));
19 }
20
21 } // namespace
22
9 GenericCallbackBinder::GenericCallbackBinder( 23 GenericCallbackBinder::GenericCallbackBinder(
10 const BindCallback& callback, 24 const BindCallback& callback,
11 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) 25 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
12 : callback_(callback), task_runner_(task_runner) {} 26 : callback_(callback), task_runner_(task_runner) {}
13 27
28 GenericCallbackBinder::GenericCallbackBinder(
29 const base::Callback<void(mojo::ScopedMessagePipeHandle)>& callback,
30 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
31 : callback_(base::Bind(&BindCallbackAdapter, callback)),
32 task_runner_(task_runner) {}
33
14 GenericCallbackBinder::~GenericCallbackBinder() {} 34 GenericCallbackBinder::~GenericCallbackBinder() {}
15 35
16 void GenericCallbackBinder::BindInterface( 36 void GenericCallbackBinder::BindInterface(
17 const BindSourceInfo& source_info, 37 const BindSourceInfo& source_info,
18 const std::string& interface_name, 38 const std::string& interface_name,
19 mojo::ScopedMessagePipeHandle handle) { 39 mojo::ScopedMessagePipeHandle handle) {
20 if (task_runner_) { 40 if (task_runner_) {
21 task_runner_->PostTask( 41 task_runner_->PostTask(
22 FROM_HERE, base::Bind(&GenericCallbackBinder::RunCallback, callback_, 42 FROM_HERE,
23 base::Passed(&handle))); 43 base::Bind(&GenericCallbackBinder::RunCallback, callback_, source_info,
44 interface_name, base::Passed(&handle)));
24 return; 45 return;
25 } 46 }
26 RunCallback(callback_, std::move(handle)); 47 RunCallback(callback_, source_info, interface_name, std::move(handle));
27 } 48 }
28 49
29 // static 50 // static
30 void GenericCallbackBinder::RunCallback(const BindCallback& callback, 51 void GenericCallbackBinder::RunCallback(const BindCallback& callback,
52 const BindSourceInfo& source_info,
53 const std::string& interface_name,
31 mojo::ScopedMessagePipeHandle handle) { 54 mojo::ScopedMessagePipeHandle handle) {
32 callback.Run(std::move(handle)); 55 callback.Run(source_info, interface_name, std::move(handle));
33 } 56 }
34 57
35 } // namespace service_manager 58 } // namespace service_manager
OLDNEW
« no previous file with comments | « services/service_manager/public/cpp/interface_binder.h ('k') | services/service_manager/public/cpp/service_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698