summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 13:08:00 +0000
committerygorshenin@chromium.org <ygorshenin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-22 13:08:00 +0000
commitf3ae866d0a12c9a8ebc74dfb0192e52569a47d23 (patch)
treecb05925b43deb5841a7a2757216ae232060ed937 /ppapi
parent46a32b92e76b665e79bc3ee3b309766a47dbcf9d (diff)
downloadchromium_src-f3ae866d0a12c9a8ebc74dfb0192e52569a47d23.zip
chromium_src-f3ae866d0a12c9a8ebc74dfb0192e52569a47d23.tar.gz
chromium_src-f3ae866d0a12c9a8ebc74dfb0192e52569a47d23.tar.bz2
HostResolver is exposed to Native Client.
BUG=114225 TEST=PPAPINaClTest.HostResolverPrivate_* Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=127443 Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=127668 Review URL: https://chromiumcodereview.appspot.com/9704080 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128199 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc7
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h2
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc173
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/build.scons1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/nacl.scons1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc3
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.cc181
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h24
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp3
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_host_resolver_private.srpc55
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc114
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc96
-rwxr-xr-xppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h45
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h39
-rw-r--r--ppapi/ppapi_sources.gypi6
17 files changed, 749 insertions, 3 deletions
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc
index 420a7333..e5c0d91 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc
@@ -238,6 +238,13 @@ const PPB_Graphics3DTrusted* PPBGraphics3DTrustedInterface() {
return ppb;
}
+const PPB_HostResolver_Private* PPBHostResolverPrivateInterface() {
+ static const PPB_HostResolver_Private* ppb =
+ static_cast<const PPB_HostResolver_Private*>(
+ GetBrowserInterfaceSafe(PPB_HOSTRESOLVER_PRIVATE_INTERFACE));
+ return ppb;
+}
+
const PPB_ImageData* PPBImageDataInterface() {
static const PPB_ImageData* ppb = static_cast<const PPB_ImageData*>(
GetBrowserInterfaceSafe(PPB_IMAGEDATA_INTERFACE));
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h
index 862c887..62ebd9b 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h
@@ -36,6 +36,7 @@
#include "ppapi/c/ppb_var_array_buffer.h"
#include "ppapi/c/ppb_view.h"
#include "ppapi/c/ppb_websocket.h"
+#include "ppapi/c/private/ppb_host_resolver_private.h"
#include "ppapi/c/private/ppb_net_address_private.h"
#include "ppapi/c/private/ppb_pdf.h"
#include "ppapi/c/private/ppb_tcp_server_socket_private.h"
@@ -112,6 +113,7 @@ const PPB_Gamepad* PPBGamepadInterface();
const PPB_Graphics2D* PPBGraphics2DInterface();
const PPB_Graphics3D* PPBGraphics3DInterface();
const PPB_Graphics3DTrusted* PPBGraphics3DTrustedInterface();
+const PPB_HostResolver_Private* PPBHostResolverPrivateInterface();
const PPB_ImageData* PPBImageDataInterface();
const PPB_ImageDataTrusted* PPBImageDataTrustedInterface();
const PPB_InputEvent* PPBInputEventInterface();
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc
new file mode 100644
index 0000000..1b37b98
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_host_resolver_private_rpc_server.cc
@@ -0,0 +1,173 @@
+// 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.
+//
+// SRPC-abstraction wrappers around PPB_HostResolver_Private functions.
+
+#include <limits>
+#include <sys/types.h>
+
+#include "native_client/src/include/nacl_macros.h"
+#include "native_client/src/shared/ppapi_proxy/browser_callback.h"
+#include "native_client/src/shared/ppapi_proxy/browser_globals.h"
+#include "native_client/src/shared/ppapi_proxy/object_serialize.h"
+#include "native_client/src/shared/ppapi_proxy/utility.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/cpp/var.h"
+#include "srpcgen/ppb_rpc.h"
+
+using ppapi_proxy::DebugPrintf;
+using ppapi_proxy::DeleteRemoteCallbackInfo;
+using ppapi_proxy::MakeRemoteCompletionCallback;
+using ppapi_proxy::PPBHostResolverPrivateInterface;
+using ppapi_proxy::SerializeTo;
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Create(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Instance instance,
+ // output
+ PP_Resource* resource) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ *resource = PPBHostResolverPrivateInterface()->Create(instance);
+
+ DebugPrintf("PPB_HostResolver_Private::Create: " \
+ "resource=%"NACL_PRId32"\n", *resource);
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_IsHostResolver(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource resource,
+ // output
+ int32_t* is_host_resolver) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ PP_Bool pp_success =
+ PPBHostResolverPrivateInterface()->IsHostResolver(resource);
+ *is_host_resolver = PP_ToBool(pp_success);
+
+ DebugPrintf("PPB_HostResolver_Private::IsHostResolver: " \
+ "is_host_resolver=%d\n", *is_host_resolver);
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Resolve(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // inputs
+ PP_Resource host_resolver,
+ const char* host,
+ int32_t port,
+ nacl_abi_size_t hint_bytes, char* hint,
+ int32_t callback_id,
+ // output
+ int32_t* pp_error) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (hint_bytes !=
+ static_cast<nacl_abi_size_t>(sizeof(PP_HostResolver_Private_Hint))) {
+ return;
+ }
+
+ if (port < std::numeric_limits<uint16_t>::min() ||
+ port > std::numeric_limits<uint16_t>::max()) {
+ return;
+ }
+
+ PP_CompletionCallback remote_callback =
+ MakeRemoteCompletionCallback(rpc->channel, callback_id);
+ if (NULL == remote_callback.func)
+ return;
+
+ *pp_error = PPBHostResolverPrivateInterface()->Resolve(
+ host_resolver,
+ host,
+ static_cast<uint16_t>(port),
+ reinterpret_cast<const PP_HostResolver_Private_Hint*>(hint),
+ remote_callback);
+
+ DebugPrintf("PPB_HostResolver_Private::Resolve: " \
+ "pp_error=%"NACL_PRId32"\n", *pp_error);
+
+ if (*pp_error != PP_OK_COMPLETIONPENDING)
+ DeleteRemoteCallbackInfo(remote_callback);
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetCanonicalName(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ // outputs
+ nacl_abi_size_t* canonical_name_bytes, char* canonical_name) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ pp::Var pp_canonical_name(
+ pp::PASS_REF,
+ PPBHostResolverPrivateInterface()->GetCanonicalName(host_resolver));
+
+ if (!SerializeTo(&pp_canonical_name.pp_var(),
+ canonical_name,
+ canonical_name_bytes)) {
+ return;
+ }
+
+ DebugPrintf("PPB_HostResolver_Private::GetCanonicalName: " \
+ "canonical_name=%s\n", pp_canonical_name.AsString().c_str());
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetSize(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ // output
+ int32_t* size) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ uint32_t list_size =
+ PPBHostResolverPrivateInterface()->GetSize(
+ host_resolver);
+
+ DebugPrintf("PPB_HostResolver_Private::GetSize: " \
+ "size=%"NACL_PRIu32"\n", list_size);
+
+ if (list_size > static_cast<uint32_t>(std::numeric_limits<int32_t>::max()))
+ return;
+ *size = static_cast<int32_t>(list_size);
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetNetAddress(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ PP_Resource host_resolver,
+ int32_t index,
+ // outputs
+ nacl_abi_size_t* addr_bytes, char* addr,
+ int32_t* success) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_OK;
+
+ PP_Bool pp_success =
+ PPBHostResolverPrivateInterface()->GetNetAddress(
+ host_resolver,
+ index,
+ reinterpret_cast<PP_NetAddress_Private*>(addr));
+ *success = PP_FromBool(pp_success);
+
+ DebugPrintf("PPB_HostResolver_Private::GetNetAddress: " \
+ "success=%d\n", *success);
+}
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/build.scons b/ppapi/native_client/src/shared/ppapi_proxy/build.scons
index ed8de90..83b7d2d 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/build.scons
+++ b/ppapi/native_client/src/shared/ppapi_proxy/build.scons
@@ -49,6 +49,7 @@ env.DualLibrary('ppapi_browser',
'browser_ppb_gamepad_rpc_server.cc',
'browser_ppb_graphics_2d_rpc_server.cc',
'browser_ppb_graphics_3d_rpc_server.cc',
+ 'browser_ppb_host_resolver_private_rpc_server.cc',
'browser_ppb_image_data_rpc_server.cc',
'browser_ppb_input_event_rpc_server.cc',
'browser_ppb_instance_rpc_server.cc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons b/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons
index a58528e..8918a4f 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons
+++ b/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons
@@ -68,6 +68,7 @@ libppruntime = env.NaClSdkLibrary(
'plugin_ppb_gamepad.cc',
'plugin_ppb_graphics_2d.cc',
'plugin_ppb_graphics_3d.cc',
+ 'plugin_ppb_host_resolver_private.cc',
'plugin_ppb_image_data.cc',
'plugin_ppb_input_event.cc',
'plugin_ppb_instance.cc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc
index 796e5dc..341c959 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc
@@ -21,6 +21,7 @@
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_gamepad.h"
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_graphics_2d.h"
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_graphics_3d.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h"
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_image_data.h"
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_input_event.h"
#include "native_client/src/shared/ppapi_proxy/plugin_ppb_instance.h"
@@ -73,6 +74,8 @@ InterfaceMapElement interface_map[] = {
{ PPB_GAMEPAD_INTERFACE, PluginGamepad::GetInterface(), true },
{ PPB_GRAPHICS_2D_INTERFACE, PluginGraphics2D::GetInterface(), true },
{ PPB_GRAPHICS_3D_INTERFACE, PluginGraphics3D::GetInterface(), true },
+ { PPB_HOSTRESOLVER_PRIVATE_INTERFACE,
+ PluginHostResolverPrivate::GetInterface(), true },
{ PPB_IMAGEDATA_INTERFACE, PluginImageData::GetInterface(), true },
{ PPB_INPUT_EVENT_INTERFACE, PluginInputEvent::GetInterface(), true },
{ PPB_INSTANCE_INTERFACE, PluginInstance::GetInterface(), true },
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.cc
new file mode 100644
index 0000000..393fe5a
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.cc
@@ -0,0 +1,181 @@
+// 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 "native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h"
+
+#include "native_client/src/include/nacl_scoped_ptr.h"
+#include "native_client/src/include/portability.h"
+#include "native_client/src/shared/ppapi_proxy/object_serialize.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_callback.h"
+#include "native_client/src/shared/ppapi_proxy/plugin_globals.h"
+#include "native_client/src/shared/ppapi_proxy/utility.h"
+#include "native_client/src/shared/srpc/nacl_srpc.h"
+#include "ppapi/c/pp_errors.h"
+#include "ppapi/c/private/ppb_host_resolver_private.h"
+#include "srpcgen/ppb_rpc.h"
+
+namespace ppapi_proxy {
+
+namespace {
+
+PP_Resource Create(PP_Instance instance) {
+ DebugPrintf("PPB_HostResolver_Private::Create: " \
+ "instance=%"NACL_PRId32"\n", instance);
+
+ PP_Resource resource;
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_Create(
+ GetMainSrpcChannel(),
+ instance,
+ &resource);
+
+ DebugPrintf("PPB_HostResolver_Private::Create: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (srpc_result != NACL_SRPC_RESULT_OK)
+ return kInvalidResourceId;
+ return resource;
+}
+
+PP_Bool IsHostResolver(PP_Resource resource) {
+ DebugPrintf("PPB_HostResolver_Private::IsHostResolver: " \
+ "resource=%"NACL_PRId32"\n", resource);
+
+ int32_t is_host_resolver;
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::
+ PPB_HostResolver_Private_IsHostResolver(
+ GetMainSrpcChannel(),
+ resource,
+ &is_host_resolver);
+
+ DebugPrintf("PPB_HostResolver_Private::IsHostResolver: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (srpc_result == NACL_SRPC_RESULT_OK && is_host_resolver)
+ return PP_TRUE;
+ return PP_FALSE;
+}
+
+int32_t Resolve(PP_Resource host_resolver,
+ const char* host,
+ uint16_t port,
+ const PP_HostResolver_Private_Hint* hint,
+ PP_CompletionCallback callback) {
+ DebugPrintf("PPB_HostResolver_Private::Resolve: " \
+ "resource=%"NACL_PRId32"\n", host_resolver);
+
+ int32_t callback_id = CompletionCallbackTable::Get()->AddCallback(callback);
+ if (callback_id == 0)
+ return PP_ERROR_BLOCKS_MAIN_THREAD;
+
+ int32_t pp_error = PP_ERROR_FAILED;
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::
+ PPB_HostResolver_Private_Resolve(
+ GetMainSrpcChannel(),
+ host_resolver,
+ host,
+ port,
+ static_cast<nacl_abi_size_t>(sizeof(*hint)),
+ reinterpret_cast<char*>(
+ const_cast<PP_HostResolver_Private_Hint*>(hint)),
+ callback_id,
+ &pp_error);
+
+ DebugPrintf("PPB_HostResolver_Private::Resolve: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (srpc_result != NACL_SRPC_RESULT_OK)
+ pp_error = PP_ERROR_FAILED;
+ return MayForceCallback(callback, pp_error);
+}
+
+PP_Var GetCanonicalName(PP_Resource host_resolver) {
+ DebugPrintf("PPB_HostResolver_Private::GetCanonicalName: " \
+ "resource=%"NACL_PRId32"\n", host_resolver);
+
+ nacl_abi_size_t canonical_name_size = kMaxReturnVarSize;
+ nacl::scoped_array<char> canonical_name_bytes(new char[canonical_name_size]);
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::
+ PPB_HostResolver_Private_GetCanonicalName(
+ GetMainSrpcChannel(),
+ host_resolver,
+ &canonical_name_size, canonical_name_bytes.get());
+
+ DebugPrintf("PPB_HostResolver_Private::GetCanonicalName: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ PP_Var canonical_name = PP_MakeUndefined();
+ if (srpc_result == NACL_SRPC_RESULT_OK) {
+ (void) DeserializeTo(canonical_name_bytes.get(),
+ canonical_name_size,
+ 1,
+ &canonical_name);
+ }
+ return canonical_name;
+}
+
+uint32_t GetSize(PP_Resource host_resolver) {
+ DebugPrintf("PPB_HostResolver_Private::GetSize: " \
+ "resource=%"NACL_PRId32"\n", host_resolver);
+
+ int32_t size;
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::
+ PPB_HostResolver_Private_GetSize(
+ GetMainSrpcChannel(),
+ host_resolver,
+ &size);
+
+ DebugPrintf("PPB_HostResolver_Private::GetSize: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (srpc_result == NACL_SRPC_RESULT_OK)
+ return static_cast<uint32_t>(size);
+ return 0;
+}
+
+PP_Bool GetNetAddress(PP_Resource host_resolver,
+ uint32_t index,
+ PP_NetAddress_Private* addr) {
+ DebugPrintf("PPB_HostResolver_Private::GetNetAddress: " \
+ "resource=%"NACL_PRId32"\n", host_resolver);
+
+ nacl_abi_size_t addr_size = sizeof(*addr);
+ int32_t success;
+ NaClSrpcError srpc_result =
+ PpbHostResolverPrivateRpcClient::
+ PPB_HostResolver_Private_GetNetAddress(
+ GetMainSrpcChannel(),
+ host_resolver,
+ static_cast<int32_t>(index),
+ &addr_size, reinterpret_cast<char*>(addr),
+ &success);
+
+ DebugPrintf("PPB_HostResolver_Private::GetNetAddress: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ if (srpc_result == NACL_SRPC_RESULT_OK && success != 0)
+ return PP_TRUE;
+ return PP_FALSE;
+}
+
+} // namespace
+
+const PPB_HostResolver_Private*
+ PluginHostResolverPrivate::GetInterface() {
+ static const PPB_HostResolver_Private hostresolver_private_interface = {
+ Create,
+ IsHostResolver,
+ Resolve,
+ GetCanonicalName,
+ GetSize,
+ GetNetAddress
+ };
+ return &hostresolver_private_interface;
+}
+
+} // namespace ppapi_proxy
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h
new file mode 100644
index 0000000..351c65b
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_host_resolver_private.h
@@ -0,0 +1,24 @@
+// 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 NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_HOST_RESOLVER_PRIVATE_H_
+#define NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_HOST_RESOLVER_PRIVATE_H_
+
+#include "native_client/src/include/nacl_macros.h"
+#include "ppapi/c/private/ppb_host_resolver_private.h"
+
+namespace ppapi_proxy {
+
+// Implements the untrusted side of the PPB_HostResolver_Private interface.
+class PluginHostResolverPrivate {
+ public:
+ static const PPB_HostResolver_Private* GetInterface();
+
+ private:
+ NACL_DISALLOW_COPY_AND_ASSIGN(PluginHostResolverPrivate);
+};
+
+} // namespace ppapi_proxy
+
+#endif // NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_HOST_RESOLVER_PRIVATE_H_
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
index 443fbaa..5922275 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp
@@ -31,8 +31,8 @@
'browser_callback.cc',
'browser_globals.cc',
'browser_nacl_file_rpc_server.cc',
- 'browser_ppb_audio_rpc_server.cc',
'browser_ppb_audio_config_rpc_server.cc',
+ 'browser_ppb_audio_rpc_server.cc',
'browser_ppb_core_rpc_server.cc',
'browser_ppb_cursor_control_rpc_server.cc',
'browser_ppb_file_io_rpc_server.cc',
@@ -44,6 +44,7 @@
'browser_ppb_gamepad_rpc_server.cc',
'browser_ppb_graphics_2d_rpc_server.cc',
'browser_ppb_graphics_3d_rpc_server.cc',
+ 'browser_ppb_host_resolver_private_rpc_server.cc',
'browser_ppb_image_data_rpc_server.cc',
'browser_ppb_input_event_rpc_server.cc',
'browser_ppb_instance_rpc_server.cc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
index f144eb2..9f6647e 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy_untrusted.gyp
@@ -65,6 +65,7 @@
'plugin_ppb_gamepad.cc',
'plugin_ppb_graphics_2d.cc',
'plugin_ppb_graphics_3d.cc',
+ 'plugin_ppb_host_resolver_private.cc',
'plugin_ppb_image_data.cc',
'plugin_ppb_input_event.cc',
'plugin_ppb_instance.cc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_host_resolver_private.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_host_resolver_private.srpc
new file mode 100644
index 0000000..a5d733d
--- /dev/null
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_host_resolver_private.srpc
@@ -0,0 +1,55 @@
+# Copyright (c) 2012 The Native Client Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# RPC methods used to implement PPB_HostResolver_Private calls from
+# the plugin. See ppapi/c/private/ppb_host_resolver_private.h for
+# interface details.
+
+{
+ 'name': 'PpbHostResolverPrivateRpc',
+ 'rpcs': [
+ {'name': 'PPB_HostResolver_Private_Create',
+ 'inputs': [['instance', 'PP_Instance'],
+ ],
+ 'outputs': [['resource', 'PP_Resource'],
+ ]
+ },
+ {'name': 'PPB_HostResolver_Private_IsHostResolver',
+ 'inputs': [['resource', 'PP_Resource'],
+ ],
+ 'outputs': [['is_host_resolver', 'int32_t'], # PP_Bool
+ ]
+ },
+ {'name': 'PPB_HostResolver_Private_Resolve',
+ 'inputs': [['host_resolver', 'PP_Resource'],
+ ['host', 'string'], # const char*
+ ['port', 'int32_t'], # uint16_t
+ ['hint', 'char[]'], # const PP_HostResolver_Private_Hint*
+ ['callback_id', 'int32_t'] # PP_CompletionCallback
+ ],
+ 'outputs': [['pp_error', 'int32_t'],
+ ]
+ },
+ {'name': 'PPB_HostResolver_Private_GetCanonicalName',
+ 'inputs': [['host_resolver', 'PP_Resource'],
+ ],
+ 'outputs': [['canonical_name', 'char[]'] # PP_Var
+ ]
+ },
+ {'name': 'PPB_HostResolver_Private_GetSize',
+ 'inputs': [['host_resolver', 'PP_Resource'],
+ ],
+ 'outputs': [['size', 'int32_t'], # uint32_t
+ ]
+ },
+ {'name': 'PPB_HostResolver_Private_GetNetAddress',
+ 'inputs': [['host_resolver', 'PP_Resource'],
+ ['index', 'int32_t'], # uint32_t
+ ],
+ 'outputs': [['addr', 'char[]'], # PP_NetAddress_Private*
+ ['success', 'int32_t'], # PP_Bool
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc
index e138728..477692d 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc
@@ -1654,6 +1654,120 @@ NaClSrpcError PpbGraphics3DRpcClient::PPB_Graphics3DTrusted_GetTransferBuffer(
return retval;
}
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_Create(
+ NaClSrpcChannel* channel,
+ PP_Instance instance,
+ PP_Resource* resource) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_Create:i:i",
+ instance,
+ resource
+ );
+ return retval;
+}
+
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_IsHostResolver(
+ NaClSrpcChannel* channel,
+ PP_Resource resource,
+ int32_t* is_host_resolver) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_IsHostResolver:i:i",
+ resource,
+ is_host_resolver
+ );
+ return retval;
+}
+
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_Resolve(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ const char* host,
+ int32_t port,
+ nacl_abi_size_t hint_bytes, char* hint,
+ int32_t callback_id,
+ int32_t* pp_error) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_Resolve:isiCi:i",
+ host_resolver,
+ host,
+ port,
+ hint_bytes, hint,
+ callback_id,
+ pp_error
+ );
+ return retval;
+}
+
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_GetCanonicalName(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ nacl_abi_size_t* canonical_name_bytes, char* canonical_name) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_GetCanonicalName:i:C",
+ host_resolver,
+ canonical_name_bytes, canonical_name
+ );
+ return retval;
+}
+
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_GetSize(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ int32_t* size) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_GetSize:i:i",
+ host_resolver,
+ size
+ );
+ return retval;
+}
+
+NaClSrpcError PpbHostResolverPrivateRpcClient::PPB_HostResolver_Private_GetNetAddress(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ int32_t index,
+ nacl_abi_size_t* addr_bytes, char* addr,
+ int32_t* success) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_HostResolver_Private_GetNetAddress:ii:Ci",
+ host_resolver,
+ index,
+ addr_bytes, addr,
+ success
+ );
+ return retval;
+}
+
NaClSrpcError PpbImageDataRpcClient::PPB_ImageData_GetNativeImageDataFormat(
NaClSrpcChannel* channel,
int32_t* format) {
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc
index c6d729c..6ec70bc 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc
@@ -1330,6 +1330,96 @@ static void PPB_Graphics3DTrusted_GetTransferBufferDispatcher(
);
}
+static void PPB_HostResolver_Private_CreateDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Create(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ &(outputs[0]->u.ival)
+ );
+}
+
+static void PPB_HostResolver_Private_IsHostResolverDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_IsHostResolver(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ &(outputs[0]->u.ival)
+ );
+}
+
+static void PPB_HostResolver_Private_ResolveDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_Resolve(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ inputs[1]->arrays.str,
+ inputs[2]->u.ival,
+ inputs[3]->u.count, inputs[3]->arrays.carr,
+ inputs[4]->u.ival,
+ &(outputs[0]->u.ival)
+ );
+}
+
+static void PPB_HostResolver_Private_GetCanonicalNameDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetCanonicalName(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ &(outputs[0]->u.count), outputs[0]->arrays.carr
+ );
+}
+
+static void PPB_HostResolver_Private_GetSizeDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetSize(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ &(outputs[0]->u.ival)
+ );
+}
+
+static void PPB_HostResolver_Private_GetNetAddressDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbHostResolverPrivateRpcServer::PPB_HostResolver_Private_GetNetAddress(
+ rpc,
+ done,
+ inputs[0]->u.ival,
+ inputs[1]->u.ival,
+ &(outputs[0]->u.count), outputs[0]->arrays.carr,
+ &(outputs[1]->u.ival)
+ );
+}
+
static void PPB_ImageData_GetNativeImageDataFormatDispatcher(
NaClSrpcRpc* rpc,
NaClSrpcArg** inputs,
@@ -3118,6 +3208,12 @@ NaClSrpcHandlerDesc PpbRpcs::srpc_methods[] = {
{ "PPB_Graphics3DTrusted_CreateTransferBuffer:iii:i", PPB_Graphics3DTrusted_CreateTransferBufferDispatcher },
{ "PPB_Graphics3DTrusted_DestroyTransferBuffer:ii:", PPB_Graphics3DTrusted_DestroyTransferBufferDispatcher },
{ "PPB_Graphics3DTrusted_GetTransferBuffer:ii:hi", PPB_Graphics3DTrusted_GetTransferBufferDispatcher },
+ { "PPB_HostResolver_Private_Create:i:i", PPB_HostResolver_Private_CreateDispatcher },
+ { "PPB_HostResolver_Private_IsHostResolver:i:i", PPB_HostResolver_Private_IsHostResolverDispatcher },
+ { "PPB_HostResolver_Private_Resolve:isiCi:i", PPB_HostResolver_Private_ResolveDispatcher },
+ { "PPB_HostResolver_Private_GetCanonicalName:i:C", PPB_HostResolver_Private_GetCanonicalNameDispatcher },
+ { "PPB_HostResolver_Private_GetSize:i:i", PPB_HostResolver_Private_GetSizeDispatcher },
+ { "PPB_HostResolver_Private_GetNetAddress:ii:Ci", PPB_HostResolver_Private_GetNetAddressDispatcher },
{ "PPB_ImageData_GetNativeImageDataFormat::i", PPB_ImageData_GetNativeImageDataFormatDispatcher },
{ "PPB_ImageData_IsImageDataFormatSupported:i:i", PPB_ImageData_IsImageDataFormatSupportedDispatcher },
{ "PPB_ImageData_Create:iiCi:i", PPB_ImageData_CreateDispatcher },
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py b/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py
index fe6354a..62b4779 100755
--- a/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py
+++ b/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py
@@ -71,6 +71,7 @@ all_units = [
'ppb_gamepad.srpc',
'ppb_graphics_2d.srpc',
'ppb_graphics_3d.srpc',
+ 'ppb_host_resolver_private.srpc',
'ppb_image_data.srpc',
'ppb_input_event.srpc',
'ppb_instance.srpc',
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h
index 67cd5be..7731ded 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h
+++ b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h
@@ -671,6 +671,51 @@ class PpbGraphics3DRpcServer {
void operator=(const PpbGraphics3DRpcServer);
}; // class PpbGraphics3DRpcServer
+class PpbHostResolverPrivateRpcServer {
+ public:
+ static void PPB_HostResolver_Private_Create(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Instance instance,
+ PP_Resource* resource);
+ static void PPB_HostResolver_Private_IsHostResolver(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Resource resource,
+ int32_t* is_host_resolver);
+ static void PPB_HostResolver_Private_Resolve(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Resource host_resolver,
+ const char* host,
+ int32_t port,
+ nacl_abi_size_t hint_bytes, char* hint,
+ int32_t callback_id,
+ int32_t* pp_error);
+ static void PPB_HostResolver_Private_GetCanonicalName(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Resource host_resolver,
+ nacl_abi_size_t* canonical_name_bytes, char* canonical_name);
+ static void PPB_HostResolver_Private_GetSize(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Resource host_resolver,
+ int32_t* size);
+ static void PPB_HostResolver_Private_GetNetAddress(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ PP_Resource host_resolver,
+ int32_t index,
+ nacl_abi_size_t* addr_bytes, char* addr,
+ int32_t* success);
+
+ private:
+ PpbHostResolverPrivateRpcServer();
+ PpbHostResolverPrivateRpcServer(const PpbHostResolverPrivateRpcServer&);
+ void operator=(const PpbHostResolverPrivateRpcServer);
+}; // class PpbHostResolverPrivateRpcServer
+
class PpbImageDataRpcServer {
public:
static void PPB_ImageData_GetNativeImageDataFormat(
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h
index d5bc6e4..1b6a485 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h
+++ b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h
@@ -585,6 +585,45 @@ class PpbGraphics3DRpcClient {
void operator=(const PpbGraphics3DRpcClient);
}; // class PpbGraphics3DRpcClient
+class PpbHostResolverPrivateRpcClient {
+ public:
+ static NaClSrpcError PPB_HostResolver_Private_Create(
+ NaClSrpcChannel* channel,
+ PP_Instance instance,
+ PP_Resource* resource);
+ static NaClSrpcError PPB_HostResolver_Private_IsHostResolver(
+ NaClSrpcChannel* channel,
+ PP_Resource resource,
+ int32_t* is_host_resolver);
+ static NaClSrpcError PPB_HostResolver_Private_Resolve(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ const char* host,
+ int32_t port,
+ nacl_abi_size_t hint_bytes, char* hint,
+ int32_t callback_id,
+ int32_t* pp_error);
+ static NaClSrpcError PPB_HostResolver_Private_GetCanonicalName(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ nacl_abi_size_t* canonical_name_bytes, char* canonical_name);
+ static NaClSrpcError PPB_HostResolver_Private_GetSize(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ int32_t* size);
+ static NaClSrpcError PPB_HostResolver_Private_GetNetAddress(
+ NaClSrpcChannel* channel,
+ PP_Resource host_resolver,
+ int32_t index,
+ nacl_abi_size_t* addr_bytes, char* addr,
+ int32_t* success);
+
+ private:
+ PpbHostResolverPrivateRpcClient();
+ PpbHostResolverPrivateRpcClient(const PpbHostResolverPrivateRpcClient&);
+ void operator=(const PpbHostResolverPrivateRpcClient);
+}; // class PpbHostResolverPrivateRpcClient
+
class PpbImageDataRpcClient {
public:
static NaClSrpcError PPB_ImageData_GetNativeImageDataFormat(
diff --git a/ppapi/ppapi_sources.gypi b/ppapi/ppapi_sources.gypi
index 63df7467..536f8f3 100644
--- a/ppapi/ppapi_sources.gypi
+++ b/ppapi/ppapi_sources.gypi
@@ -98,6 +98,7 @@
'c/private/ppb_flash_tcp_socket.h',
'c/private/ppb_flash_udp_socket.h',
'c/private/ppb_gpu_blacklist_private.h',
+ 'c/private/ppb_host_resolver_private.h',
'c/private/ppb_instance_private.h',
'c/private/ppb_nacl_private.h',
'c/private/ppb_net_address_private.h',
@@ -106,6 +107,7 @@
'c/private/ppp_instance_private.h',
'c/private/ppb_network_list_private.h',
'c/private/ppb_network_monitor_private.h',
+ 'c/private/ppb_tcp_server_socket_private.h',
'c/private/ppb_tcp_socket_private.h',
'c/private/ppb_udp_socket_private.h',
@@ -311,6 +313,8 @@
'tests/test_case.h',
'tests/test_empty.cc',
'tests/test_empty.h',
+ 'tests/test_host_resolver_private.cc',
+ 'tests/test_host_resolver_private.h',
'tests/test_net_address_private_untrusted.cc',
'tests/test_net_address_private_untrusted.h',
'tests/test_tcp_server_socket_private.cc',
@@ -403,8 +407,6 @@
'tests/test_graphics_2d.h',
'tests/test_graphics_3d.cc',
'tests/test_graphics_3d.h',
- 'tests/test_host_resolver_private.cc',
- 'tests/test_host_resolver_private.h',
'tests/test_image_data.cc',
'tests/test_image_data.h',
'tests/test_input_event.cc',