1*635a8641SAndroid Build Coastguard Worker // Copyright 2014 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #ifndef IPC_IPC_CHANNEL_FACTORY_H_ 6*635a8641SAndroid Build Coastguard Worker #define IPC_IPC_CHANNEL_FACTORY_H_ 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker #include <memory> 9*635a8641SAndroid Build Coastguard Worker #include <string> 10*635a8641SAndroid Build Coastguard Worker #include <vector> 11*635a8641SAndroid Build Coastguard Worker 12*635a8641SAndroid Build Coastguard Worker #include "base/component_export.h" 13*635a8641SAndroid Build Coastguard Worker #include "base/memory/ref_counted.h" 14*635a8641SAndroid Build Coastguard Worker #include "base/single_thread_task_runner.h" 15*635a8641SAndroid Build Coastguard Worker #include "ipc/ipc_channel.h" 16*635a8641SAndroid Build Coastguard Worker 17*635a8641SAndroid Build Coastguard Worker namespace IPC { 18*635a8641SAndroid Build Coastguard Worker 19*635a8641SAndroid Build Coastguard Worker // Encapsulates how a Channel is created. A ChannelFactory can be 20*635a8641SAndroid Build Coastguard Worker // passed to the constructor of ChannelProxy or SyncChannel to tell them 21*635a8641SAndroid Build Coastguard Worker // how to create underlying channel. COMPONENT_EXPORT(IPC)22*635a8641SAndroid Build Coastguard Workerclass COMPONENT_EXPORT(IPC) ChannelFactory { 23*635a8641SAndroid Build Coastguard Worker public: 24*635a8641SAndroid Build Coastguard Worker // Creates a factory for "native" channel built through 25*635a8641SAndroid Build Coastguard Worker // IPC::Channel::Create(). 26*635a8641SAndroid Build Coastguard Worker static std::unique_ptr<ChannelFactory> Create( 27*635a8641SAndroid Build Coastguard Worker const ChannelHandle& handle, 28*635a8641SAndroid Build Coastguard Worker Channel::Mode mode, 29*635a8641SAndroid Build Coastguard Worker const scoped_refptr<base::SingleThreadTaskRunner>& ipc_task_runner); 30*635a8641SAndroid Build Coastguard Worker 31*635a8641SAndroid Build Coastguard Worker virtual ~ChannelFactory() { } 32*635a8641SAndroid Build Coastguard Worker virtual std::unique_ptr<Channel> BuildChannel(Listener* listener) = 0; 33*635a8641SAndroid Build Coastguard Worker virtual scoped_refptr<base::SingleThreadTaskRunner> GetIPCTaskRunner() = 0; 34*635a8641SAndroid Build Coastguard Worker }; 35*635a8641SAndroid Build Coastguard Worker 36*635a8641SAndroid Build Coastguard Worker } // namespace IPC 37*635a8641SAndroid Build Coastguard Worker 38*635a8641SAndroid Build Coastguard Worker #endif // IPC_IPC_CHANNEL_FACTORY_H_ 39