summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-21 15:21:56 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-01-21 15:21:56 +0000
commit9e14121e3f252f278ee8d05cbb51d0e45a735603 (patch)
treed3eb50e71cf9f5a95bda1be5abeb47dc383aa6c6 /ppapi
parenta69876c076c218567d4059a8a27ca63d2a1f1af2 (diff)
downloadchromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.zip
chromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.tar.gz
chromium_src-9e14121e3f252f278ee8d05cbb51d0e45a735603.tar.bz2
PPB_UDPSocket_Private is switched to the new Pepper proxy.
BUG=164370 TEST=browser_tests:*UDPSocketPrivate* Review URL: https://chromiumcodereview.appspot.com/11441012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@177915 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/ppapi_proxy.gypi4
-rw-r--r--ppapi/ppapi_shared.gypi2
-rw-r--r--ppapi/proxy/interface_list.cc1
-rw-r--r--ppapi/proxy/ppapi_messages.h53
-rw-r--r--ppapi/proxy/ppb_udp_socket_private_proxy.cc180
-rw-r--r--ppapi/proxy/ppb_udp_socket_private_proxy.h53
-rw-r--r--ppapi/proxy/resource_creation_proxy.cc5
-rw-r--r--ppapi/proxy/udp_socket_private_resource.cc (renamed from ppapi/shared_impl/private/udp_socket_private_impl.cc)163
-rw-r--r--ppapi/proxy/udp_socket_private_resource.h (renamed from ppapi/shared_impl/private/udp_socket_private_impl.h)79
-rw-r--r--ppapi/thunk/interfaces_ppb_private_no_permissions.h8
10 files changed, 157 insertions, 391 deletions
diff --git a/ppapi/ppapi_proxy.gypi b/ppapi/ppapi_proxy.gypi
index 552dcf3..550cba4 100644
--- a/ppapi/ppapi_proxy.gypi
+++ b/ppapi/ppapi_proxy.gypi
@@ -119,8 +119,6 @@
'proxy/ppb_tcp_socket_private_proxy.h',
'proxy/ppb_testing_proxy.cc',
'proxy/ppb_testing_proxy.h',
- 'proxy/ppb_udp_socket_private_proxy.cc',
- 'proxy/ppb_udp_socket_private_proxy.h',
'proxy/ppb_url_loader_proxy.cc',
'proxy/ppb_url_loader_proxy.h',
'proxy/ppb_var_deprecated_proxy.cc',
@@ -166,6 +164,8 @@
'proxy/resource_creation_proxy.h',
'proxy/talk_resource.cc',
'proxy/talk_resource.h',
+ 'proxy/udp_socket_private_resource.cc',
+ 'proxy/udp_socket_private_resource.h',
'proxy/url_request_info_resource.cc',
'proxy/url_request_info_resource.h',
'proxy/url_response_info_resource.cc',
diff --git a/ppapi/ppapi_shared.gypi b/ppapi/ppapi_shared.gypi
index 12f0e87..54a042a 100644
--- a/ppapi/ppapi_shared.gypi
+++ b/ppapi/ppapi_shared.gypi
@@ -123,8 +123,6 @@
'shared_impl/private/ppb_x509_certificate_private_shared.h',
'shared_impl/private/tcp_socket_private_impl.cc',
'shared_impl/private/tcp_socket_private_impl.h',
- 'shared_impl/private/udp_socket_private_impl.cc',
- 'shared_impl/private/udp_socket_private_impl.h',
'thunk/enter.cc',
'thunk/enter.h',
diff --git a/ppapi/proxy/interface_list.cc b/ppapi/proxy/interface_list.cc
index 1cb27d1..a0d34c1 100644
--- a/ppapi/proxy/interface_list.cc
+++ b/ppapi/proxy/interface_list.cc
@@ -94,7 +94,6 @@
#include "ppapi/proxy/ppb_tcp_server_socket_private_proxy.h"
#include "ppapi/proxy/ppb_tcp_socket_private_proxy.h"
#include "ppapi/proxy/ppb_testing_proxy.h"
-#include "ppapi/proxy/ppb_udp_socket_private_proxy.h"
#include "ppapi/proxy/ppb_url_loader_proxy.h"
#include "ppapi/proxy/ppb_var_deprecated_proxy.h"
#include "ppapi/proxy/ppb_video_decoder_proxy.h"
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index b4666e4..3671655 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -666,24 +666,6 @@ IPC_MESSAGE_ROUTED4(PpapiMsg_PPBTCPSocket_WriteACK,
bool /* succeeded */,
int32_t /* bytes_written */)
-// PPB_UDPSocket_Private.
-IPC_MESSAGE_ROUTED4(PpapiMsg_PPBUDPSocket_BindACK,
- uint32 /* plugin_dispatcher_id */,
- uint32 /* socket_id */,
- bool /* succeeded */,
- PP_NetAddress_Private /* bound_addr */)
-IPC_MESSAGE_ROUTED5(PpapiMsg_PPBUDPSocket_RecvFromACK,
- uint32 /* plugin_dispatcher_id */,
- uint32 /* socket_id */,
- bool /* succeeded */,
- std::string /* data */,
- PP_NetAddress_Private /* remote_addr */)
-IPC_MESSAGE_ROUTED4(PpapiMsg_PPBUDPSocket_SendToACK,
- uint32 /* plugin_dispatcher_id */,
- uint32 /* socket_id */,
- bool /* succeeded */,
- int32_t /* bytes_written */)
-
// PPB_URLLoader_Trusted
IPC_MESSAGE_ROUTED1(
PpapiMsg_PPBURLLoader_UpdateProgress,
@@ -1226,30 +1208,29 @@ IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBTCPSocket_Write,
IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBTCPSocket_Disconnect,
uint32 /* socket_id */)
-// PPB_UDPSocket_Private.
-IPC_SYNC_MESSAGE_CONTROL2_1(PpapiHostMsg_PPBUDPSocket_Create,
- int32 /* routing_id */,
- uint32 /* plugin_dispatcher_id */,
- uint32 /* socket_id */)
-IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBUDPSocket_SetBoolSocketFeature,
- int32 /* routing_id */,
- uint32 /* socket_id */,
+// UDPSocketPrivate.
+IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Create)
+IPC_MESSAGE_CONTROL2(PpapiHostMsg_UDPSocketPrivate_SetBoolSocketFeature,
int32_t /* name */,
bool /* value */)
-IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_Bind,
- int32 /* routing_id */,
- uint32 /* socket_id */,
+IPC_MESSAGE_CONTROL1(PpapiHostMsg_UDPSocketPrivate_Bind,
PP_NetAddress_Private /* net_addr */)
-IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBUDPSocket_RecvFrom,
- uint32 /* socket_id */,
+IPC_MESSAGE_CONTROL1(PpapiHostMsg_UDPSocketPrivate_RecvFrom,
int32_t /* num_bytes */)
-IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBUDPSocket_SendTo,
- int32 /* routing_id */,
- uint32 /* socket_id */,
+IPC_MESSAGE_CONTROL2(PpapiHostMsg_UDPSocketPrivate_SendTo,
std::string /* data */,
PP_NetAddress_Private /* net_addr */)
-IPC_MESSAGE_CONTROL1(PpapiHostMsg_PPBUDPSocket_Close,
- uint32 /* socket_id */)
+IPC_MESSAGE_CONTROL0(PpapiHostMsg_UDPSocketPrivate_Close)
+IPC_MESSAGE_CONTROL2(PpapiPluginMsg_UDPSocketPrivate_BindReply,
+ bool /* succeeded */,
+ PP_NetAddress_Private /* bound_addr */)
+IPC_MESSAGE_CONTROL3(PpapiPluginMsg_UDPSocketPrivate_RecvFromReply,
+ bool /* succeeded */,
+ std::string /* data */,
+ PP_NetAddress_Private /* remote_addr */)
+IPC_MESSAGE_CONTROL2(PpapiPluginMsg_UDPSocketPrivate_SendToReply,
+ bool /* succeeded */,
+ int32_t /* bytes_written */)
// PPB_TCPServerSocket_Private.
IPC_MESSAGE_CONTROL5(PpapiHostMsg_PPBTCPServerSocket_Listen,
diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.cc b/ppapi/proxy/ppb_udp_socket_private_proxy.cc
deleted file mode 100644
index 3f76e41..0000000
--- a/ppapi/proxy/ppb_udp_socket_private_proxy.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "ppapi/proxy/ppb_udp_socket_private_proxy.h"
-
-#include <map>
-
-#include "base/logging.h"
-#include "ppapi/c/private/ppb_udp_socket_private.h"
-#include "ppapi/proxy/plugin_dispatcher.h"
-#include "ppapi/proxy/plugin_globals.h"
-#include "ppapi/proxy/plugin_resource_tracker.h"
-#include "ppapi/proxy/ppapi_messages.h"
-#include "ppapi/shared_impl/private/udp_socket_private_impl.h"
-#include "ppapi/shared_impl/resource.h"
-#include "ppapi/thunk/thunk.h"
-
-namespace ppapi {
-namespace proxy {
-
-namespace {
-
-typedef std::map<uint32, UDPSocketPrivateImpl*> IDToSocketMap;
-IDToSocketMap* g_id_to_socket = NULL;
-
-class UDPSocket : public UDPSocketPrivateImpl {
- public:
- UDPSocket(const HostResource& resource, uint32 socket_id);
- virtual ~UDPSocket();
-
- virtual void SendBoolSocketFeature(int32_t name, bool value) OVERRIDE;
- virtual void SendBind(const PP_NetAddress_Private& addr) OVERRIDE;
- virtual void SendRecvFrom(int32_t num_bytes) OVERRIDE;
- virtual void SendSendTo(const std::string& data,
- const PP_NetAddress_Private& addr) OVERRIDE;
- virtual void SendClose() OVERRIDE;
-
- private:
- void SendToBrowser(IPC::Message* msg);
-
- DISALLOW_COPY_AND_ASSIGN(UDPSocket);
-};
-
-UDPSocket::UDPSocket(const HostResource& resource, uint32 socket_id)
- : UDPSocketPrivateImpl(resource, socket_id) {
- if (!g_id_to_socket)
- g_id_to_socket = new IDToSocketMap();
- DCHECK(g_id_to_socket->find(socket_id) == g_id_to_socket->end());
- (*g_id_to_socket)[socket_id] = this;
-}
-
-UDPSocket::~UDPSocket() {
- Close();
-}
-
-void UDPSocket::SendBoolSocketFeature(int32_t name, bool value) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SetBoolSocketFeature(
- API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, name, value));
-}
-
-void UDPSocket::SendBind(const PP_NetAddress_Private& addr) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Bind(
- API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, addr));
-}
-
-void UDPSocket::SendRecvFrom(int32_t num_bytes) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_RecvFrom(socket_id_, num_bytes));
-}
-
-void UDPSocket::SendSendTo(const std::string& data,
- const PP_NetAddress_Private& addr) {
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SendTo(
- API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, data, addr));
-}
-
-void UDPSocket::SendClose() {
- // After removed from the mapping, this object won't receive any notifications
- // from the proxy.
- DCHECK(g_id_to_socket->find(socket_id_) != g_id_to_socket->end());
- g_id_to_socket->erase(socket_id_);
- SendToBrowser(new PpapiHostMsg_PPBUDPSocket_Close(socket_id_));
-}
-
-void UDPSocket::SendToBrowser(IPC::Message* msg) {
- PluginGlobals::Get()->GetBrowserSender()->Send(msg);
-}
-
-} // namespace
-
-//------------------------------------------------------------------------------
-
-PPB_UDPSocket_Private_Proxy::PPB_UDPSocket_Private_Proxy(Dispatcher* dispatcher)
- : InterfaceProxy(dispatcher) {
-}
-
-PPB_UDPSocket_Private_Proxy::~PPB_UDPSocket_Private_Proxy() {
-}
-
-// static
-PP_Resource PPB_UDPSocket_Private_Proxy::CreateProxyResource(
- PP_Instance instance) {
- PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
- if (!dispatcher)
- return 0;
-
- uint32 socket_id = 0;
- PluginGlobals::Get()->GetBrowserSender()->Send(
- new PpapiHostMsg_PPBUDPSocket_Create(
- API_ID_PPB_UDPSOCKET_PRIVATE, dispatcher->plugin_dispatcher_id(),
- &socket_id));
- if (socket_id == 0)
- return 0;
-
- return (new UDPSocket(HostResource::MakeInstanceOnly(instance),
- socket_id))->GetReference();
-}
-
-bool PPB_UDPSocket_Private_Proxy::OnMessageReceived(const IPC::Message& msg) {
- bool handled = true;
- IPC_BEGIN_MESSAGE_MAP(PPB_UDPSocket_Private_Proxy, msg)
- IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_BindACK,
- OnMsgBindACK)
- IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_RecvFromACK,
- OnMsgRecvFromACK)
- IPC_MESSAGE_HANDLER(PpapiMsg_PPBUDPSocket_SendToACK,
- OnMsgSendToACK)
- IPC_MESSAGE_UNHANDLED(handled = false)
- IPC_END_MESSAGE_MAP()
- return handled;
-}
-
-void PPB_UDPSocket_Private_Proxy::OnMsgBindACK(
- uint32 /* plugin_dispatcher_id */,
- uint32 socket_id,
- bool succeeded,
- const PP_NetAddress_Private& bound_addr) {
- if (!g_id_to_socket) {
- NOTREACHED();
- return;
- }
- IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id);
- if (iter == g_id_to_socket->end())
- return;
- iter->second->OnBindCompleted(succeeded, bound_addr);
-}
-
-void PPB_UDPSocket_Private_Proxy::OnMsgRecvFromACK(
- uint32 /* plugin_dispatcher_id */,
- uint32 socket_id,
- bool succeeded,
- const std::string& data,
- const PP_NetAddress_Private& addr) {
- if (!g_id_to_socket) {
- NOTREACHED();
- return;
- }
- IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id);
- if (iter == g_id_to_socket->end())
- return;
- iter->second->OnRecvFromCompleted(succeeded, data, addr);
-}
-
-void PPB_UDPSocket_Private_Proxy::OnMsgSendToACK(
- uint32 /* plugin_dispatcher_id */,
- uint32 socket_id,
- bool succeeded,
- int32_t bytes_written) {
- if (!g_id_to_socket) {
- NOTREACHED();
- return;
- }
- IDToSocketMap::iterator iter = g_id_to_socket->find(socket_id);
- if (iter == g_id_to_socket->end())
- return;
- iter->second->OnSendToCompleted(succeeded, bytes_written);
-}
-
-} // namespace proxy
-} // namespace ppapi
diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.h b/ppapi/proxy/ppb_udp_socket_private_proxy.h
deleted file mode 100644
index 4677b4e..0000000
--- a/ppapi/proxy/ppb_udp_socket_private_proxy.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef PPAPI_PROXY_PPB_UDP_SOCKET_PRIVATE_PROXY_H_
-#define PPAPI_PROXY_PPB_UDP_SOCKET_PRIVATE_PROXY_H_
-
-#include <string>
-
-#include "base/basictypes.h"
-#include "ppapi/c/pp_instance.h"
-#include "ppapi/c/pp_resource.h"
-#include "ppapi/c/private/ppb_udp_socket_private.h"
-#include "ppapi/proxy/interface_proxy.h"
-
-namespace ppapi {
-namespace proxy {
-
-class PPB_UDPSocket_Private_Proxy : public InterfaceProxy {
- public:
- PPB_UDPSocket_Private_Proxy(Dispatcher* dispatcher);
- virtual ~PPB_UDPSocket_Private_Proxy();
-
- static PP_Resource CreateProxyResource(PP_Instance instance);
-
- // InterfaceProxy implementation.
- virtual bool OnMessageReceived(const IPC::Message& msg);
-
- static const ApiID kApiID = API_ID_PPB_UDPSOCKET_PRIVATE;
-
- private:
- // Browser->plugin message handlers.
- void OnMsgBindACK(uint32 plugin_dispatcher_id,
- uint32 socket_id,
- bool succeeded,
- const PP_NetAddress_Private& bound_addr);
- void OnMsgRecvFromACK(uint32 plugin_dispatcher_id,
- uint32 socket_id,
- bool succeeded,
- const std::string& data,
- const PP_NetAddress_Private& addr);
- void OnMsgSendToACK(uint32 plugin_dispatcher_id,
- uint32 socket_id,
- bool succeeded,
- int32_t bytes_written);
-
- DISALLOW_COPY_AND_ASSIGN(PPB_UDPSocket_Private_Proxy);
-};
-
-} // namespace proxy
-} // namespace ppapi
-
-#endif // PPAPI_PROXY_PPB_UDP_SOCKET_PRIVATE_PROXY_H_
diff --git a/ppapi/proxy/resource_creation_proxy.cc b/ppapi/proxy/resource_creation_proxy.cc
index e3f1b79..d8d4f7f 100644
--- a/ppapi/proxy/resource_creation_proxy.cc
+++ b/ppapi/proxy/resource_creation_proxy.cc
@@ -32,12 +32,12 @@
#include "ppapi/proxy/ppb_network_monitor_private_proxy.h"
#include "ppapi/proxy/ppb_tcp_server_socket_private_proxy.h"
#include "ppapi/proxy/ppb_tcp_socket_private_proxy.h"
-#include "ppapi/proxy/ppb_udp_socket_private_proxy.h"
#include "ppapi/proxy/ppb_url_loader_proxy.h"
#include "ppapi/proxy/ppb_video_decoder_proxy.h"
#include "ppapi/proxy/ppb_x509_certificate_private_proxy.h"
#include "ppapi/proxy/printing_resource.h"
#include "ppapi/proxy/talk_resource.h"
+#include "ppapi/proxy/udp_socket_private_resource.h"
#include "ppapi/proxy/url_request_info_resource.h"
#include "ppapi/proxy/url_response_info_resource.h"
#include "ppapi/proxy/video_capture_resource.h"
@@ -276,7 +276,8 @@ PP_Resource ResourceCreationProxy::CreateTCPSocketPrivate(
PP_Resource ResourceCreationProxy::CreateUDPSocketPrivate(
PP_Instance instance) {
- return PPB_UDPSocket_Private_Proxy::CreateProxyResource(instance);
+ return (new UDPSocketPrivateResource(
+ GetConnection(), instance))->GetReference();
}
PP_Resource ResourceCreationProxy::CreateWebSocket(PP_Instance instance) {
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.cc b/ppapi/proxy/udp_socket_private_resource.cc
index 288c38f..5469f30 100644
--- a/ppapi/shared_impl/private/udp_socket_private_impl.cc
+++ b/ppapi/proxy/udp_socket_private_resource.cc
@@ -2,47 +2,52 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ppapi/shared_impl/private/udp_socket_private_impl.h"
-
-#include <string.h>
+#include "ppapi/proxy/udp_socket_private_resource.h"
#include <algorithm>
+#include <cstring>
#include "base/basictypes.h"
-#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"
+#include "ppapi/proxy/ppapi_messages.h"
namespace ppapi {
+namespace proxy {
+
+const int32_t UDPSocketPrivateResource::kMaxReadSize = 1024 * 1024;
+const int32_t UDPSocketPrivateResource::kMaxWriteSize = 1024 * 1024;
+
+UDPSocketPrivateResource::UDPSocketPrivateResource(Connection connection,
+ PP_Instance instance)
+ : PluginResource(connection, instance),
+ bound_(false),
+ closed_(false),
+ read_buffer_(NULL),
+ bytes_to_read_(-1) {
+ recvfrom_addr_.size = 0;
+ memset(recvfrom_addr_.data, 0,
+ arraysize(recvfrom_addr_.data) * sizeof(*recvfrom_addr_.data));
+ bound_addr_.size = 0;
+ memset(bound_addr_.data, 0,
+ arraysize(bound_addr_.data) * sizeof(*bound_addr_.data));
-const int32_t UDPSocketPrivateImpl::kMaxReadSize = 1024 * 1024;
-const int32_t UDPSocketPrivateImpl::kMaxWriteSize = 1024 * 1024;
-
-UDPSocketPrivateImpl::UDPSocketPrivateImpl(const HostResource& resource,
- uint32 socket_id)
- : Resource(OBJECT_IS_PROXY, resource) {
- Init(socket_id);
-}
-
-UDPSocketPrivateImpl::UDPSocketPrivateImpl(PP_Instance instance,
- uint32 socket_id)
- : Resource(OBJECT_IS_IMPL, instance) {
- Init(socket_id);
+ SendCreate(BROWSER, PpapiHostMsg_UDPSocketPrivate_Create());
}
-UDPSocketPrivateImpl::~UDPSocketPrivateImpl() {
+UDPSocketPrivateResource::~UDPSocketPrivateResource() {
}
thunk::PPB_UDPSocket_Private_API*
-UDPSocketPrivateImpl::AsPPB_UDPSocket_Private_API() {
+UDPSocketPrivateResource::AsPPB_UDPSocket_Private_API() {
return this;
}
-int32_t UDPSocketPrivateImpl::SetSocketFeature(PP_UDPSocketFeature_Private name,
- PP_Var value) {
+int32_t UDPSocketPrivateResource::SetSocketFeature(
+ PP_UDPSocketFeature_Private name,
+ PP_Var value) {
if (bound_ || closed_)
return PP_ERROR_FAILED;
@@ -60,8 +65,9 @@ int32_t UDPSocketPrivateImpl::SetSocketFeature(PP_UDPSocketFeature_Private name,
return PP_OK;
}
-int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
- scoped_refptr<TrackedCallback> callback) {
+int32_t UDPSocketPrivateResource::Bind(
+ const PP_NetAddress_Private* addr,
+ scoped_refptr<TrackedCallback> callback) {
if (!addr)
return PP_ERROR_BADARGUMENT;
if (bound_ || closed_)
@@ -76,7 +82,7 @@ int32_t UDPSocketPrivateImpl::Bind(const PP_NetAddress_Private* addr,
return PP_OK_COMPLETIONPENDING;
}
-PP_Bool UDPSocketPrivateImpl::GetBoundAddress(PP_NetAddress_Private* addr) {
+PP_Bool UDPSocketPrivateResource::GetBoundAddress(PP_NetAddress_Private* addr) {
if (!addr || !bound_ || closed_)
return PP_FALSE;
@@ -84,7 +90,7 @@ PP_Bool UDPSocketPrivateImpl::GetBoundAddress(PP_NetAddress_Private* addr) {
return PP_TRUE;
}
-int32_t UDPSocketPrivateImpl::RecvFrom(
+int32_t UDPSocketPrivateResource::RecvFrom(
char* buffer,
int32_t num_bytes,
scoped_refptr<TrackedCallback> callback) {
@@ -104,18 +110,25 @@ int32_t UDPSocketPrivateImpl::RecvFrom(
return PP_OK_COMPLETIONPENDING;
}
-PP_Bool UDPSocketPrivateImpl::GetRecvFromAddress(PP_NetAddress_Private* addr) {
+PP_Bool UDPSocketPrivateResource::GetRecvFromAddress(
+ PP_NetAddress_Private* addr) {
if (!addr)
return PP_FALSE;
-
*addr = recvfrom_addr_;
return PP_TRUE;
}
-int32_t UDPSocketPrivateImpl::SendTo(const char* buffer,
- int32_t num_bytes,
- const PP_NetAddress_Private* addr,
- scoped_refptr<TrackedCallback> callback) {
+void UDPSocketPrivateResource::PostAbortIfNecessary(
+ scoped_refptr<TrackedCallback>* callback) {
+ if (TrackedCallback::IsPending(*callback))
+ (*callback)->PostAbort();
+}
+
+int32_t UDPSocketPrivateResource::SendTo(
+ const char* buffer,
+ int32_t num_bytes,
+ const PP_NetAddress_Private* addr,
+ scoped_refptr<TrackedCallback> callback) {
if (!buffer || num_bytes <= 0 || !addr)
return PP_ERROR_BADARGUMENT;
if (!bound_)
@@ -133,7 +146,7 @@ int32_t UDPSocketPrivateImpl::SendTo(const char* buffer,
return PP_OK_COMPLETIONPENDING;
}
-void UDPSocketPrivateImpl::Close() {
+void UDPSocketPrivateResource::Close() {
if(closed_)
return;
@@ -142,30 +155,65 @@ void UDPSocketPrivateImpl::Close() {
SendClose();
- socket_id_ = 0;
-
PostAbortIfNecessary(&bind_callback_);
PostAbortIfNecessary(&recvfrom_callback_);
PostAbortIfNecessary(&sendto_callback_);
}
-void UDPSocketPrivateImpl::OnBindCompleted(
+void UDPSocketPrivateResource::SendBoolSocketFeature(int32_t name, bool value) {
+ PpapiHostMsg_UDPSocketPrivate_SetBoolSocketFeature msg(name, value);
+ Post(BROWSER, msg);
+}
+
+void UDPSocketPrivateResource::SendBind(const PP_NetAddress_Private& addr) {
+ PpapiHostMsg_UDPSocketPrivate_Bind msg(addr);
+ Call<PpapiPluginMsg_UDPSocketPrivate_BindReply>(
+ BROWSER,
+ msg,
+ base::Bind(&UDPSocketPrivateResource::OnPluginMsgBindReply,
+ base::Unretained(this)));
+}
+
+void UDPSocketPrivateResource::SendRecvFrom(int32_t num_bytes) {
+ PpapiHostMsg_UDPSocketPrivate_RecvFrom msg(num_bytes);
+ Call<PpapiPluginMsg_UDPSocketPrivate_RecvFromReply>(
+ BROWSER,
+ msg,
+ base::Bind(&UDPSocketPrivateResource::OnPluginMsgRecvFromReply,
+ base::Unretained(this)));
+}
+
+void UDPSocketPrivateResource::SendSendTo(const std::string& buffer,
+ const PP_NetAddress_Private& addr) {
+ PpapiHostMsg_UDPSocketPrivate_SendTo msg(buffer, addr);
+ Call<PpapiPluginMsg_UDPSocketPrivate_SendToReply>(
+ BROWSER,
+ msg,
+ base::Bind(&UDPSocketPrivateResource::OnPluginMsgSendToReply,
+ base::Unretained(this)));
+}
+
+void UDPSocketPrivateResource::SendClose() {
+ PpapiHostMsg_UDPSocketPrivate_Close msg;
+ Post(BROWSER, msg);
+}
+
+void UDPSocketPrivateResource::OnPluginMsgBindReply(
+ const ResourceMessageReplyParams& params,
bool succeeded,
- const PP_NetAddress_Private& addr) {
+ const PP_NetAddress_Private& bound_addr) {
if (!TrackedCallback::IsPending(bind_callback_)) {
NOTREACHED();
return;
}
-
if (succeeded)
bound_ = true;
-
- bound_addr_ = addr;
-
+ bound_addr_ = bound_addr;
bind_callback_->Run(succeeded ? PP_OK : PP_ERROR_FAILED);
}
-void UDPSocketPrivateImpl::OnRecvFromCompleted(
+void UDPSocketPrivateResource::OnPluginMsgRecvFromReply(
+ const ResourceMessageReplyParams& params,
bool succeeded,
const std::string& data,
const PP_NetAddress_Private& addr) {
@@ -173,7 +221,6 @@ void UDPSocketPrivateImpl::OnRecvFromCompleted(
NOTREACHED();
return;
}
-
if (succeeded) {
CHECK_LE(static_cast<int32_t>(data.size()), bytes_to_read_);
if (!data.empty())
@@ -187,37 +234,17 @@ void UDPSocketPrivateImpl::OnRecvFromCompleted(
static_cast<int32_t>(PP_ERROR_FAILED));
}
-void UDPSocketPrivateImpl::OnSendToCompleted(bool succeeded,
- int32_t bytes_written) {
+void UDPSocketPrivateResource::OnPluginMsgSendToReply(
+ const ResourceMessageReplyParams& params,
+ bool succeeded,
+ int32_t bytes_written) {
if (!TrackedCallback::IsPending(sendto_callback_)) {
NOTREACHED();
return;
}
-
sendto_callback_->Run(
succeeded ? bytes_written : static_cast<int32_t>(PP_ERROR_FAILED));
}
-void UDPSocketPrivateImpl::Init(uint32 socket_id) {
- DCHECK(socket_id != 0);
- socket_id_ = socket_id;
- bound_ = false;
- closed_ = false;
- read_buffer_ = NULL;
- bytes_to_read_ = -1;
-
- recvfrom_addr_.size = 0;
- memset(recvfrom_addr_.data, 0,
- arraysize(recvfrom_addr_.data) * sizeof(*recvfrom_addr_.data));
- bound_addr_.size = 0;
- memset(bound_addr_.data, 0,
- arraysize(bound_addr_.data) * sizeof(*bound_addr_.data));
-}
-
-void UDPSocketPrivateImpl::PostAbortIfNecessary(
- scoped_refptr<TrackedCallback>* callback) {
- if (TrackedCallback::IsPending(*callback))
- (*callback)->PostAbort();
-}
-
+} // namespace proxy
} // namespace ppapi
diff --git a/ppapi/shared_impl/private/udp_socket_private_impl.h b/ppapi/proxy/udp_socket_private_resource.h
index e8e3cb2..d49e085 100644
--- a/ppapi/shared_impl/private/udp_socket_private_impl.h
+++ b/ppapi/proxy/udp_socket_private_resource.h
@@ -2,32 +2,26 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_
-#define PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_
-
-#include <string>
+#ifndef PPAPI_PROXY_UDP_SOCKET_PRIVATE_RESOURCE_H_
+#define PPAPI_PROXY_UDP_SOCKET_PRIVATE_RESOURCE_H_
+#include "base/basictypes.h"
#include "base/compiler_specific.h"
-#include "ppapi/shared_impl/resource.h"
+#include "ppapi/proxy/plugin_resource.h"
+#include "ppapi/proxy/ppapi_proxy_export.h"
#include "ppapi/shared_impl/tracked_callback.h"
#include "ppapi/thunk/ppb_udp_socket_private_api.h"
namespace ppapi {
+namespace proxy {
-// This class provides the shared implementation of a
-// PPB_UDPSocket_Private. The functions that actually send messages
-// to browser are implemented differently for the proxied and
-// non-proxied derived classes.
-class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
- : public thunk::PPB_UDPSocket_Private_API,
- public Resource {
+class PPAPI_PROXY_EXPORT UDPSocketPrivateResource
+ : public PluginResource,
+ public thunk::PPB_UDPSocket_Private_API {
public:
- // C-tor used in Impl case.
- UDPSocketPrivateImpl(PP_Instance instance, uint32 socket_id);
- // C-tor used in Proxy case.
- UDPSocketPrivateImpl(const HostResource& resource, uint32 socket_id);
-
- virtual ~UDPSocketPrivateImpl();
+ UDPSocketPrivateResource(Connection connection,
+ PP_Instance instance);
+ virtual ~UDPSocketPrivateResource();
// The maximum number of bytes that each PpapiHostMsg_PPBUDPSocket_RecvFrom
// message is allowed to request.
@@ -36,8 +30,9 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
// message is allowed to carry.
static const int32_t kMaxWriteSize;
- // Resource overrides.
- virtual PPB_UDPSocket_Private_API* AsPPB_UDPSocket_Private_API() OVERRIDE;
+ // PluginResource implementation.
+ virtual thunk::PPB_UDPSocket_Private_API*
+ AsPPB_UDPSocket_Private_API() OVERRIDE;
// PPB_UDPSocket_Private_API implementation.
virtual int32_t SetSocketFeature(PP_UDPSocketFeature_Private name,
@@ -55,28 +50,27 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
scoped_refptr<TrackedCallback> callback) OVERRIDE;
virtual void Close() OVERRIDE;
- // Notifications from the proxy.
- void OnBindCompleted(bool succeeded,
- const PP_NetAddress_Private& bound_addr);
- void OnRecvFromCompleted(bool succeeded,
- const std::string& data,
- const PP_NetAddress_Private& addr);
- void OnSendToCompleted(bool succeeded, int32_t bytes_written);
-
- // 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,
- const PP_NetAddress_Private& addr) = 0;
- virtual void SendClose() = 0;
-
- protected:
- void Init(uint32 socket_id);
+ private:
void PostAbortIfNecessary(scoped_refptr<TrackedCallback>* callback);
- uint32 socket_id_;
+ void SendBoolSocketFeature(int32_t name, bool value);
+ void SendBind(const PP_NetAddress_Private& addr);
+ void SendRecvFrom(int32_t num_bytes);
+ void SendSendTo(const std::string& buffer,
+ const PP_NetAddress_Private& addr);
+ void SendClose();
+
+ // IPC message handlers.
+ void OnPluginMsgBindReply(const ResourceMessageReplyParams& params,
+ bool succeeded,
+ const PP_NetAddress_Private& bound_addr);
+ void OnPluginMsgRecvFromReply(const ResourceMessageReplyParams& params,
+ bool succeeded,
+ const std::string& data,
+ const PP_NetAddress_Private& addr);
+ void OnPluginMsgSendToReply(const ResourceMessageReplyParams& params,
+ bool succeeded,
+ int32_t bytes_written);
bool bound_;
bool closed_;
@@ -91,9 +85,10 @@ class PPAPI_SHARED_EXPORT UDPSocketPrivateImpl
PP_NetAddress_Private recvfrom_addr_;
PP_NetAddress_Private bound_addr_;
- DISALLOW_COPY_AND_ASSIGN(UDPSocketPrivateImpl);
+ DISALLOW_COPY_AND_ASSIGN(UDPSocketPrivateResource);
};
+} // namespace proxy
} // namespace ppapi
-#endif // PPAPI_SHARED_IMPL_PRIVATE_UDP_SOCKET_PRIVATE_IMPL_H_
+#endif // PPAPI_PROXY_UDP_SOCKET_PRIVATE_RESOURCE_H_
diff --git a/ppapi/thunk/interfaces_ppb_private_no_permissions.h b/ppapi/thunk/interfaces_ppb_private_no_permissions.h
index 0eb636a..219a72f 100644
--- a/ppapi/thunk/interfaces_ppb_private_no_permissions.h
+++ b/ppapi/thunk/interfaces_ppb_private_no_permissions.h
@@ -12,7 +12,6 @@
PROXIED_API(PPB_HostResolver_Private)
PROXIED_API(PPB_TCPServerSocket_Private)
PROXIED_API(PPB_TCPSocket_Private)
-PROXIED_API(PPB_UDPSocket_Private)
UNPROXIED_API(PPB_NetworkList_Private)
PROXIED_API(PPB_NetworkMonitor_Private)
@@ -25,11 +24,11 @@ PROXIED_IFACE(PPB_TCPSocket_Private, PPB_TCPSOCKET_PRIVATE_INTERFACE_0_3,
PPB_TCPSocket_Private_0_3)
PROXIED_IFACE(PPB_TCPSocket_Private, PPB_TCPSOCKET_PRIVATE_INTERFACE_0_4,
PPB_TCPSocket_Private_0_4)
-PROXIED_IFACE(PPB_UDPSocket_Private, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_2,
+PROXIED_IFACE(NoAPIName, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_2,
PPB_UDPSocket_Private_0_2)
-PROXIED_IFACE(PPB_UDPSocket_Private, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_3,
+PROXIED_IFACE(NoAPIName, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_3,
PPB_UDPSocket_Private_0_3)
-PROXIED_IFACE(PPB_UDPSocket_Private, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_4,
+PROXIED_IFACE(NoAPIName, PPB_UDPSOCKET_PRIVATE_INTERFACE_0_4,
PPB_UDPSocket_Private_0_4)
PROXIED_IFACE(NoAPIName, PPB_NETADDRESS_PRIVATE_INTERFACE_0_1,
@@ -45,4 +44,3 @@ PROXIED_IFACE(PPB_NetworkMonitor_Private,
PPB_NetworkMonitor_Private_0_2)
#include "ppapi/thunk/interfaces_postamble.h"
-