OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/macros.h" | 5 #include "base/macros.h" |
6 #include "base/memory/ptr_util.h" | 6 #include "base/memory/ptr_util.h" |
7 #include "ipc/ipc_channel_factory.h" | 7 #include "ipc/ipc_channel_factory.h" |
8 #include "ipc/ipc_channel_mojo.h" | 8 #include "ipc/ipc_channel_mojo.h" |
9 | 9 |
10 namespace IPC { | 10 namespace IPC { |
11 | 11 |
12 namespace { | 12 namespace { |
13 | 13 |
14 class PlatformChannelFactory : public ChannelFactory { | 14 class PlatformChannelFactory : public ChannelFactory { |
15 public: | 15 public: |
16 PlatformChannelFactory( | 16 PlatformChannelFactory( |
17 ChannelHandle handle, | 17 ChannelHandle handle, |
18 Channel::Mode mode, | 18 Channel::Mode mode, |
19 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) | 19 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) |
20 : handle_(handle), mode_(mode), ipc_task_runner_(ipc_task_runner) {} | 20 : handle_(handle), mode_(mode), ipc_task_runner_(ipc_task_runner) {} |
21 | 21 |
22 std::string GetName() const override { | 22 std::string GetName() const override { return ""; } |
23 return handle_.name; | |
24 } | |
25 | 23 |
26 std::unique_ptr<Channel> BuildChannel(Listener* listener) override { | 24 std::unique_ptr<Channel> BuildChannel(Listener* listener) override { |
27 if (handle_.mojo_handle.is_valid()) { | 25 #if defined(OS_NACL_SFI) |
28 return ChannelMojo::Create( | |
29 mojo::ScopedMessagePipeHandle(handle_.mojo_handle), mode_, listener, | |
30 ipc_task_runner_); | |
31 } | |
32 return Channel::Create(handle_, mode_, listener); | 26 return Channel::Create(handle_, mode_, listener); |
| 27 #else |
| 28 DCHECK(handle_.is_mojo_channel_handle()); |
| 29 return ChannelMojo::Create( |
| 30 mojo::ScopedMessagePipeHandle(handle_.mojo_handle), mode_, listener, |
| 31 ipc_task_runner_); |
| 32 #endif |
33 } | 33 } |
34 | 34 |
35 scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() override { | 35 scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() override { |
36 return ipc_task_runner_; | 36 return ipc_task_runner_; |
37 } | 37 } |
38 | 38 |
39 private: | 39 private: |
40 ChannelHandle handle_; | 40 ChannelHandle handle_; |
41 Channel::Mode mode_; | 41 Channel::Mode mode_; |
42 scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_; | 42 scoped_refptr<base::SingleThreadTaskRunner> ipc_task_runner_; |
43 | 43 |
44 DISALLOW_COPY_AND_ASSIGN(PlatformChannelFactory); | 44 DISALLOW_COPY_AND_ASSIGN(PlatformChannelFactory); |
45 }; | 45 }; |
46 | 46 |
47 } // namespace | 47 } // namespace |
48 | 48 |
49 // static | 49 // static |
50 std::unique_ptr<ChannelFactory> ChannelFactory::Create( | 50 std::unique_ptr<ChannelFactory> ChannelFactory::Create( |
51 const ChannelHandle& handle, | 51 const ChannelHandle& handle, |
52 Channel::Mode mode, | 52 Channel::Mode mode, |
53 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { | 53 const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner) { |
54 return base::MakeUnique<PlatformChannelFactory>(handle, mode, | 54 return base::MakeUnique<PlatformChannelFactory>(handle, mode, |
55 ipc_task_runner); | 55 ipc_task_runner); |
56 } | 56 } |
57 | 57 |
58 } // namespace IPC | 58 } // namespace IPC |
OLD | NEW |