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 bced66ba56a0de7646b90d7616328aa5ec06e45a..16adf2a48bdb3c5a532a319c79d1d582266c0ae3 100644 |
--- a/content/browser/renderer_host/pepper/pepper_message_filter.cc |
+++ b/content/browser/renderer_host/pepper/pepper_message_filter.cc |
@@ -151,6 +151,8 @@ if (process_type_ == PLUGIN) { |
// 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) |
@@ -398,6 +400,33 @@ 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, |
+ PP_UDPSocketFeature_Private name, |
+ bool value) { |
+ UDPSocketMap::iterator iter = udp_sockets_.find(socket_id); |
+ if (iter == udp_sockets_.end()) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ if (routing_id == iter->second->routing_id()) { |
+ switch(name) { |
+ case PP_UDPSOCKETFEATURE_ADDRESS_REUSE: |
+ iter->second->AllowAddressReuse(value); |
+ break; |
+ case PP_UDPSOCKETFEATURE_BROADCAST: |
+ iter->second->AllowBroadcast(value); |
+ break; |
+ default: |
+ iter->second->SendSetSocketFeatureACK(false); |
+ } |
+ } else { |
+ iter->second->SendSetSocketFeatureACK(false); |
+ } |
+} |
+ |
void PepperMessageFilter::OnUDPBind(int32 routing_id, |
uint32 socket_id, |
const PP_NetAddress_Private& addr) { |