Index: content/browser/renderer_host/pepper/pepper_message_filter.cc |
diff --git a/content/browser/renderer_host/pepper/pepper_message_filter.cc b/content/browser/renderer_host/pepper/pepper_message_filter.cc |
index d9dbcdf89934d55f99d07f616df786a4af8cf38b..04cfc16162b6aaf2b9d6d572790458279f349618 100644 |
--- a/content/browser/renderer_host/pepper/pepper_message_filter.cc |
+++ b/content/browser/renderer_host/pepper/pepper_message_filter.cc |
@@ -134,6 +134,8 @@ bool PepperMessageFilter::OnMessageReceived(const IPC::Message& msg, |
// UDP messages. |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBUDPSocket_Create, OnUDPCreate) |
+ IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBUDPSocket_SetBoolSocketFeature, |
+ OnUDPSetBoolSocketFeature) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBUDPSocket_Bind, OnUDPBind) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBUDPSocket_RecvFrom, OnUDPRecvFrom) |
IPC_MESSAGE_HANDLER(PpapiHostMsg_PPBUDPSocket_SendTo, OnUDPSendTo) |
@@ -381,6 +383,36 @@ void PepperMessageFilter::OnUDPCreate(int32 routing_id, |
new PepperUDPSocket(this, routing_id, plugin_dispatcher_id, *socket_id)); |
} |
+void PepperMessageFilter::OnUDPSetBoolSocketFeature( |
+ int32 routing_id, |
+ uint32 socket_id, |
+ int32_t name, |
+ bool value) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+ UDPSocketMap::iterator iter = udp_sockets_.find(socket_id); |
+ if (iter == udp_sockets_.end()) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ if (routing_id != iter->second->routing_id()) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ switch(static_cast<PP_UDPSocketFeature_Private>(name)) { |
+ case PP_UDPSOCKETFEATURE_ADDRESS_REUSE: |
+ iter->second->AllowAddressReuse(value); |
+ break; |
+ case PP_UDPSOCKETFEATURE_BROADCAST: |
+ iter->second->AllowBroadcast(value); |
+ break; |
+ default: |
+ NOTREACHED(); |
+ break; |
+ } |
+} |
+ |
void PepperMessageFilter::OnUDPBind(int32 routing_id, |
uint32 socket_id, |
const PP_NetAddress_Private& addr) { |