summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/test/ui/ppapi_uitest.cc1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_net_address_private_rpc_server.cc84
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc2
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.cc86
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h1
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_net_address_private.srpc21
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_client.cc57
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/ppb_rpc_server.cc48
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h18
-rw-r--r--ppapi/native_client/src/shared/ppapi_proxy/untrusted/srpcgen/ppb_rpc.h15
10 files changed, 333 insertions, 0 deletions
diff --git a/chrome/test/ui/ppapi_uitest.cc b/chrome/test/ui/ppapi_uitest.cc
index 83ff2514..2a4c610 100644
--- a/chrome/test/ui/ppapi_uitest.cc
+++ b/chrome/test/ui/ppapi_uitest.cc
@@ -860,6 +860,7 @@ TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetAnyAddress)
TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetFamily)
TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NetAddressPrivateUntrusted_GetPort)
TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetAddress)
+TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetScopeID)
TEST_PPAPI_IN_PROCESS(NetworkMonitorPrivate_Basic)
TEST_PPAPI_OUT_OF_PROCESS(NetworkMonitorPrivate_Basic)
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_net_address_private_rpc_server.cc b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_net_address_private_rpc_server.cc
index f8ca72b..5a30213a 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_net_address_private_rpc_server.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/browser_ppb_net_address_private_rpc_server.cc
@@ -252,3 +252,87 @@ void PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_GetAddress(
rpc->result = NACL_SRPC_RESULT_OK;
}
+void PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_GetScopeID(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ nacl_abi_size_t addr_bytes, char* addr,
+ // output
+ int32_t* scope_id) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (addr_bytes !=
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private))) {
+ return;
+ }
+
+ *scope_id = PPBNetAddressPrivateInterface()->GetScopeID(
+ reinterpret_cast<PP_NetAddress_Private*>(addr));
+
+ DebugPrintf("PPB_NetAddress_Private::GetScopeID\n");
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void
+PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_CreateFromIPv4Address(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t port,
+ // output
+ nacl_abi_size_t* addr_bytes, char* addr) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (ip_bytes != static_cast<nacl_abi_size_t>(4))
+ return;
+ if (port < 0 || port > std::numeric_limits<uint16_t>::max())
+ return;
+ if (*addr_bytes !=
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private))) {
+ return;
+ }
+
+ PPBNetAddressPrivateInterface()->CreateFromIPv4Address(
+ reinterpret_cast<uint8_t*>(addr), static_cast<uint16_t>(port),
+ reinterpret_cast<PP_NetAddress_Private*>(addr));
+
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv4Address\n");
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
+
+void
+PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_CreateFromIPv6Address(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ // input
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t scope_id,
+ int32_t port,
+ // output
+ nacl_abi_size_t* addr_bytes, char* addr) {
+ NaClSrpcClosureRunner runner(done);
+ rpc->result = NACL_SRPC_RESULT_APP_ERROR;
+
+ if (ip_bytes != static_cast<nacl_abi_size_t>(16))
+ return;
+ if (port < 0 || port > std::numeric_limits<uint16_t>::max())
+ return;
+ if (*addr_bytes !=
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private))) {
+ return;
+ }
+
+ PPBNetAddressPrivateInterface()->CreateFromIPv6Address(
+ reinterpret_cast<uint8_t*>(addr), static_cast<uint32_t>(scope_id),
+ static_cast<uint16_t>(port),
+ reinterpret_cast<PP_NetAddress_Private*>(addr));
+
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv6Address\n");
+
+ rpc->result = NACL_SRPC_RESULT_OK;
+}
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 341c959..2f2a9b1 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb.cc
@@ -94,6 +94,8 @@ InterfaceMapElement interface_map[] = {
PluginNetAddressPrivate::GetInterface0_1(), true },
{ PPB_NETADDRESS_PRIVATE_INTERFACE_1_0,
PluginNetAddressPrivate::GetInterface1_0(), true },
+ { PPB_NETADDRESS_PRIVATE_INTERFACE_1_1,
+ PluginNetAddressPrivate::GetInterface1_1(), true },
{ PPB_OPENGLES2_INTERFACE_1_0, PluginGraphics3D::GetOpenGLESInterface(),
true },
{ PPB_OPENGLES2_INSTANCEDARRAYS_DEV_INTERFACE_1_0,
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.cc b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.cc
index 557775e..8df1836b 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.cc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.cc
@@ -227,6 +227,74 @@ PP_Bool GetAddress(const PP_NetAddress_Private* addr,
return PP_FALSE;
}
+uint32_t GetScopeID(const PP_NetAddress_Private* addr) {
+ DebugPrintf("PPB_NetAddress_Private::GetScopeID\n");
+
+ nacl_abi_size_t addr_bytes =
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private));
+ char* const raw_addr =
+ reinterpret_cast<char*>(const_cast<PP_NetAddress_Private*>(addr));
+ int32_t scope_id;
+
+ NaClSrpcError srpc_result =
+ PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_GetScopeID(
+ GetMainSrpcChannel(),
+ addr_bytes,
+ raw_addr, &scope_id);
+
+ DebugPrintf("PPB_NetAddress_Private::GetScopeID: %s\n",
+ NaClSrpcErrorString(srpc_result));
+
+ return static_cast<uint32_t>(scope_id);
+}
+
+void CreateFromIPv4Address(const uint8_t ip[4],
+ uint16_t port,
+ struct PP_NetAddress_Private* addr) {
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv4Address\n");
+
+ char* raw_ip = reinterpret_cast<char*>(const_cast<uint8_t*>(ip));
+
+ nacl_abi_size_t addr_bytes =
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private));
+ char* const raw_addr =
+ reinterpret_cast<char*>(const_cast<PP_NetAddress_Private*>(addr));
+
+ NaClSrpcError srpc_result =
+ PpbNetAddressPrivateRpcClient::
+ PPB_NetAddress_Private_CreateFromIPv4Address(
+ GetMainSrpcChannel(),
+ sizeof(ip), raw_ip, port,
+ &addr_bytes, raw_addr);
+
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv4Address: %s\n",
+ NaClSrpcErrorString(srpc_result));
+}
+
+void CreateFromIPv6Address(const uint8_t ip[16],
+ uint32_t scope_id,
+ uint16_t port,
+ struct PP_NetAddress_Private* addr) {
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv6Address\n");
+
+ char* raw_ip = reinterpret_cast<char*>(const_cast<uint8_t*>(ip));
+
+ nacl_abi_size_t addr_bytes =
+ static_cast<nacl_abi_size_t>(sizeof(PP_NetAddress_Private));
+ char* const raw_addr =
+ reinterpret_cast<char*>(const_cast<PP_NetAddress_Private*>(addr));
+
+ NaClSrpcError srpc_result =
+ PpbNetAddressPrivateRpcClient::
+ PPB_NetAddress_Private_CreateFromIPv6Address(
+ GetMainSrpcChannel(),
+ sizeof(ip), raw_ip, scope_id, port,
+ &addr_bytes, raw_addr);
+
+ DebugPrintf("PPB_NetAddress_Private::CreateFromIPv6Address: %s\n",
+ NaClSrpcErrorString(srpc_result));
+}
+
} // namespace
// static
@@ -256,4 +324,22 @@ const PPB_NetAddress_Private_1_0* PluginNetAddressPrivate::GetInterface1_0() {
return &netaddress_private_interface;
}
+// static
+const PPB_NetAddress_Private_1_1* PluginNetAddressPrivate::GetInterface1_1() {
+ static const PPB_NetAddress_Private_1_1 netaddress_private_interface = {
+ AreEqual,
+ AreHostsEqual,
+ Describe,
+ ReplacePort,
+ GetAnyAddress,
+ GetFamily,
+ GetPort,
+ GetAddress,
+ GetScopeID,
+ CreateFromIPv4Address,
+ CreateFromIPv6Address
+ };
+ return &netaddress_private_interface;
+}
+
} // namespace ppapi_proxy
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h
index e08d3b2..98d5eeb 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h
+++ b/ppapi/native_client/src/shared/ppapi_proxy/plugin_ppb_net_address_private.h
@@ -15,6 +15,7 @@ class PluginNetAddressPrivate {
public:
static const PPB_NetAddress_Private_0_1* GetInterface0_1();
static const PPB_NetAddress_Private_1_0* GetInterface1_0();
+ static const PPB_NetAddress_Private_1_1* GetInterface1_1();
private:
NACL_DISALLOW_COPY_AND_ASSIGN(PluginNetAddressPrivate);
diff --git a/ppapi/native_client/src/shared/ppapi_proxy/ppb_net_address_private.srpc b/ppapi/native_client/src/shared/ppapi_proxy/ppb_net_address_private.srpc
index a587c37..0ac722b 100644
--- a/ppapi/native_client/src/shared/ppapi_proxy/ppb_net_address_private.srpc
+++ b/ppapi/native_client/src/shared/ppapi_proxy/ppb_net_address_private.srpc
@@ -63,5 +63,26 @@
['success', 'int32_t'], # PP_Bool
]
},
+ {'name': 'PPB_NetAddress_Private_GetScopeID',
+ 'inputs': [['addr', 'char[]'], # PP_NetAddress_Private*
+ ],
+ 'outputs': [['scope_id', 'int32_t'], # uint32_t
+ ]
+ },
+ {'name': 'PPB_NetAddress_Private_CreateFromIPv4Address',
+ 'inputs': [['ip', 'char[]'], # uint8_t[4]
+ ['port', 'int32_t'], # uint16_t
+ ],
+ 'outputs': [['addr', 'char[]'], # PP_NetAddress_Private*
+ ]
+ },
+ {'name': 'PPB_NetAddress_Private_CreateFromIPv6Address',
+ 'inputs': [['ip', 'char[]'], # uint8_t[16]
+ ['scope_id', 'int32_t'], # uint32_t
+ ['port', 'int32_t'], # uint16_t
+ ],
+ 'outputs': [['addr', 'char[]'], # PP_NetAddress_Private*
+ ]
+ },
]
}
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 477692d..c869403 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
@@ -2231,6 +2231,63 @@ NaClSrpcError PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_GetAddress(
return retval;
}
+NaClSrpcError PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_GetScopeID(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t addr_bytes, char* addr,
+ int32_t* scope_id) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_NetAddress_Private_GetScopeID:C:i",
+ addr_bytes, addr,
+ scope_id
+ );
+ return retval;
+}
+
+NaClSrpcError PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_CreateFromIPv4Address(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_NetAddress_Private_CreateFromIPv4Address:Ci:C",
+ ip_bytes, ip,
+ port,
+ addr_bytes, addr
+ );
+ return retval;
+}
+
+NaClSrpcError PpbNetAddressPrivateRpcClient::PPB_NetAddress_Private_CreateFromIPv6Address(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t scope_id,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr) {
+ VCHECK(ppapi_proxy::PPBCoreInterface()->IsMainThread(),
+ ("%s: PPAPI calls are not supported off the main thread\n",
+ __FUNCTION__));
+ NaClSrpcError retval;
+ retval = NaClSrpcInvokeBySignature(
+ channel,
+ "PPB_NetAddress_Private_CreateFromIPv6Address:Cii:C",
+ ip_bytes, ip,
+ scope_id,
+ port,
+ addr_bytes, addr
+ );
+ 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 6ec70bc..d059fca 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
@@ -1782,6 +1782,51 @@ static void PPB_NetAddress_Private_GetAddressDispatcher(
);
}
+static void PPB_NetAddress_Private_GetScopeIDDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_GetScopeID(
+ rpc,
+ done,
+ inputs[0]->u.count, inputs[0]->arrays.carr,
+ &(outputs[0]->u.ival)
+ );
+}
+
+static void PPB_NetAddress_Private_CreateFromIPv4AddressDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_CreateFromIPv4Address(
+ rpc,
+ done,
+ inputs[0]->u.count, inputs[0]->arrays.carr,
+ inputs[1]->u.ival,
+ &(outputs[0]->u.count), outputs[0]->arrays.carr
+ );
+}
+
+static void PPB_NetAddress_Private_CreateFromIPv6AddressDispatcher(
+ NaClSrpcRpc* rpc,
+ NaClSrpcArg** inputs,
+ NaClSrpcArg** outputs,
+ NaClSrpcClosure* done
+) {
+ PpbNetAddressPrivateRpcServer::PPB_NetAddress_Private_CreateFromIPv6Address(
+ rpc,
+ done,
+ inputs[0]->u.count, inputs[0]->arrays.carr,
+ inputs[1]->u.ival,
+ inputs[2]->u.ival,
+ &(outputs[0]->u.count), outputs[0]->arrays.carr
+ );
+}
+
static void PPB_PDF_GetLocalizedStringDispatcher(
NaClSrpcRpc* rpc,
NaClSrpcArg** inputs,
@@ -3237,6 +3282,9 @@ NaClSrpcHandlerDesc PpbRpcs::srpc_methods[] = {
{ "PPB_NetAddress_Private_GetFamily:C:i", PPB_NetAddress_Private_GetFamilyDispatcher },
{ "PPB_NetAddress_Private_GetPort:C:i", PPB_NetAddress_Private_GetPortDispatcher },
{ "PPB_NetAddress_Private_GetAddress:C:Ci", PPB_NetAddress_Private_GetAddressDispatcher },
+ { "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_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/trusted/srpcgen/ppb_rpc.h b/ppapi/native_client/src/shared/ppapi_proxy/trusted/srpcgen/ppb_rpc.h
index 7731ded..863f907 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
@@ -914,6 +914,24 @@ class PpbNetAddressPrivateRpcServer {
nacl_abi_size_t addr_bytes, char* addr,
nacl_abi_size_t* address_bytes, char* address,
int32_t* success);
+ static void PPB_NetAddress_Private_GetScopeID(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ nacl_abi_size_t addr_bytes, char* addr,
+ int32_t* scope_id);
+ static void PPB_NetAddress_Private_CreateFromIPv4Address(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr);
+ static void PPB_NetAddress_Private_CreateFromIPv6Address(
+ NaClSrpcRpc* rpc,
+ NaClSrpcClosure* done,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t scope_id,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr);
private:
PpbNetAddressPrivateRpcServer();
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 1b6a485..288455f 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
@@ -799,6 +799,21 @@ class PpbNetAddressPrivateRpcClient {
nacl_abi_size_t addr_bytes, char* addr,
nacl_abi_size_t* address_bytes, char* address,
int32_t* success);
+ static NaClSrpcError PPB_NetAddress_Private_GetScopeID(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t addr_bytes, char* addr,
+ int32_t* scope_id);
+ static NaClSrpcError PPB_NetAddress_Private_CreateFromIPv4Address(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr);
+ static NaClSrpcError PPB_NetAddress_Private_CreateFromIPv6Address(
+ NaClSrpcChannel* channel,
+ nacl_abi_size_t ip_bytes, char* ip,
+ int32_t scope_id,
+ int32_t port,
+ nacl_abi_size_t* addr_bytes, char* addr);
private:
PpbNetAddressPrivateRpcClient();