Elim cr-checkbox
[chromium-blink-merge.git] / ppapi / proxy / broker_dispatcher.h
blob828dac63666a67ba4493927d4582950f7c5867d6
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef PPAPI_PROXY_BROKER_DISPATCHER_H_
6 #define PPAPI_PROXY_BROKER_DISPATCHER_H_
8 #include "base/compiler_specific.h"
9 #include "ppapi/c/trusted/ppp_broker.h"
10 #include "ppapi/proxy/proxy_channel.h"
12 namespace ppapi {
13 namespace proxy {
15 class PPAPI_PROXY_EXPORT BrokerDispatcher : public ProxyChannel {
16 public:
17 ~BrokerDispatcher() override;
19 // You must call this function before anything else. Returns true on success.
20 // The delegate pointer must outlive this class, ownership is not
21 // transferred.
22 virtual bool InitBrokerWithChannel(ProxyChannel::Delegate* delegate,
23 base::ProcessId peer_pid,
24 const IPC::ChannelHandle& channel_handle,
25 bool is_client);
27 // IPC::Listener implementation.
28 bool OnMessageReceived(const IPC::Message& msg) override;
30 protected:
31 // You must call InitBrokerWithChannel after the constructor.
32 explicit BrokerDispatcher(PP_ConnectInstance_Func connect_instance);
34 void OnMsgConnectToPlugin(PP_Instance instance,
35 IPC::PlatformFileForTransit handle,
36 int32_t* result);
38 PP_ConnectInstance_Func connect_instance_;
40 private:
41 DISALLOW_COPY_AND_ASSIGN(BrokerDispatcher);
44 // The dispatcher for the browser side of the broker channel.
45 class PPAPI_PROXY_EXPORT BrokerHostDispatcher : public BrokerDispatcher {
46 public:
47 BrokerHostDispatcher();
49 // IPC::Listener implementation.
50 void OnChannelError() override;
53 // The dispatcher for the broker side of the broker channel.
54 class PPAPI_PROXY_EXPORT BrokerSideDispatcher : public BrokerDispatcher {
55 public:
56 explicit BrokerSideDispatcher(PP_ConnectInstance_Func connect_instance);
58 // IPC::Listener implementation.
59 void OnChannelError() override;
62 } // namespace proxy
63 } // namespace ppapi
65 #endif // PPAPI_PROXY_BROKER_DISPATCHER_H_