Index: content/renderer/render_view_impl.h |
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h |
index b6db69feeb1a6690e28e3649e22b447c209c875e..49c5c9012bf3ddc9db1db7409c88f4b53310434e 100644 |
--- a/content/renderer/render_view_impl.h |
+++ b/content/renderer/render_view_impl.h |
@@ -293,6 +293,14 @@ class RenderViewImpl : public RenderWidget, |
webkit::WebPluginInfo* plugin_info, |
std::string* actual_mime_type); |
+ // Helper function to check that TCP/UDP private APIs are allowed for current |
+ // page. This check actually allows socket usage for NativeClient code only. |
+ // It is better to move this check to browser process but Pepper message |
+ // filters in browser process have no context about page that sent |
+ // the request. Doing this check in render process is safe because NaCl code |
+ // is executed in separate NaCl process. |
+ bool CanUseSocketAPIs(); |
+ |
// IPC::Channel::Listener implementation ------------------------------------- |
virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; |
@@ -751,6 +759,35 @@ class RenderViewImpl : public RenderWidget, |
const PP_NetAddress_Private& local_addr, |
const PP_NetAddress_Private& remote_addr); |
#endif |
+ void OnTCPSocketConnectACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded, |
+ const PP_NetAddress_Private& local_addr, |
+ const PP_NetAddress_Private& remote_addr); |
+ void OnTCPSocketSSLHandshakeACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded); |
+ void OnTCPSocketReadACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded, |
+ const std::string& data); |
+ void OnTCPSocketWriteACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded, |
+ int32_t bytes_written); |
+ void OnUDPSocketBindACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded); |
+ void OnUDPSocketSendToACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded, |
+ int32_t bytes_written); |
+ void OnUDPSocketRecvFromACK(uint32 plugin_dispatcher_id, |
+ uint32 socket_id, |
+ bool succeeded, |
+ const std::string& data, |
+ const PP_NetAddress_Private& addr); |
+ |
void OnContextMenuClosed( |
const webkit_glue::CustomContextMenuContext& custom_context); |
void OnCopy(); |
@@ -1219,6 +1256,9 @@ class RenderViewImpl : public RenderWidget, |
// of handling a ViewMsg_SelectRange IPC. |
bool handling_select_range_; |
+ // Set of origins that can use TCP/UDP private APIs from NaCl. |
+ std::set<std::string> allowed_socket_origins_; |
+ |
// --------------------------------------------------------------------------- |
// ADDING NEW DATA? Please see if it fits appropriately in one of the above |
// sections rather than throwing it randomly at the end. If you're adding a |