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.
4
5#ifndef PPAPI_PROXY_CONNECTION_H_
6#define PPAPI_PROXY_CONNECTION_H_
7
8#include "ipc/ipc_message.h"
9
10namespace IPC {
11class Sender;
12}
13
14namespace ppapi {
15namespace proxy {
16
17// This struct holds the channels that a resource uses to send message to the
18// browser and renderer.
19struct Connection {
20  Connection() : browser_sender(0),
21                 renderer_sender(0),
22                 in_process(false),
23                 browser_sender_routing_id(MSG_ROUTING_NONE) {
24  }
25  Connection(IPC::Sender* browser, IPC::Sender* renderer)
26      : browser_sender(browser),
27        renderer_sender(renderer),
28        in_process(false),
29        browser_sender_routing_id(MSG_ROUTING_NONE) {
30  }
31  Connection(IPC::Sender* browser, IPC::Sender* renderer, int routing_id)
32      : browser_sender(browser),
33        renderer_sender(renderer),
34        in_process(true),
35        browser_sender_routing_id(routing_id) {
36  }
37
38  IPC::Sender* browser_sender;
39  IPC::Sender* renderer_sender;
40  bool in_process;
41  // We need to use a routing ID when a plugin is in-process, and messages are
42  // sent back from the browser to the renderer. This is so that messages are
43  // routed to the proper RenderFrameImpl.
44  int browser_sender_routing_id;
45};
46
47}  // namespace proxy
48}  // namespace ppapi
49
50
51#endif  // PPAPI_PROXY_CONNECTION_H_
52
53