blob: cec3e08025b30d5f30ac2c61c1b4bf0e626bdcff [file] [log] [blame]
[email protected]93df81e2012-08-10 22:22:461// 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.
4
5#ifndef PPAPI_PROXY_CONNECTION_H_
6#define PPAPI_PROXY_CONNECTION_H_
7
[email protected]8dd2d2c2013-07-23 21:19:318#include "ipc/ipc_message.h"
Raymes Khoury982b7eb22017-07-26 09:40:249#include "ppapi/proxy/plugin_dispatcher.h"
[email protected]8dd2d2c2013-07-23 21:19:3110
[email protected]93df81e2012-08-10 22:22:4611namespace IPC {
12class Sender;
13}
14
15namespace ppapi {
16namespace proxy {
17
18// This struct holds the channels that a resource uses to send message to the
19// browser and renderer.
Raymes Khoury982b7eb22017-07-26 09:40:2420class Connection {
21 public:
22 Connection()
23 : browser_sender_(nullptr),
24 in_process_renderer_sender_(nullptr),
25 in_process_(false),
26 browser_sender_routing_id_(MSG_ROUTING_NONE) {}
27 Connection(
28 IPC::Sender* browser,
29 scoped_refptr<PluginDispatcher::Sender> out_of_process_renderer_sender)
30 : browser_sender_(browser),
31 in_process_renderer_sender_(nullptr),
32 out_of_process_renderer_sender_(out_of_process_renderer_sender),
33 in_process_(false),
34 browser_sender_routing_id_(MSG_ROUTING_NONE) {}
35 Connection(IPC::Sender* browser,
36 IPC::Sender* in_process_renderer_sender,
37 int routing_id)
38 : browser_sender_(browser),
39 in_process_renderer_sender_(in_process_renderer_sender),
40 in_process_(true),
41 browser_sender_routing_id_(routing_id) {}
[email protected]93df81e2012-08-10 22:22:4642
Raymes Khoury982b7eb22017-07-26 09:40:2443 IPC::Sender* GetRendererSender() {
44 return in_process_ ? in_process_renderer_sender_
45 : out_of_process_renderer_sender_.get();
46 }
47 IPC::Sender* browser_sender() { return browser_sender_; }
48 bool in_process() { return in_process_; }
49 int browser_sender_routing_id() { return browser_sender_routing_id_; }
50
51 private:
52 IPC::Sender* browser_sender_;
53
54 IPC::Sender* in_process_renderer_sender_;
55 scoped_refptr<PluginDispatcher::Sender> out_of_process_renderer_sender_;
56
57 bool in_process_;
[email protected]8dd2d2c2013-07-23 21:19:3158 // We need to use a routing ID when a plugin is in-process, and messages are
59 // sent back from the browser to the renderer. This is so that messages are
[email protected]fb44cb0a2013-12-04 00:45:5560 // routed to the proper RenderFrameImpl.
Raymes Khoury982b7eb22017-07-26 09:40:2461 int browser_sender_routing_id_;
[email protected]93df81e2012-08-10 22:22:4662};
63
64} // namespace proxy
65} // namespace ppapi
66
67
68#endif // PPAPI_PROXY_CONNECTION_H_
69