diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 08:55:28 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-31 08:55:28 +0000 |
commit | 0addda9b12e46523d2f9967709d69dd1b5fb71e1 (patch) | |
tree | c533faf1fd41b8bbd343efe7a65634bfe181ecb4 /ppapi/shared_impl/private | |
parent | ae3e7bc278b7a13b9e5c36cdd5cda6a780f46096 (diff) | |
download | chromium_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.cc | 20 | ||||
-rw-r--r-- | ppapi/shared_impl/private/udp_socket_private_impl.h | 3 |
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, |