summaryrefslogtreecommitdiffstats
path: root/ppapi/shared_impl/private
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-31 08:55:28 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-31 08:55:28 +0000
commit0addda9b12e46523d2f9967709d69dd1b5fb71e1 (patch)
treec533faf1fd41b8bbd343efe7a65634bfe181ecb4 /ppapi/shared_impl/private
parentae3e7bc278b7a13b9e5c36cdd5cda6a780f46096 (diff)
downloadchromium_src-0addda9b12e46523d2f9967709d69dd1b5fb71e1.zip
chromium_src-0addda9b12e46523d2f9967709d69dd1b5fb71e1.tar.gz
chromium_src-0addda9b12e46523d2f9967709d69dd1b5fb71e1.tar.bz2
AllowBroadcast() is exposed to NaCl.
BUG=136797 TEST=browser_tests:*.UDPSocketPrivate Review URL: https://chromiumcodereview.appspot.com/10735056 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154407 0039d316-1c4b-4281-b951-d872f2087c98
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,