| Index: ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| index 9b509e1f307cf8daf413908e531a4a7b27012ce3..bf2b5ebfc3310bf0f772d3648a5baa7ffc7cb235 100644
|
| --- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| +++ b/ppapi/shared_impl/private/udp_socket_private_impl.cc
|
| @@ -40,6 +40,23 @@ UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() {
|
| return this;
|
| }
|
|
|
| +int32_t UDPSocketPrivateImpl::SetSocketFeature(
|
| + PP_UDPSocketFeature_Private name,
|
| + PP_Var value,
|
| + scoped_refptr<TrackedCallback> callback) {
|
| + if (bound_ || closed_)
|
| + return PP_ERROR_FAILED;
|
| + if (TrackedCallback::IsPending(setsocketfeature_callback_))
|
| + return PP_ERROR_INPROGRESS;
|
| +
|
| + setsocketfeature_callback_ = callback;
|
| +
|
| + // Send the request, the browser will call us back via
|
| + // SetSocketFeatureACK.
|
| + SendSetSocketFeature(name, value);
|
| + return PP_OK_COMPLETIONPENDING;
|
| +}
|
| +
|
| int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
|
| scoped_refptr<TrackedCallback> callback) {
|
| if (!addr)
|
| @@ -124,11 +141,21 @@ void UDPSocketPrivateImpl::Close() {
|
|
|
| socket_id_ = 0;
|
|
|
| + PostAbortIfNecessary(&setsocketfeature_callback_);
|
| PostAbortIfNecessary(&bind_callback_);
|
| PostAbortIfNecessary(&recvfrom_callback_);
|
| PostAbortIfNecessary(&sendto_callback_);
|
| }
|
|
|
| +void UDPSocketPrivateImpl::OnSetSocketFeatureCompleted(bool succeeded) {
|
| + if (!TrackedCallback::IsPending(setsocketfeature_callback_)) {
|
| + NOTREACHED();
|
| + return;
|
| + }
|
| + TrackedCallback::ClearAndRun(&setsocketfeature_callback_,
|
| + succeeded ? PP_OK : PP_ERROR_FAILED);
|
| +}
|
| +
|
| void UDPSocketPrivateImpl::OnBindCompleted(
|
| bool succeeded,
|
| const PP_NetAddress_Private& addr) {
|
|
|