summaryrefslogtreecommitdiffstats
path: root/ppapi/thunk
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-22 15:56:03 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-22 15:56:03 +0000
commit20e3112e65dd794b794bdabd53bc4542b767ad2d (patch)
treef84c170eab4600c7036af549039078eeb477a262 /ppapi/thunk
parent11039d76fa14f1b007272144c0b300a19711532b (diff)
downloadchromium_src-20e3112e65dd794b794bdabd53bc4542b767ad2d.zip
chromium_src-20e3112e65dd794b794bdabd53bc4542b767ad2d.tar.gz
chromium_src-20e3112e65dd794b794bdabd53bc4542b767ad2d.tar.bz2
Exposed Listen and Accept methods to in-process plugins.
BUG=108277 TEST=UI test TestTCPServerSocketPrivate Review URL: http://codereview.chromium.org/9283022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123033 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/thunk')
-rw-r--r--ppapi/thunk/ppb_tcp_server_socket_private_api.h29
-rw-r--r--ppapi/thunk/ppb_tcp_server_socket_private_thunk.cc71
-rw-r--r--ppapi/thunk/resource_creation_api.h1
-rw-r--r--ppapi/thunk/thunk.h3
4 files changed, 104 insertions, 0 deletions
diff --git a/ppapi/thunk/ppb_tcp_server_socket_private_api.h b/ppapi/thunk/ppb_tcp_server_socket_private_api.h
new file mode 100644
index 0000000..b88dfc8
--- /dev/null
+++ b/ppapi/thunk/ppb_tcp_server_socket_private_api.h
@@ -0,0 +1,29 @@
+// 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_THUNK_PPB_TCP_SERVER_SOCKET_PRIVATE_API_H_
+#define PPAPI_THUNK_PPB_TCP_SERVER_SOCKET_PRIVATE_API_H_
+
+#include "ppapi/c/private/ppb_tcp_server_socket_private.h"
+#include "ppapi/thunk/ppapi_thunk_export.h"
+
+namespace ppapi {
+namespace thunk {
+
+class PPAPI_THUNK_EXPORT PPB_TCPServerSocket_Private_API {
+public:
+ virtual ~PPB_TCPServerSocket_Private_API() {}
+
+ virtual int32_t Listen(const PP_NetAddress_Private* addr,
+ int32_t backlog,
+ PP_CompletionCallback callback) = 0;
+ virtual int32_t Accept(PP_Resource* tcp_socket,
+ PP_CompletionCallback callback) = 0;
+ virtual void StopListening() = 0;
+};
+
+} // namespace thunk
+} // namespace ppapi
+
+#endif // PPAPI_THUNK_PPB_TCP_SERVER_SOCKET_PRIVATE_API_H_
diff --git a/ppapi/thunk/ppb_tcp_server_socket_private_thunk.cc b/ppapi/thunk/ppb_tcp_server_socket_private_thunk.cc
new file mode 100644
index 0000000..c4b6bd8
--- /dev/null
+++ b/ppapi/thunk/ppb_tcp_server_socket_private_thunk.cc
@@ -0,0 +1,71 @@
+// 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/c/pp_errors.h"
+#include "ppapi/c/private/ppb_tcp_server_socket_private.h"
+#include "ppapi/thunk/enter.h"
+#include "ppapi/thunk/ppb_tcp_server_socket_private_api.h"
+#include "ppapi/thunk/resource_creation_api.h"
+#include "ppapi/thunk/thunk.h"
+
+namespace ppapi {
+namespace thunk {
+
+namespace {
+
+typedef EnterResource<PPB_TCPServerSocket_Private_API> EnterTCPServer;
+
+PP_Resource Create(PP_Instance instance) {
+ EnterFunction<ResourceCreationAPI> enter(instance, true);
+ if (enter.failed())
+ return 0;
+ return enter.functions()->CreateTCPServerSocketPrivate(instance);
+}
+
+PP_Bool IsTCPServerSocket(PP_Resource resource) {
+ EnterTCPServer enter(resource, false);
+ return PP_FromBool(enter.succeeded());
+}
+
+int32_t Listen(PP_Resource tcp_server_socket,
+ const PP_NetAddress_Private* addr,
+ int32_t backlog,
+ PP_CompletionCallback callback) {
+ EnterTCPServer enter(tcp_server_socket, callback, true);
+ if (enter.failed())
+ return enter.retval();
+ return enter.SetResult(enter.object()->Listen(addr, backlog, callback));
+}
+
+int32_t Accept(PP_Resource tcp_server_socket,
+ PP_Resource* tcp_socket,
+ PP_CompletionCallback callback) {
+ EnterTCPServer enter(tcp_server_socket, callback, true);
+ if (enter.failed())
+ return enter.retval();
+ return enter.SetResult(enter.object()->Accept(tcp_socket, callback));
+}
+
+void StopListening(PP_Resource tcp_server_socket) {
+ EnterTCPServer enter(tcp_server_socket, true);
+ if (enter.succeeded())
+ enter.object()->StopListening();
+}
+
+const PPB_TCPServerSocket_Private g_ppb_tcp_server_socket_thunk = {
+ Create,
+ IsTCPServerSocket,
+ Listen,
+ Accept,
+ StopListening
+};
+
+} // namespace
+
+const PPB_TCPServerSocket_Private* GetPPB_TCPServerSocket_Private_0_1_Thunk() {
+ return &g_ppb_tcp_server_socket_thunk;
+}
+
+} // namespace thunk
+} // namespace ppapi
diff --git a/ppapi/thunk/resource_creation_api.h b/ppapi/thunk/resource_creation_api.h
index 05c90c2..d567a18 100644
--- a/ppapi/thunk/resource_creation_api.h
+++ b/ppapi/thunk/resource_creation_api.h
@@ -108,6 +108,7 @@ class ResourceCreationAPI {
uint32_t size) = 0;
virtual PP_Resource CreateScrollbar(PP_Instance instance,
PP_Bool vertical) = 0;
+ virtual PP_Resource CreateTCPServerSocketPrivate(PP_Instance instance) = 0;
virtual PP_Resource CreateTCPSocketPrivate(PP_Instance instace) = 0;
virtual PP_Resource CreateTransport(PP_Instance instance,
const char* name,
diff --git a/ppapi/thunk/thunk.h b/ppapi/thunk/thunk.h
index 703ab02..f7ac751 100644
--- a/ppapi/thunk/thunk.h
+++ b/ppapi/thunk/thunk.h
@@ -12,6 +12,7 @@
#include "ppapi/c/private/ppb_flash_net_connector.h"
#include "ppapi/c/private/ppb_flash_fullscreen.h"
#include "ppapi/c/private/ppb_instance_private.h"
+#include "ppapi/c/private/ppb_tcp_server_socket_private.h"
#include "ppapi/c/private/ppb_tcp_socket_private.h"
#include "ppapi/c/private/ppb_udp_socket_private.h"
#include "ppapi/c/trusted/ppb_audio_input_trusted_dev.h"
@@ -71,6 +72,8 @@ PPAPI_THUNK_EXPORT const PPB_ImageDataTrusted_0_4*
GetPPB_ImageDataTrusted_0_4_Thunk();
PPAPI_THUNK_EXPORT const PPB_Instance_Private_0_1*
GetPPB_Instance_Private_0_1_Thunk();
+PPAPI_THUNK_EXPORT const PPB_TCPServerSocket_Private_0_1*
+ GetPPB_TCPServerSocket_Private_0_1_Thunk();
PPAPI_THUNK_EXPORT const PPB_TCPSocket_Private_0_3*
GetPPB_TCPSocket_Private_0_3_Thunk();
PPAPI_THUNK_EXPORT const PPB_UDPSocket_Private_0_2*