Chromium Code Reviews| Index: ppapi/proxy/ppb_udp_socket_private_proxy.cc |
| diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.cc b/ppapi/proxy/ppb_udp_socket_private_proxy.cc |
| index 1e3a002cfb83c9bbc3e40806a6a79d9bcf862fd5..990d201b1ebe650eab54170f81f909ab865157fa 100644 |
| --- a/ppapi/proxy/ppb_udp_socket_private_proxy.cc |
| +++ b/ppapi/proxy/ppb_udp_socket_private_proxy.cc |
| @@ -7,6 +7,7 @@ |
| #include <map> |
| #include "base/logging.h" |
| +#include "ppapi/c/private/ppb_udp_socket_private.h" |
| #include "ppapi/proxy/plugin_dispatcher.h" |
| #include "ppapi/proxy/plugin_globals.h" |
| #include "ppapi/proxy/plugin_proxy_delegate.h" |
| @@ -29,6 +30,8 @@ class UDPSocket : public UDPSocketPrivateImpl { |
| UDPSocket(const HostResource& resource, uint32 socket_id); |
| virtual ~UDPSocket(); |
| + virtual void SendSetSocketFeature(PP_UDPSocketFeature_Private name, |
| + PP_Var value) OVERRIDE; |
| virtual void SendBind(const PP_NetAddress_Private& addr) OVERRIDE; |
| virtual void SendRecvFrom(int32_t num_bytes) OVERRIDE; |
| virtual void SendSendTo(const std::string& data, |
| @@ -53,6 +56,21 @@ UDPSocket::~UDPSocket() { |
| Close(); |
| } |
| +void UDPSocket::SendSetSocketFeature(PP_UDPSocketFeature_Private name, |
| + PP_Var value) { |
| + switch (name) { |
| + case PP_UDPSOCKETFEATURE_ADDRESS_REUSE: |
| + case PP_UDPSOCKETFEATURE_BROADCAST: |
| + DCHECK_EQ(PP_VARTYPE_BOOL, value.type); |
| + SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SetBoolSocketFeature( |
| + API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, |
| + name, (value.value.as_bool == PP_TRUE))); |
|
brettw
2012/08/20 04:34:45
You can use PP_ToBool. Actually, I'd probably just
ygorshenin1
2012/08/20 12:08:01
Done.
Yes, I considered this way. It's possible t
brettw
2012/08/20 17:55:15
The implementation of in process plugins and the p
ygorshenin1
2012/08/21 12:00:27
As was decided in the discussion, PpapiHostMsg_PPB
|
| + break; |
| + default: |
| + NOTREACHED(); |
| + } |
| +} |
| + |
| void UDPSocket::SendBind(const PP_NetAddress_Private& addr) { |
| SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Bind( |
| API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, addr)); |
| @@ -112,6 +130,8 @@ PP_Resource PPB_UDPSocket_Private_Proxy::CreateProxyResource( |
| bool PPB_UDPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(PPB_UDPSocket_Private_Proxy, msg) |
| + IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_SetSocketFeatureACK, |
| + OnMsgSetSocketFeatureACK) |
| IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_BindACK, |
| OnMsgBindACK) |
| IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_RecvFromACK, |
| @@ -123,6 +143,20 @@ bool PPB_UDPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) { |
| return handled; |
| } |
| +void PPB_UDPSocket_Private_Proxy::OnMsgSetSocketFeatureACK( |
| + uint32 /* plugin_dispatcher_id */, |
| + uint32 socket_id, |
| + bool succeeded) { |
| + if (!g_id_to_socket) { |
| + NOTREACHED(); |
| + return; |
| + } |
| + IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id); |
| + if (iter == g_id_to_socket->end()) |
| + return; |
| + iter->second->OnSetSocketFeatureCompleted(succeeded); |
| +} |
| + |
| void PPB_UDPSocket_Private_Proxy::OnMsgBindACK( |
| uint32 /* plugin_dispatcher_id */, |
| uint32 socket_id, |