diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-10 00:03:15 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-10 00:03:15 +0000 |
commit | f64d3d12f9ce8367f40d31ae3404f45f3c7ed008 (patch) | |
tree | 1add4761e39af835552d32e9510c01b6d5614545 /ppapi | |
parent | 4f8b560a7a5f8cd6113ddcd125e554859dbf3330 (diff) | |
download | chromium_src-f64d3d12f9ce8367f40d31ae3404f45f3c7ed008.zip chromium_src-f64d3d12f9ce8367f40d31ae3404f45f3c7ed008.tar.gz chromium_src-f64d3d12f9ce8367f40d31ae3404f45f3c7ed008.tar.bz2 |
NaCl proxy for PPB_NetworkMonitor_Private
BUG=139965
Review URL: https://chromiumcodereview.appspot.com/10823187
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150946 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
29 files changed, 1367 insertions, 4 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 e50b2e6..3214fb4 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.cc @@ -321,6 +321,20 @@ const PPB_NetAddress_Private* PPBNetAddressPrivateInterface() { return ppb; } +const PPB_NetworkList_Private* PPBNetworkListPrivateInterface() { + static const PPB_NetworkList_Private* ppb = + static_cast<const PPB_NetworkList_Private*>( + GetBrowserInterfaceSafe(PPB_NETWORKLIST_PRIVATE_INTERFACE)); + return ppb; +} + +const PPB_NetworkMonitor_Private* PPBNetworkMonitorPrivateInterface() { + static const PPB_NetworkMonitor_Private* ppb = + static_cast<const PPB_NetworkMonitor_Private*>( + GetBrowserInterfaceSafe(PPB_NETWORKMONITOR_PRIVATE_INTERFACE)); + return ppb; +} + const PPB_URLLoader* PPBURLLoaderInterface() { static const PPB_URLLoader* ppb = static_cast<const PPB_URLLoader*>( 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 d8f37a9..f25656c 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_globals.h @@ -38,6 +38,8 @@ #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_network_list_private.h" +#include "ppapi/c/private/ppb_network_monitor_private.h" #include "ppapi/c/private/ppb_pdf.h" #include "ppapi/c/private/ppb_tcp_server_socket_private.h" #include "ppapi/c/private/ppb_tcp_socket_private.h" @@ -124,6 +126,8 @@ const PPB_MouseInputEvent* PPBMouseInputEventInterface(); const PPB_Messaging* PPBMessagingInterface(); const PPB_MouseLock* PPBMouseLockInterface(); const PPB_NetAddress_Private* PPBNetAddressPrivateInterface(); +const PPB_NetworkList_Private* PPBNetworkListPrivateInterface(); +const PPB_NetworkMonitor_Private* PPBNetworkMonitorPrivateInterface(); const PPB_PDF* PPBPDFInterface(); const PPB_Scrollbar_Dev* PPBScrollbarInterface(); const PPB_TCPServerSocket_Private* PPBTCPServerSocketPrivateInterface(); diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_list_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_list_private_rpc_server.cc new file mode 100644 index 0000000..7b1ac72 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_list_private_rpc_server.cc @@ -0,0 +1,177 @@ +// 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_NetworkList_Private functions. + +#include <string.h> +#include <algorithm> +#include <limits> + +#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/c/private/ppb_udp_socket_private.h" +#include "srpcgen/ppb_rpc.h" + +using ppapi_proxy::DebugPrintf; +using ppapi_proxy::DeleteRemoteCallbackInfo; +using ppapi_proxy::MakeRemoteCompletionCallback; +using ppapi_proxy::PPBNetworkListPrivateInterface; +using ppapi_proxy::SerializeTo; + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_IsNetworkList( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* out_bool) { + DebugPrintf("PPB_NetworkList_Private::IsNetworkList: " + "resource=%"NACL_PRId32"\n", resource); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + PP_Bool pp_success = + PPBNetworkListPrivateInterface()->IsNetworkList(resource); + *out_bool = PP_ToBool(pp_success); + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetCount( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* count) { + DebugPrintf("PPB_NetworkList_Private::GetCount: " + "resource=%"NACL_PRId32"\n", resource); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + *count = PPBNetworkListPrivateInterface()->GetCount(resource); + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetName( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* name_bytes, char* name) { + DebugPrintf("PPB_NetworkList_Private::GetName: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + PP_Var pp_string = + PPBNetworkListPrivateInterface()->GetName(resource, index); + if (SerializeTo(&pp_string, name, name_bytes)) + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetType( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* type) { + DebugPrintf("PPB_NetworkList_Private::GetType: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + *type = PPBNetworkListPrivateInterface()->GetType(resource, index); + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetState( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* state) { + DebugPrintf("PPB_NetworkList_Private::GetState: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + *state = PPBNetworkListPrivateInterface()->GetState(resource, index); + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetIpAddresses( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* addr_bytes, char* addr, + int32_t* result) { + DebugPrintf("PPB_NetworkList_Private::GetIpAddresses: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + int addr_buffer_size = *addr_bytes / sizeof(PP_NetAddress_Private); + *result = PPBNetworkListPrivateInterface()->GetIpAddresses( + resource, index, + reinterpret_cast<PP_NetAddress_Private*>(addr), addr_buffer_size); + + *addr_bytes = std::min( + static_cast<nacl_abi_size_t>(*result * sizeof(PP_NetAddress_Private)), + *addr_bytes); + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetDisplayName( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* display_name_bytes, char* display_name) { + DebugPrintf("PPB_NetworkList_Private::GetDisplayName: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + PP_Var pp_string = + PPBNetworkListPrivateInterface()->GetDisplayName(resource, index); + + if (SerializeTo(&pp_string, display_name, display_name_bytes)) + rpc->result = NACL_SRPC_RESULT_OK; +} + +void PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetMTU( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* mtu) { + DebugPrintf("PPB_NetworkList_Private::GetMTU: " + "resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + *mtu = PPBNetworkListPrivateInterface()->GetMTU(resource, index); + + rpc->result = NACL_SRPC_RESULT_OK; +} diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_monitor_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_monitor_private_rpc_server.cc new file mode 100644 index 0000000..1078d2b --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_network_monitor_private_rpc_server.cc @@ -0,0 +1,90 @@ +// 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_NetworkMonitor_Private functions. + +#include <string.h> +#include <limits> + +#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/utility.h" +#include "ppapi/c/pp_completion_callback.h" +#include "ppapi/c/pp_errors.h" +#include "ppapi/c/private/ppb_udp_socket_private.h" +#include "srpcgen/ppb_rpc.h" +#include "srpcgen/ppp_rpc.h" + +using ppapi_proxy::DebugPrintf; +using ppapi_proxy::DeleteRemoteCallbackInfo; +using ppapi_proxy::MakeRemoteCompletionCallback; +using ppapi_proxy::PPBNetworkMonitorPrivateInterface; + +namespace { + +struct NetworkListCallbackData { + PP_Instance instance_id; + PP_Resource network_monitor; +}; + +void NetworkListChangedCallback(void* user_data, PP_Resource network_list) { + NetworkListCallbackData* data = + reinterpret_cast<NetworkListCallbackData*>(user_data); + + NaClSrpcChannel* nacl_srpc_channel = ppapi_proxy::GetMainSrpcChannel( + data->instance_id); + PppNetworkMonitorPrivateRpcClient:: + PPP_NetworkMonitor_Private_NetworkListChanged( + nacl_srpc_channel, data->network_monitor, network_list); +} + +} // namespace + +void PpbNetworkMonitorPrivateServer::PPB_NetworkMonitor_Private_Create( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Instance instance, + PP_Resource* resource) { + DebugPrintf("PPB_NetworkMonitor_Private::Create: " + "instance=%"NACL_PRId32"\n", instance); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + // NetworkListCallbackData is always leaked - it's non-trivial to detect when + // NetworkMonitor resource is destroyed. This code is going to be removed + // soon, so it doesn't make sense to fix it. + // + // TODO(sergeyu): Fix this leak if for any reason we decide to keep this code + // long term. + NetworkListCallbackData* callback_data = new NetworkListCallbackData(); + callback_data->instance_id = instance; + + *resource = PPBNetworkMonitorPrivateInterface()->Create( + instance, &NetworkListChangedCallback, callback_data); + + callback_data->network_monitor = *resource; + + rpc->result = NACL_SRPC_RESULT_OK; +} + +void +PpbNetworkMonitorPrivateServer::PPB_NetworkMonitor_Private_IsNetworkMonitor( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* out_bool) { + DebugPrintf("PPB_NetworkMonitor_Private::IsNetworkMonitor: " + "resource=%"NACL_PRId32"\n", resource); + + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_APP_ERROR; + + PP_Bool pp_success = + PPBNetworkMonitorPrivateInterface()->IsNetworkMonitor(resource); + *out_bool = PP_ToBool(pp_success); + + rpc->result = NACL_SRPC_RESULT_OK; +} diff --git a/ppapi/native_client/src/shared/ppapi_proxy/build.scons b/ppapi/native_client/src/shared/ppapi_proxy/build.scons index 30da006f..c047993 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/build.scons +++ b/ppapi/native_client/src/shared/ppapi_proxy/build.scons @@ -55,6 +55,8 @@ env.DualLibrary('ppapi_browser', 'browser_ppb_mouse_cursor_rpc_server.cc', 'browser_ppb_mouse_lock_rpc_server.cc', 'browser_ppb_net_address_private_rpc_server.cc', + 'browser_ppb_network_list_private_rpc_server.cc', + 'browser_ppb_network_monitor_private_rpc_server.cc', 'browser_ppb_pdf_rpc_server.cc', 'browser_ppb_rpc_server.cc', 'browser_ppb_scrollbar_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 1b01662..0d8a46d 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons +++ b/ppapi/native_client/src/shared/ppapi_proxy/nacl.scons @@ -77,6 +77,8 @@ libppruntime = env.NaClSdkLibrary( 'plugin_ppb_mouse_cursor.cc', 'plugin_ppb_mouse_lock.cc', 'plugin_ppb_net_address_private.cc', + 'plugin_ppb_network_list_private.cc', + 'plugin_ppb_network_monitor_private.cc', 'plugin_ppb_pdf.cc', 'plugin_ppb_scrollbar.cc', 'plugin_ppb_tcp_server_socket_private.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 ed3f6739..f665191 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc @@ -29,6 +29,8 @@ #include "native_client/src/shared/ppapi_proxy/plugin_ppb_mouse_cursor.h" #include "native_client/src/shared/ppapi_proxy/plugin_ppb_mouse_lock.h" #include "native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h" +#include "native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.h" +#include "native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.h" #include "native_client/src/shared/ppapi_proxy/plugin_ppb_pdf.h" #include "native_client/src/shared/ppapi_proxy/plugin_ppb_scrollbar.h" #include "native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_server_socket_private.h" @@ -96,6 +98,10 @@ InterfaceMapElement interface_map[] = { PluginNetAddressPrivate::GetInterface1_0(), true }, { PPB_NETADDRESS_PRIVATE_INTERFACE_1_1, PluginNetAddressPrivate::GetInterface1_1(), true }, + { PPB_NETWORKLIST_PRIVATE_INTERFACE, PluginNetworkListPrivate::GetInterface(), + true }, + { PPB_NETWORKMONITOR_PRIVATE_INTERFACE, + PluginNetworkMonitorPrivate::GetInterface(), true }, { PPB_OPENGLES2_INTERFACE_1_0, PluginGraphics3D::GetOpenGLESInterface(), true }, { PPB_OPENGLES2_INSTANCEDARRAYS_INTERFACE_1_0, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.cc new file mode 100644 index 0000000..63035ec --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.cc @@ -0,0 +1,208 @@ +// 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_network_list_private.h" + +#include "native_client/src/include/nacl_macros.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_completion_callback.h" +#include "ppapi/c/pp_errors.h" +#include "ppapi/c/private/ppb_network_list_private.h" +#include "srpcgen/ppb_rpc.h" + +namespace ppapi_proxy { + +namespace { + +PP_Bool IsNetworkList(PP_Resource resource) { + DebugPrintf("PPB_NetworkList_Private::IsNetworkList: " + "resource=%"NACL_PRId32"\n", resource); + + int32_t is_network_list; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_IsNetworkList( + GetMainSrpcChannel(), resource, &is_network_list); + + DebugPrintf("PPB_NetworkList_Private::IsNetworkList: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result != NACL_SRPC_RESULT_OK) + return PP_FALSE; + + return PP_FromBool(is_network_list); +} + +uint32_t GetCount(PP_Resource resource) { + DebugPrintf("PPB_NetworkList_Private::GetCount: " + "resource=%"NACL_PRId32"\n", resource); + + int32_t count; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetCount( + GetMainSrpcChannel(), resource, &count); + + DebugPrintf("PPB_NetworkList_Private::GetCount: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result != NACL_SRPC_RESULT_OK) + return 0; + + return count; +} + +struct PP_Var GetName(PP_Resource resource, uint32_t index) { + DebugPrintf("PPB_NetworkList_Private::GetName:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + nacl_abi_size_t name_size = kMaxReturnVarSize; + nacl::scoped_array<char> name_bytes(new char[name_size]); + if (name_bytes.get() == NULL) + return PP_MakeUndefined(); + + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetName( + GetMainSrpcChannel(), resource, index, + &name_size, name_bytes.get()); + + struct PP_Var name = PP_MakeUndefined(); + if (srpc_result == NACL_SRPC_RESULT_OK) + DeserializeTo(name_bytes.get(), name_size, 1, &name); + + DebugPrintf("PPB_NetworkList_Private::GetName: %s\n", + NaClSrpcErrorString(srpc_result)); + + return name; +} + +PP_NetworkListType_Private GetType(PP_Resource resource, uint32_t index) { + DebugPrintf("PPB_NetworkList_Private::GetType:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + int32_t type; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetType( + GetMainSrpcChannel(), resource, index, &type); + + DebugPrintf("PPB_NetworkList_Private::GetType: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result == NACL_SRPC_RESULT_OK) + return PP_NETWORKLIST_UNKNOWN; + + return static_cast<PP_NetworkListType_Private>(type); +} + +PP_NetworkListState_Private GetState(PP_Resource resource, uint32_t index) { + DebugPrintf("PPB_NetworkList_Private::GetState:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + int32_t state; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetState( + GetMainSrpcChannel(), resource, index, &state); + + DebugPrintf("PPB_NetworkList_Private::GetState: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result == NACL_SRPC_RESULT_OK) + return PP_NETWORKLIST_DOWN; + + return static_cast<PP_NetworkListState_Private>(state); +} + +int32_t GetIpAddresses(PP_Resource resource, + uint32_t index, + PP_NetAddress_Private addresses[], + uint32_t count) { + DebugPrintf("PPB_NetworkList_Private::GetIpAddresses:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + nacl_abi_size_t addr_size = count * sizeof(PP_NetAddress_Private); + int32_t addr_count; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetIpAddresses( + GetMainSrpcChannel(), resource, index, + &addr_size, reinterpret_cast<char*>(addresses), + &addr_count); + + DebugPrintf("PPB_NetworkList_Private::GetIpAddresses: %s\n", + NaClSrpcErrorString(srpc_result)); + + DCHECK(addr_count > count || + addr_count * sizeof(PP_NetAddress_Private) == addr_size); + + return addr_count; +} + +struct PP_Var GetDisplayName(PP_Resource resource, uint32_t index) { + DebugPrintf("PPB_NetworkList_Private::GetDisplayName:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + nacl_abi_size_t name_size = kMaxReturnVarSize; + nacl::scoped_array<char> name_bytes(new char[name_size]); + if (name_bytes.get() == NULL) + return PP_MakeUndefined(); + + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetDisplayName( + GetMainSrpcChannel(), resource, index, + &name_size, name_bytes.get()); + + struct PP_Var name = PP_MakeUndefined(); + if (srpc_result == NACL_SRPC_RESULT_OK) + DeserializeTo(name_bytes.get(), name_size, 1, &name); + + DebugPrintf("PPB_NetworkList_Private::GetDisplayName: %s\n", + NaClSrpcErrorString(srpc_result)); + + return name; +} + +uint32_t GetMTU(PP_Resource resource, uint32_t index) { + DebugPrintf("PPB_NetworkList_Private::GetMTU:" + " resource=%"NACL_PRId32" index=%"NACL_PRId32"\n", + resource, index); + + int32_t mtu; + NaClSrpcError srpc_result = PpbNetworkListPrivateClient:: + PPB_NetworkList_Private_GetMTU( + GetMainSrpcChannel(), resource, index, &mtu); + + DebugPrintf("PPB_NetworkList_Private::GetMTU: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result == NACL_SRPC_RESULT_OK) + return PP_NETWORKLIST_UNKNOWN; + + return mtu; +} + +} // namespace + +const PPB_NetworkList_Private* PluginNetworkListPrivate::GetInterface() { + static const PPB_NetworkList_Private networklist_private_interface = { + IsNetworkList, + GetCount, + GetName, + GetType, + GetState, + GetIpAddresses, + GetDisplayName, + GetMTU, + }; + return &networklist_private_interface; +} + +} // namespace ppapi_proxy diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.h b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_private.h new file mode 100644 index 0000000..de6e4d3 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_list_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_NETWORK_LIST_PRIVATE_H_ +#define NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_NETWORK_LIST_PRIVATE_H_ + +#include "native_client/src/include/nacl_macros.h" +#include "ppapi/c/private/ppb_network_list_private.h" + +namespace ppapi_proxy { + +// Implements the untrusted side of the PPB_NetworkList_Private interface. +class PluginNetworkListPrivate { + public: + static const PPB_NetworkList_Private* GetInterface(); + + private: + NACL_DISALLOW_COPY_AND_ASSIGN(PluginNetworkListPrivate); +}; + +} // namespace ppapi_proxy + +#endif // NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_NETWORK_LIST_PRIVATE_H_ diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.cc new file mode 100644 index 0000000..eb891f7 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.cc @@ -0,0 +1,128 @@ +// 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_network_monitor_private.h" + +#include "native_client/src/include/nacl_macros.h" +#include "native_client/src/include/portability.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_completion_callback.h" +#include "ppapi/c/pp_errors.h" +#include "ppapi/c/private/ppb_network_monitor_private.h" +#include "srpcgen/ppb_rpc.h" +#include "srpcgen/ppp_rpc.h" + +namespace ppapi_proxy { + +PluginNetworkMonitorPrivate::PluginNetworkMonitorPrivate() + : network_list_callback_(NULL), + user_data_(NULL) { +} + +PluginNetworkMonitorPrivate::~PluginNetworkMonitorPrivate() { +} + +void PluginNetworkMonitorPrivate::OnNetworkListChanged( + PP_Resource list_resource) { + DCHECK(network_list_callback_); + network_list_callback_(user_data_, list_resource); +} + + +namespace { + +PP_Resource Create(PP_Instance instance_id, + PPB_NetworkMonitor_Callback callback, + void* user_data) { + DebugPrintf("PPB_NetworkMonitor_Private::Create: " + "instance_id=%"NACL_PRId32"\n", instance_id); + + if (NULL == callback) + return kInvalidResourceId; + + PP_Resource resource; + NaClSrpcError srpc_result = + PpbNetworkMonitorPrivateClient::PPB_NetworkMonitor_Private_Create( + GetMainSrpcChannel(), instance_id, &resource); + + DebugPrintf("PPB_NetworkMonitor_Private::Create: %d %s\n", + resource, NaClSrpcErrorString(srpc_result)); + + if (srpc_result != NACL_SRPC_RESULT_OK) + return kInvalidResourceId; + + scoped_refptr<PluginNetworkMonitorPrivate> network_monitor = + PluginResource::AdoptAs<PluginNetworkMonitorPrivate>(resource); + if (!network_monitor.get()) + return kInvalidResourceId; + + network_monitor->set_callback(callback, user_data); + + return resource; +} + +PP_Bool IsNetworkMonitor(PP_Resource resource_id) { + DebugPrintf("PPB_NetworkMonitor_Private::IsNetworkMonitor: " + "resource_id=%"NACL_PRId32"\n", resource_id); + + int32_t is_network_monitor; + NaClSrpcError srpc_result = PpbNetworkMonitorPrivateClient:: + PPB_NetworkMonitor_Private_IsNetworkMonitor( + GetMainSrpcChannel(), resource_id, &is_network_monitor); + + DebugPrintf("PPB_NetworkMonitor_Private::IsNetworkMonitor: %s\n", + NaClSrpcErrorString(srpc_result)); + + if (srpc_result != NACL_SRPC_RESULT_OK) + return PP_FALSE; + + return PP_FromBool(is_network_monitor); +} + +} // namespace + +const PPB_NetworkMonitor_Private* +PluginNetworkMonitorPrivate::GetInterface() { + static const PPB_NetworkMonitor_Private networkmonitor_private_interface = { + Create, + IsNetworkMonitor, + }; + return &networkmonitor_private_interface; +} + +bool PluginNetworkMonitorPrivate::InitFromBrowserResource( + PP_Resource resource) { + DebugPrintf("PluginNetworkMonitorPrivate::InitFromBrowserResource: " + "resource=%"NACL_PRId32"\n", resource); + resource_ = resource; + return true; +} + +} // namespace ppapi_proxy + +void +PppNetworkMonitorPrivateRpcServer:: +PPP_NetworkMonitor_Private_NetworkListChanged( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource network_monitor_id, + PP_Resource network_list) { + NaClSrpcClosureRunner runner(done); + rpc->result = NACL_SRPC_RESULT_OK; + ppapi_proxy::DebugPrintf( + "PPP_NetworkMonitor_Private::NetworkListChanged: " + "network_monitor_id=%"NACL_PRId32" network_list=%"NACL_PRId32"\n", + network_monitor_id, network_list); + scoped_refptr<ppapi_proxy::PluginNetworkMonitorPrivate> network_monitor = + ppapi_proxy::PluginResource:: + GetAs<ppapi_proxy::PluginNetworkMonitorPrivate>(network_monitor_id); + + if (!network_monitor.get()) + return; + + network_monitor->OnNetworkListChanged(network_list); +} diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.h b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.h new file mode 100644 index 0000000..75396f1 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_network_monitor_private.h @@ -0,0 +1,49 @@ +// 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_PPB_NETWORK_MONITOR_PRIVATE_H_ +#define NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_PPB_NETWORK_MONITOR_PRIVATE_H_ + +#include <pthread.h> +#include "native_client/src/include/nacl_base.h" +#include "native_client/src/include/nacl_macros.h" +#include "native_client/src/include/portability.h" +#include "native_client/src/include/ref_counted.h" +#include "native_client/src/shared/ppapi_proxy/plugin_resource.h" +#include "native_client/src/shared/srpc/nacl_srpc.h" +#include "ppapi/c/pp_resource.h" +#include "ppapi/c/private/ppb_network_monitor_private.h" + +namespace ppapi_proxy { + +class PluginNetworkMonitorPrivate : public PluginResource { + public: + PluginNetworkMonitorPrivate(); + + void set_callback(PPB_NetworkMonitor_Callback network_list_callback, + void* user_data) { + network_list_callback_ = network_list_callback; + user_data_ = user_data; + } + + void OnNetworkListChanged(PP_Resource list_resource); + + static const PPB_NetworkMonitor_Private* GetInterface(); + virtual bool InitFromBrowserResource(PP_Resource resource); + + protected: + virtual ~PluginNetworkMonitorPrivate(); + + private: + PP_Resource resource_; + PPB_NetworkMonitor_Callback network_list_callback_; + void* user_data_; + + IMPLEMENT_RESOURCE(PluginNetworkMonitorPrivate); + NACL_DISALLOW_COPY_AND_ASSIGN(PluginNetworkMonitorPrivate); +}; + +} // namespace ppapi_proxy + +#endif // NATIVE_CLIENT_SRC_SHARED_PPAPI_PROXY_PLUGIN_PPB_NETWORK_MONITOR_PRIVATE_H_AUDIO_H_ diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_socket_private.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_socket_private.cc index 13baa22..3d745be 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_socket_private.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_socket_private.cc @@ -5,6 +5,7 @@ #include "native_client/src/shared/ppapi_proxy/plugin_ppb_tcp_socket_private.h" #include <string.h> + #include "native_client/src/include/nacl_macros.h" #include "native_client/src/include/portability.h" #include "native_client/src/shared/ppapi_proxy/plugin_callback.h" diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_resource.h b/ppapi/native_client/src/shared/ppapi_proxy/plugin_resource.h index b80cf00..91e7933 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_resource.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_resource.h @@ -22,6 +22,7 @@ namespace ppapi_proxy { F(PluginGraphics3D) \ F(PluginImageData) \ F(PluginInputEvent) \ + F(PluginNetworkMonitorPrivate) \ F(PluginView) // Forward declaration of PluginResource classes. 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 ccf76e9..602e426 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppapi_proxy.gyp @@ -50,6 +50,8 @@ 'browser_ppb_mouse_cursor_rpc_server.cc', 'browser_ppb_mouse_lock_rpc_server.cc', 'browser_ppb_net_address_private_rpc_server.cc', + 'browser_ppb_network_list_private_rpc_server.cc', + 'browser_ppb_network_monitor_private_rpc_server.cc', 'browser_ppb_pdf_rpc_server.cc', 'browser_ppb_rpc_server.cc', 'browser_ppb_scrollbar_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 8af75af..7994bdb 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 @@ -57,8 +57,8 @@ 'plugin_ppb_buffer.cc', 'plugin_ppb_core.cc', 'plugin_ppb_file_io.cc', - 'plugin_ppb_file_system.cc', 'plugin_ppb_file_ref.cc', + 'plugin_ppb_file_system.cc', 'plugin_ppb_find.cc', 'plugin_ppb_font.cc', 'plugin_ppb_fullscreen.cc', @@ -74,6 +74,8 @@ 'plugin_ppb_mouse_cursor.cc', 'plugin_ppb_mouse_lock.cc', 'plugin_ppb_net_address_private.cc', + 'plugin_ppb_network_list_private.cc', + 'plugin_ppb_network_monitor_private.cc', 'plugin_ppb_pdf.cc', 'plugin_ppb_scrollbar.cc', 'plugin_ppb_tcp_server_socket_private.cc', diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_list_private.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_list_private.srpc new file mode 100644 index 0000000..086f1bc --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_list_private.srpc @@ -0,0 +1,68 @@ +# 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. + +# This file declares the RPC methods used to implement +# PPB_NetworkList_Private calls from the plugin. The functions are described +# in ppapi/c/private/ppb_network_list.h. + +{ + 'name': 'PpbNetworkListPrivate', + 'rpcs': [ + {'name': 'PPB_NetworkList_Private_IsNetworkList', + 'inputs': [['resource', 'PP_Resource'], + ], + 'outputs': [['out_bool', 'int32_t'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetCount', + 'inputs': [['resource', 'PP_Resource'], + ], + 'outputs': [['count', 'int32_t'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetName', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['name', 'char[]'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetType', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['type', 'int32_t'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetState', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['state', 'int32_t'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetIpAddresses', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['addr', 'char[]'], # PP_NetAddress_Private[] + ['addresses_count', 'int32_t'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetDisplayName', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['display_name', 'char[]'], + ] + }, + {'name': 'PPB_NetworkList_Private_GetMTU', + 'inputs': [['resource', 'PP_Resource'], + ['index', 'int32_t'], + ], + 'outputs': [['mtu', 'int32_t'], + ] + }, + ] +} diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_monitor_private.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_monitor_private.srpc new file mode 100644 index 0000000..e2a4d54 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_network_monitor_private.srpc @@ -0,0 +1,25 @@ +# 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. + +# This file declares the RPC methods used to implement +# PPB_NetworkMonitor_Private calls from the plugin. The functions are described +# in ppapi/c/private/ppb_network_monitor.h. + +{ + 'name': 'PpbNetworkMonitorPrivate', + 'rpcs': [ + {'name': 'PPB_NetworkMonitor_Private_Create', + 'inputs': [['instance', 'PP_Instance'], + ], + 'outputs': [['out_resource', 'PP_Resource'], + ] + }, + {'name': 'PPB_NetworkMonitor_Private_IsNetworkMonitor', + 'inputs': [['resource', 'PP_Resource'], + ], + 'outputs': [['out_bool', 'int32_t'], + ] + }, + ] +} 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 31ff01c..a330406 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 @@ -2182,6 +2182,190 @@ NaClSrpcError PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_CreateFromIP return retval; } +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_IsNetworkList( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* out_bool) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_IsNetworkList:i:i", + resource, + out_bool + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetCount( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* count) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetCount:i:i", + resource, + count + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetName( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* name_bytes, char* name) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetName:ii:C", + resource, + index, + name_bytes, name + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetType( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* type) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetType:ii:i", + resource, + index, + type + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetState( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* state) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetState:ii:i", + resource, + index, + state + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetIpAddresses( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* addr_bytes, char* addr, + int32_t* addresses_count) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetIpAddresses:ii:Ci", + resource, + index, + addr_bytes, addr, + addresses_count + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetDisplayName( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* display_name_bytes, char* display_name) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetDisplayName:ii:C", + resource, + index, + display_name_bytes, display_name + ); + return retval; +} + +NaClSrpcError PpbNetworkListPrivateClient::PPB_NetworkList_Private_GetMTU( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* mtu) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkList_Private_GetMTU:ii:i", + resource, + index, + mtu + ); + return retval; +} + +NaClSrpcError PpbNetworkMonitorPrivateClient::PPB_NetworkMonitor_Private_Create( + NaClSrpcChannel* channel, + PP_Instance instance, + PP_Resource* out_resource) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkMonitor_Private_Create:i:i", + instance, + out_resource + ); + return retval; +} + +NaClSrpcError PpbNetworkMonitorPrivateClient::PPB_NetworkMonitor_Private_IsNetworkMonitor( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* out_bool) { + VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(), + ("%s: PPAPI calls are not supported off the main thread\n", + __FUNCTION__)); + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPB_NetworkMonitor_Private_IsNetworkMonitor:i:i", + resource, + out_bool + ); + return retval; +} + NaClSrpcError PpbPdfRpcClient::PPB_PDF_GetLocalizedString( NaClSrpcChannel* channel, PP_Instance instance, 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 69316ea..832b872 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 @@ -1740,6 +1740,153 @@ static void PPB_NetAddress_Private_CreateFromIPv6AddressDispatcher( ); } +static void PPB_NetworkList_Private_IsNetworkListDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_IsNetworkList( + rpc, + done, + inputs[0]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkList_Private_GetCountDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetCount( + rpc, + done, + inputs[0]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkList_Private_GetNameDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetName( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + &(outputs[0]->u.count), outputs[0]->arrays.carr + ); +} + +static void PPB_NetworkList_Private_GetTypeDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetType( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkList_Private_GetStateDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetState( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkList_Private_GetIpAddressesDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetIpAddresses( + 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_NetworkList_Private_GetDisplayNameDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetDisplayName( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + &(outputs[0]->u.count), outputs[0]->arrays.carr + ); +} + +static void PPB_NetworkList_Private_GetMTUDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkListPrivateServer::PPB_NetworkList_Private_GetMTU( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkMonitor_Private_CreateDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkMonitorPrivateServer::PPB_NetworkMonitor_Private_Create( + rpc, + done, + inputs[0]->u.ival, + &(outputs[0]->u.ival) + ); +} + +static void PPB_NetworkMonitor_Private_IsNetworkMonitorDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + PpbNetworkMonitorPrivateServer::PPB_NetworkMonitor_Private_IsNetworkMonitor( + rpc, + done, + inputs[0]->u.ival, + &(outputs[0]->u.ival) + ); +} + static void PPB_PDF_GetLocalizedStringDispatcher( NaClSrpcRpc* rpc, NaClSrpcArg** inputs, @@ -3193,6 +3340,16 @@ NaClSrpcHandlerDesc PpbRpcs::srpc_methods[] = { { "PPB_NetAddress_Private_GetScopeID:C:i", PPB_NetAddress_Private_GetScopeIDDispatcher }, { "PPB_NetAddress_Private_CreateFromIPv4Address:Ci:C", PPB_NetAddress_Private_CreateFromIPv4AddressDispatcher }, { "PPB_NetAddress_Private_CreateFromIPv6Address:Cii:C", PPB_NetAddress_Private_CreateFromIPv6AddressDispatcher }, + { "PPB_NetworkList_Private_IsNetworkList:i:i", PPB_NetworkList_Private_IsNetworkListDispatcher }, + { "PPB_NetworkList_Private_GetCount:i:i", PPB_NetworkList_Private_GetCountDispatcher }, + { "PPB_NetworkList_Private_GetName:ii:C", PPB_NetworkList_Private_GetNameDispatcher }, + { "PPB_NetworkList_Private_GetType:ii:i", PPB_NetworkList_Private_GetTypeDispatcher }, + { "PPB_NetworkList_Private_GetState:ii:i", PPB_NetworkList_Private_GetStateDispatcher }, + { "PPB_NetworkList_Private_GetIpAddresses:ii:Ci", PPB_NetworkList_Private_GetIpAddressesDispatcher }, + { "PPB_NetworkList_Private_GetDisplayName:ii:C", PPB_NetworkList_Private_GetDisplayNameDispatcher }, + { "PPB_NetworkList_Private_GetMTU:ii:i", PPB_NetworkList_Private_GetMTUDispatcher }, + { "PPB_NetworkMonitor_Private_Create:i:i", PPB_NetworkMonitor_Private_CreateDispatcher }, + { "PPB_NetworkMonitor_Private_IsNetworkMonitor:i:i", PPB_NetworkMonitor_Private_IsNetworkMonitorDispatcher }, { "PPB_PDF_GetLocalizedString:ii:C", PPB_PDF_GetLocalizedStringDispatcher }, { "PPB_PDF_GetResourceImage:ii:i", PPB_PDF_GetResourceImageDispatcher }, { "PPB_PDF_GetFontFileWithFallback:iCCi:i", PPB_PDF_GetFontFileWithFallbackDispatcher }, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppp_network_monitor_private.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppp_network_monitor_private.srpc new file mode 100644 index 0000000..6df4c38 --- /dev/null +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppp_network_monitor_private.srpc @@ -0,0 +1,20 @@ +# 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. + +# This file declares the RPC methods called by the browser used to implement +# PPB_NetworkMonitor_Private interface. Specifically it defines method called by +# the browser when the network list changes. + +{ + 'name': 'PppNetworkMonitorPrivateRpc', + 'rpcs': [ + # NetworkListChanged + {'name': 'PPP_NetworkMonitor_Private_NetworkListChanged', + 'inputs': [['network_monitor', 'PP_Resource'], + ['network_list', 'PP_Resource'], + ], + 'outputs': [], + }, + ] +} diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_client.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_client.cc index 15cf71d..cf661fb 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_client.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_client.cc @@ -290,6 +290,20 @@ NaClSrpcError PppMouseLockRpcClient::PPP_MouseLock_MouseLockLost( return retval; } +NaClSrpcError PppNetworkMonitorPrivateRpcClient::PPP_NetworkMonitor_Private_NetworkListChanged( + NaClSrpcChannel* channel, + PP_Resource network_monitor, + PP_Resource network_list) { + NaClSrpcError retval; + retval = NaClSrpcInvokeBySignature( + channel, + "PPP_NetworkMonitor_Private_NetworkListChanged:ii:", + network_monitor, + network_list + ); + return retval; +} + NaClSrpcError PppPrintingRpcClient::PPP_Printing_QuerySupportedFormats( NaClSrpcChannel* channel, PP_Instance instance, diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_server.cc index e23bef1..86f3ca5 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_server.cc +++ b/ppapi/native_client/src/shared/ppapi_proxy/ppp_rpc_server.cc @@ -268,6 +268,21 @@ static void PPP_MouseLock_MouseLockLostDispatcher( ); } +static void PPP_NetworkMonitor_Private_NetworkListChangedDispatcher( + NaClSrpcRpc* rpc, + NaClSrpcArg** inputs, + NaClSrpcArg** outputs, + NaClSrpcClosure* done +) { + UNREFERENCED_PARAMETER(outputs); + PppNetworkMonitorPrivateRpcServer::PPP_NetworkMonitor_Private_NetworkListChanged( + rpc, + done, + inputs[0]->u.ival, + inputs[1]->u.ival + ); +} + static void PPP_Printing_QuerySupportedFormatsDispatcher( NaClSrpcRpc* rpc, NaClSrpcArg** inputs, @@ -439,6 +454,7 @@ NaClSrpcHandlerDesc PppRpcs::srpc_methods[] = { { "PPP_Instance_HandleDocumentLoad:ii:i", PPP_Instance_HandleDocumentLoadDispatcher }, { "PPP_Messaging_HandleMessage:iC:", PPP_Messaging_HandleMessageDispatcher }, { "PPP_MouseLock_MouseLockLost:i:", PPP_MouseLock_MouseLockLostDispatcher }, + { "PPP_NetworkMonitor_Private_NetworkListChanged:ii:", PPP_NetworkMonitor_Private_NetworkListChangedDispatcher }, { "PPP_Printing_QuerySupportedFormats:i:i", PPP_Printing_QuerySupportedFormatsDispatcher }, { "PPP_Printing_Begin:iC:i", PPP_Printing_BeginDispatcher }, { "PPP_Printing_PrintPages:iCi:i", PPP_Printing_PrintPagesDispatcher }, 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 27ded6f..017c8e2 100755 --- a/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py +++ b/ppapi/native_client/src/shared/ppapi_proxy/run_srpcgen.py @@ -45,6 +45,7 @@ all_units = [ 'ppp_instance.srpc', 'ppp_messaging.srpc', 'ppp_mouse_lock.srpc', + 'ppp_network_monitor_private.srpc', 'ppp_printing.srpc', 'ppp_scrollbar.srpc', 'ppp_selection.srpc', @@ -77,6 +78,8 @@ all_units = [ 'ppb_mouse_cursor.srpc', 'ppb_mouse_lock.srpc', 'ppb_net_address_private.srpc', + 'ppb_network_list_private.srpc', + 'ppb_network_monitor_private.srpc', 'ppb_pdf.srpc', 'ppb_scrollbar.srpc', 'ppb_tcp_server_socket_private.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 2aea8f8..c0be4b9 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 @@ -898,6 +898,81 @@ class PpbNetAddressPrivateRpcServer { void operator=(const PpbNetAddressPrivateRpcServer); }; // class PpbNetAddressPrivateRpcServer +class PpbNetworkListPrivateServer { + public: + static void PPB_NetworkList_Private_IsNetworkList( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* out_bool); + static void PPB_NetworkList_Private_GetCount( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* count); + static void PPB_NetworkList_Private_GetName( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* name_bytes, char* name); + static void PPB_NetworkList_Private_GetType( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* type); + static void PPB_NetworkList_Private_GetState( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* state); + static void PPB_NetworkList_Private_GetIpAddresses( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* addr_bytes, char* addr, + int32_t* addresses_count); + static void PPB_NetworkList_Private_GetDisplayName( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* display_name_bytes, char* display_name); + static void PPB_NetworkList_Private_GetMTU( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t index, + int32_t* mtu); + + private: + PpbNetworkListPrivateServer(); + PpbNetworkListPrivateServer(const PpbNetworkListPrivateServer&); + void operator=(const PpbNetworkListPrivateServer); +}; // class PpbNetworkListPrivateServer + +class PpbNetworkMonitorPrivateServer { + public: + static void PPB_NetworkMonitor_Private_Create( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Instance instance, + PP_Resource* out_resource); + static void PPB_NetworkMonitor_Private_IsNetworkMonitor( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource resource, + int32_t* out_bool); + + private: + PpbNetworkMonitorPrivateServer(); + PpbNetworkMonitorPrivateServer(const PpbNetworkMonitorPrivateServer&); + void operator=(const PpbNetworkMonitorPrivateServer); +}; // class PpbNetworkMonitorPrivateServer + class PpbPdfRpcServer { public: static void PPB_PDF_GetLocalizedString( diff --git a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppp_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppp_rpc.h index 47d2fb1..25b21cb 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppp_rpc.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppp_rpc.h @@ -165,6 +165,19 @@ class PppMouseLockRpcClient { void operator=(const PppMouseLockRpcClient); }; // class PppMouseLockRpcClient +class PppNetworkMonitorPrivateRpcClient { + public: + static NaClSrpcError PPP_NetworkMonitor_Private_NetworkListChanged( + NaClSrpcChannel* channel, + PP_Resource network_monitor, + PP_Resource network_list); + + private: + PppNetworkMonitorPrivateRpcClient(); + PppNetworkMonitorPrivateRpcClient(const PppNetworkMonitorPrivateRpcClient&); + void operator=(const PppNetworkMonitorPrivateRpcClient); +}; // class PppNetworkMonitorPrivateRpcClient + class PppPrintingRpcClient { public: static NaClSrpcError PPP_Printing_QuerySupportedFormats( 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 b20264a..8a09f72 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 @@ -786,6 +786,71 @@ class PpbNetAddressPrivateRpcClient { void operator=(const PpbNetAddressPrivateRpcClient); }; // class PpbNetAddressPrivateRpcClient +class PpbNetworkListPrivateClient { + public: + static NaClSrpcError PPB_NetworkList_Private_IsNetworkList( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* out_bool); + static NaClSrpcError PPB_NetworkList_Private_GetCount( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* count); + static NaClSrpcError PPB_NetworkList_Private_GetName( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* name_bytes, char* name); + static NaClSrpcError PPB_NetworkList_Private_GetType( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* type); + static NaClSrpcError PPB_NetworkList_Private_GetState( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* state); + static NaClSrpcError PPB_NetworkList_Private_GetIpAddresses( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* addr_bytes, char* addr, + int32_t* addresses_count); + static NaClSrpcError PPB_NetworkList_Private_GetDisplayName( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + nacl_abi_size_t* display_name_bytes, char* display_name); + static NaClSrpcError PPB_NetworkList_Private_GetMTU( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t index, + int32_t* mtu); + + private: + PpbNetworkListPrivateClient(); + PpbNetworkListPrivateClient(const PpbNetworkListPrivateClient&); + void operator=(const PpbNetworkListPrivateClient); +}; // class PpbNetworkListPrivateClient + +class PpbNetworkMonitorPrivateClient { + public: + static NaClSrpcError PPB_NetworkMonitor_Private_Create( + NaClSrpcChannel* channel, + PP_Instance instance, + PP_Resource* out_resource); + static NaClSrpcError PPB_NetworkMonitor_Private_IsNetworkMonitor( + NaClSrpcChannel* channel, + PP_Resource resource, + int32_t* out_bool); + + private: + PpbNetworkMonitorPrivateClient(); + PpbNetworkMonitorPrivateClient(const PpbNetworkMonitorPrivateClient&); + void operator=(const PpbNetworkMonitorPrivateClient); +}; // class PpbNetworkMonitorPrivateClient + class PpbPdfRpcClient { public: static NaClSrpcError PPB_PDF_GetLocalizedString( diff --git a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h index 14f0eb6..65dd2b6 100644 --- a/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h +++ b/ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppp_rpc.h @@ -181,6 +181,20 @@ class PppMouseLockRpcServer { void operator=(const PppMouseLockRpcServer); }; // class PppMouseLockRpcServer +class PppNetworkMonitorPrivateRpcServer { + public: + static void PPP_NetworkMonitor_Private_NetworkListChanged( + NaClSrpcRpc* rpc, + NaClSrpcClosure* done, + PP_Resource network_monitor, + PP_Resource network_list); + + private: + PppNetworkMonitorPrivateRpcServer(); + PppNetworkMonitorPrivateRpcServer(const PppNetworkMonitorPrivateRpcServer&); + void operator=(const PppNetworkMonitorPrivateRpcServer); +}; // class PppNetworkMonitorPrivateRpcServer + class PppPrintingRpcServer { public: static void PPP_Printing_QuerySupportedFormats( diff --git a/ppapi/ppapi_sources.gypi b/ppapi/ppapi_sources.gypi index c015efe..563af86 100644 --- a/ppapi/ppapi_sources.gypi +++ b/ppapi/ppapi_sources.gypi @@ -367,6 +367,8 @@ 'tests/test_mouse_lock.h', 'tests/test_net_address_private_untrusted.cc', 'tests/test_net_address_private_untrusted.h', + 'tests/test_network_monitor_private.cc', + 'tests/test_network_monitor_private.h', 'tests/test_paint_aggregator.cc', 'tests/test_paint_aggregator.h', 'tests/test_post_message.cc', @@ -436,8 +438,6 @@ 'tests/test_flash_message_loop.h', 'tests/test_net_address_private.cc', 'tests/test_net_address_private.h', - 'tests/test_network_monitor_private.cc', - 'tests/test_network_monitor_private.h', 'tests/test_resource_array.cc', 'tests/test_resource_array.h', 'tests/test_struct_sizes.c', diff --git a/ppapi/tests/test_network_monitor_private.cc b/ppapi/tests/test_network_monitor_private.cc index f552686..dbe8683 100644 --- a/ppapi/tests/test_network_monitor_private.cc +++ b/ppapi/tests/test_network_monitor_private.cc @@ -48,7 +48,6 @@ void TestCallback(void* user_data, PP_Resource pp_network_list) { data->event.Signal(); } - class TestNetworkListObserver : public pp::NetworkListObserverPrivate { public: explicit TestNetworkListObserver(const pp::InstanceHandle& instance) |