| // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef PPAPI_PROXY_CONNECTION_H_ | |
| #define PPAPI_PROXY_CONNECTION_H_ | |
| #include "ipc/ipc_message.h" | |
| #include "ppapi/proxy/plugin_dispatcher.h" | |
| namespace IPC { | |
| class Sender; | |
| } | |
| namespace ppapi { | |
| namespace proxy { | |
| // This struct holds the channels that a resource uses to send message to the | |
| // browser and renderer. | |
| class Connection { | |
| public: | |
| Connection() | |
| : browser_sender_(nullptr), | |
| in_process_renderer_sender_(nullptr), | |
| in_process_(false), | |
| browser_sender_routing_id_(MSG_ROUTING_NONE) {} | |
| Connection( | |
| IPC::Sender* browser, | |
| scoped_refptr<PluginDispatcher::Sender> out_of_process_renderer_sender) | |
| : browser_sender_(browser), | |
| in_process_renderer_sender_(nullptr), | |
| out_of_process_renderer_sender_(out_of_process_renderer_sender), | |
| in_process_(false), | |
| browser_sender_routing_id_(MSG_ROUTING_NONE) {} | |
| Connection(IPC::Sender* browser, | |
| IPC::Sender* in_process_renderer_sender, | |
| int routing_id) | |
| : browser_sender_(browser), | |
| in_process_renderer_sender_(in_process_renderer_sender), | |
| in_process_(true), | |
| browser_sender_routing_id_(routing_id) {} | |
| IPC::Sender* GetRendererSender() { | |
| return in_process_ ? in_process_renderer_sender_ | |
| : out_of_process_renderer_sender_.get(); | |
| } | |
| IPC::Sender* browser_sender() { return browser_sender_; } | |
| bool in_process() { return in_process_; } | |
| int browser_sender_routing_id() { return browser_sender_routing_id_; } | |
| private: | |
| IPC::Sender* browser_sender_; | |
| IPC::Sender* in_process_renderer_sender_; | |
| scoped_refptr<PluginDispatcher::Sender> out_of_process_renderer_sender_; | |
| bool in_process_; | |
| // We need to use a routing ID when a plugin is in-process, and messages are | |
| // sent back from the browser to the renderer. This is so that messages are | |
| // routed to the proper RenderFrameImpl. | |
| int browser_sender_routing_id_; | |
| }; | |
| } // namespace proxy | |
| } // namespace ppapi | |
| #endif // PPAPI_PROXY_CONNECTION_H_ | |