Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(221)

Unified Diff: content/renderer/pepper/ppb_tcp_server_socket_private_impl.cc

Issue 20777009: A few more cleanups to the pepper code. Dispatch IPCs in the sockets implementations directly by ha… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/pepper/ppb_tcp_server_socket_private_impl.cc
===================================================================
--- content/renderer/pepper/ppb_tcp_server_socket_private_impl.cc (revision 214423)
+++ content/renderer/pepper/ppb_tcp_server_socket_private_impl.cc (working copy)
@@ -7,15 +7,20 @@
#include "base/logging.h"
#include "content/renderer/pepper/host_globals.h"
#include "content/renderer/pepper/pepper_helper_impl.h"
+#include "content/renderer/pepper/pepper_plugin_instance_impl.h"
#include "content/renderer/pepper/ppb_tcp_socket_private_impl.h"
-#include "content/renderer/pepper/resource_helper.h"
+#include "content/renderer/render_thread_impl.h"
+#include "content/renderer/render_view_impl.h"
#include "ppapi/proxy/ppapi_messages.h"
+#include "ppapi/thunk/enter.h"
namespace content {
PPB_TCPServerSocket_Private_Impl::PPB_TCPServerSocket_Private_Impl(
- PP_Instance instance)
- : ::ppapi::PPB_TCPServerSocket_Shared(instance) {
+ PP_Instance instance, RenderView* render_view)
+ : ::ppapi::PPB_TCPServerSocket_Shared(instance),
+ RenderViewObserver(render_view),
+ routing_id_(RenderThreadImpl::current()->GenerateRoutingID()) {
}
PPB_TCPServerSocket_Private_Impl::~PPB_TCPServerSocket_Private_Impl() {
@@ -24,8 +29,10 @@
PP_Resource PPB_TCPServerSocket_Private_Impl::CreateResource(
PP_Instance instance) {
+ RenderView* render_view =
+ PepperPluginInstance::Get(instance)->GetRenderView();
PPB_TCPServerSocket_Private_Impl* socket =
- new PPB_TCPServerSocket_Private_Impl(instance);
+ new PPB_TCPServerSocket_Private_Impl(instance, render_view);
return socket->GetReference();
}
@@ -55,37 +62,62 @@
void PPB_TCPServerSocket_Private_Impl::SendListen(
const PP_NetAddress_Private& addr,
int32_t backlog) {
- PepperHelperImpl* helper = GetHelper();
- if (!helper)
- return;
-
- helper->Send(new PpapiHostMsg_PPBTCPServerSocket_Listen(
- helper->routing_id(), 0, pp_resource(), addr, backlog));
+ Send(new PpapiHostMsg_PPBTCPServerSocket_Listen(
+ routing_id(), 0, pp_resource(), addr, backlog));
}
void PPB_TCPServerSocket_Private_Impl::SendAccept() {
- PepperHelperImpl* helper = GetHelper();
- if (!helper)
- return;
-
- helper->Send(new PpapiHostMsg_PPBTCPServerSocket_Accept(
- helper->routing_id(), socket_id_));
+ Send(new PpapiHostMsg_PPBTCPServerSocket_Accept(routing_id(), socket_id_));
}
void PPB_TCPServerSocket_Private_Impl::SendStopListening() {
- PepperHelperImpl* helper = GetHelper();
- if (!helper)
- return;
-
if (socket_id_ != 0) {
- helper->Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(
- socket_id_));
- helper->TCPServerSocketStopListening(socket_id_);
+ Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id_));
}
}
-PepperHelperImpl* PPB_TCPServerSocket_Private_Impl::GetHelper() {
- return ResourceHelper::GetHelper(this);
+bool PPB_TCPServerSocket_Private_Impl::OnMessageReceived(
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(PPB_TCPServerSocket_Private_Impl, message)
+ IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPServerSocket_ListenACK,
+ OnTCPServerSocketListenACK)
+ IPC_MESSAGE_HANDLER(PpapiMsg_PPBTCPServerSocket_AcceptACK,
+ OnTCPServerSocketAcceptACK)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
}
+void PPB_TCPServerSocket_Private_Impl::OnTCPServerSocketListenACK(
+ uint32 plugin_dispatcher_id,
+ PP_Resource socket_resource,
+ uint32 socket_id,
+ const PP_NetAddress_Private& local_addr,
+ int32_t status) {
+ ppapi::thunk::EnterResource<ppapi::thunk::PPB_TCPServerSocket_Private_API>
+ enter(socket_resource, true);
+ if (enter.succeeded()) {
+ ppapi::PPB_TCPServerSocket_Shared* socket =
+ static_cast<ppapi::PPB_TCPServerSocket_Shared*>(enter.object());
+ OnListenCompleted(socket_id, local_addr, status);
+ } else if (socket_id != 0 && status == PP_OK) {
+ // StopListening was called before completion of Listen.
+ Send(new PpapiHostMsg_PPBTCPServerSocket_Destroy(socket_id));
+ }
+}
+
+void PPB_TCPServerSocket_Private_Impl::OnTCPServerSocketAcceptACK(
+ uint32 plugin_dispatcher_id,
+ uint32 server_socket_id,
+ uint32 accepted_socket_id,
+ const PP_NetAddress_Private& local_addr,
+ const PP_NetAddress_Private& remote_addr) {
+ bool succeeded = (accepted_socket_id != 0);
+ OnAcceptCompleted(succeeded,
+ accepted_socket_id,
+ local_addr,
+ remote_addr);
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698