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

Side by Side 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 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
9 GenericCallbackBinder::GenericCallbackBinder( 11 GenericCallbackBinder::GenericCallbackBinder(
10 const BindCallback& callback, 12 const BindCallback& callback,
11 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) 13 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
12 : callback_(callback), task_runner_(task_runner) {} 14 : callback_(callback), task_runner_(task_runner) {}
13 15
14 GenericCallbackBinder::~GenericCallbackBinder() {} 16 GenericCallbackBinder::~GenericCallbackBinder() {}
15 17
16 void GenericCallbackBinder::BindInterface( 18 void GenericCallbackBinder::BindInterface(
17 const BindSourceInfo& source_info, 19 const BindSourceInfo& source_info,
18 const std::string& interface_name, 20 const std::string& interface_name,
19 mojo::ScopedMessagePipeHandle handle) { 21 mojo::ScopedMessagePipeHandle handle) {
20 if (task_runner_) { 22 if (task_runner_) {
21 task_runner_->PostTask( 23 task_runner_->PostTask(
22 FROM_HERE, base::Bind(&GenericCallbackBinder::RunCallback, callback_, 24 FROM_HERE, base::Bind(&GenericCallbackBinder::RunCallback, callback_,
23 base::Passed(&handle))); 25 base::Passed(&handle)));
24 return; 26 return;
25 } 27 }
26 RunCallback(callback_, std::move(handle)); 28 RunCallback(callback_, std::move(handle));
27 } 29 }
28 30
29 // static 31 // static
30 void GenericCallbackBinder::RunCallback(const BindCallback& callback, 32 void GenericCallbackBinder::RunCallback(const BindCallback& callback,
31 mojo::ScopedMessagePipeHandle handle) { 33 mojo::ScopedMessagePipeHandle handle) {
32 callback.Run(std::move(handle)); 34 callback.Run(std::move(handle));
33 } 35 }
34 36
37 FullCallbackBinder::FullCallbackBinder(
38 const BindCallback& callback,
39 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
40 : callback_(callback), task_runner_(task_runner) {}
41
42 FullCallbackBinder::~FullCallbackBinder() {}
43
44 void FullCallbackBinder::BindInterface(const BindSourceInfo& source_info,
45 const std::string& interface_name,
46 mojo::ScopedMessagePipeHandle handle) {
47 if (task_runner_) {
48 task_runner_->PostTask(
49 FROM_HERE,
50 base::Bind(&FullCallbackBinder::RunCallback, callback_, source_info,
51 interface_name, base::Passed(&handle)));
52 return;
53 }
54 RunCallback(callback_, source_info, interface_name, std::move(handle));
55 }
56
57 // static
58 void FullCallbackBinder::RunCallback(const BindCallback& callback,
59 const BindSourceInfo& source_info,
60 const std::string& interface_name,
61 mojo::ScopedMessagePipeHandle handle) {
62 callback.Run(source_info, interface_name, std::move(handle));
63 }
64
35 } // namespace service_manager 65 } // namespace service_manager
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698