summaryrefslogtreecommitdiffstats
path: root/ppapi/shared_impl/private
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/shared_impl/private')
-rw-r--r--ppapi/shared_impl/private/udp_socket_private_impl.cc20
-rw-r--r--ppapi/shared_impl/private/udp_socket_private_impl.h3
2 files changed, 23 insertions, 0 deletions
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc
index 9b509e1..d3e94c1 100644
--- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
+++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc
@@ -12,6 +12,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/message_loop.h"
+#include "ppapi/c/pp_bool.h"
#include "ppapi/c/pp_completion_callback.h"
#include "ppapi/c/pp_errors.h"
@@ -40,6 +41,25 @@ UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() {
return this;
}
+int32_t UDPSocketPrivateImpl::SetSocketFeature(PP_UDPSocketFeature_Private name,
+ PP_Var value) {
+ if (bound_ || closed_)
+ return PP_ERROR_FAILED;
+
+ switch (name) {
+ case PP_UDPSOCKETFEATURE_ADDRESS_REUSE:
+ case PP_UDPSOCKETFEATURE_BROADCAST:
+ if (value.type != PP_VARTYPE_BOOL)
+ return PP_ERROR_BADARGUMENT;
+ SendBoolSocketFeature(static_cast<int32_t>(name),
+ PP_ToBool(value.value.as_bool));
+ break;
+ default:
+ return PP_ERROR_BADARGUMENT;
+ }
+ return PP_OK;
+}
+
int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
scoped_refptr<TrackedCallback> callback) {
if (!addr)
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.h b/ppapi/shared_impl/private/udp_socket_private_impl.h
index 36d51ca..e8e3cb2 100644
--- a/ppapi/shared_impl/private/udp_socket_private_impl.h
+++ b/ppapi/shared_impl/private/udp_socket_private_impl.h
@@ -40,6 +40,8 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
virtual PPB_UDPSocket_Private_API* AsPPB_UDPSocket_Private_API() OVERRIDE;
// PPB_UDPSocket_Private_API implementation.
+ virtual int32_t SetSocketFeature(PP_UDPSocketFeature_Private name,
+ PP_Var value) OVERRIDE;
virtual int32_t Bind(const PP_NetAddress_Private* addr,
scoped_refptr<TrackedCallback> callback) OVERRIDE;
virtual PP_Bool GetBoundAddress(PP_NetAddress_Private* addr) OVERRIDE;
@@ -63,6 +65,7 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
// Send functions that need to be implemented differently for
// the proxied and non-proxied derived classes.
+ virtual void SendBoolSocketFeature(int32_t name, bool value) = 0;
virtual void SendBind(const PP_NetAddress_Private& addr) = 0;
virtual void SendRecvFrom(int32_t num_bytes) = 0;
virtual void SendSendTo(const std::string& buffer,