diff options
author | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-22 15:56:03 +0000 |
---|---|---|
committer | ygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-22 15:56:03 +0000 |
commit | 20e3112e65dd794b794bdabd53bc4542b767ad2d (patch) | |
tree | f84c170eab4600c7036af549039078eeb477a262 /ppapi/thunk | |
parent | 11039d76fa14f1b007272144c0b300a19711532b (diff) | |
download | chromium_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.h | 29 | ||||
-rw-r--r-- | ppapi/thunk/ppb_tcp_server_socket_private_thunk.cc | 71 | ||||
-rw-r--r-- | ppapi/thunk/resource_creation_api.h | 1 | ||||
-rw-r--r-- | ppapi/thunk/thunk.h | 3 |
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* |