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, |