summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authorbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 18:12:02 +0000
committerbbudge@chromium.org <bbudge@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-09-13 18:12:02 +0000
commit9984ca0682185909a315ed1d2d51007b04d05126 (patch)
tree3a0d0b59e5eb7a6e7c1236014dad0f16e02dbfbf /ppapi
parentf4148f30946db3e5d316e3dd411eebca3bf5649c (diff)
downloadchromium_src-9984ca0682185909a315ed1d2d51007b04d05126.zip
chromium_src-9984ca0682185909a315ed1d2d51007b04d05126.tar.gz
chromium_src-9984ca0682185909a315ed1d2d51007b04d05126.tar.bz2
Remove PPAPI dependency on 'net'.
This is needed to complete the port of the PPAPI proxy plugin-side to NaCl. This replaces usages in ppapi of types in 'net' with simpler base types (eg. instead of IPEndPoint, use a std::vector<unsigned char> address and an int port). Also, this removes some static methods in net_address_private_impl.* that are hardly used, and removes the ppapi::NetAddressList typedef, using std::vector<PP_NetAddress_Private> instead. BUG=116317 TEST=existing, no new functionality Review URL: https://chromiumcodereview.appspot.com/10909154 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156585 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r--ppapi/ppapi_internal.gyp1
-rw-r--r--ppapi/proxy/ppapi_messages.h2
-rw-r--r--ppapi/proxy/ppb_host_resolver_private_proxy.cc2
-rw-r--r--ppapi/proxy/ppb_host_resolver_private_proxy.h11
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.cc131
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.h20
-rw-r--r--ppapi/shared_impl/private/ppb_host_resolver_shared.cc21
-rw-r--r--ppapi/shared_impl/private/ppb_host_resolver_shared.h20
8 files changed, 100 insertions, 108 deletions
diff --git a/ppapi/ppapi_internal.gyp b/ppapi/ppapi_internal.gyp
index 2049620..6b27526 100644
--- a/ppapi/ppapi_internal.gyp
+++ b/ppapi/ppapi_internal.gyp
@@ -51,7 +51,6 @@
'../gpu/gpu.gyp:command_buffer_client',
'../gpu/gpu.gyp:gles2_implementation',
'../media/media.gyp:shared_memory_support',
- '../net/net.gyp:net',
'../skia/skia.gyp:skia',
'../third_party/icu/icu.gyp:icuuc',
# TODO(ananta) : The WebKit dependency needs to move to a new target for NACL.
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h
index 8528a2d..cfdc984 100644
--- a/ppapi/proxy/ppapi_messages.h
+++ b/ppapi/proxy/ppapi_messages.h
@@ -706,7 +706,7 @@ IPC_MESSAGE_ROUTED5(PpapiMsg_PPBHostResolver_ResolveACK,
uint32 /* host_resolver_id */,
bool /* succeeded */,
std::string /* canonical_name */,
- ppapi::NetAddressList /* net_address_list */)
+ std::vector<PP_NetAddress_Private> /* net_address_list */)
#if !defined(OS_NACL) && !defined(NACL_WIN64)
// PPP_Instance_Private.
diff --git a/ppapi/proxy/ppb_host_resolver_private_proxy.cc b/ppapi/proxy/ppb_host_resolver_private_proxy.cc
index 984ef9e..da73c09 100644
--- a/ppapi/proxy/ppb_host_resolver_private_proxy.cc
+++ b/ppapi/proxy/ppb_host_resolver_private_proxy.cc
@@ -107,7 +107,7 @@ void PPB_HostResolver_Private_Proxy::OnMsgResolveACK(
uint32 host_resolver_id,
bool succeeded,
const std::string& canonical_name,
- const ppapi::NetAddressList& net_address_list) {
+ const std::vector<PP_NetAddress_Private>& net_address_list) {
if (!g_id_to_host_resolver) {
NOTREACHED();
return;
diff --git a/ppapi/proxy/ppb_host_resolver_private_proxy.h b/ppapi/proxy/ppb_host_resolver_private_proxy.h
index 4282d3d..7e9b719 100644
--- a/ppapi/proxy/ppb_host_resolver_private_proxy.h
+++ b/ppapi/proxy/ppb_host_resolver_private_proxy.h
@@ -28,11 +28,12 @@ class PPB_HostResolver_Private_Proxy : public InterfaceProxy {
private:
// Browser->plugin message handlers.
- void OnMsgResolveACK(uint32 plugin_dispatcher_id,
- uint32 host_resolver_id,
- bool succeeded,
- const std::string& canonical_name,
- const ppapi::NetAddressList& net_address_list);
+ void OnMsgResolveACK(
+ uint32 plugin_dispatcher_id,
+ uint32 host_resolver_id,
+ bool succeeded,
+ const std::string& canonical_name,
+ const std::vector<PP_NetAddress_Private>& net_address_list);
DISALLOW_COPY_AND_ASSIGN(PPB_HostResolver_Private_Proxy);
};
diff --git a/ppapi/shared_impl/private/net_address_private_impl.cc b/ppapi/shared_impl/private/net_address_private_impl.cc
index 2d181ec..b3fb3f6 100644
--- a/ppapi/shared_impl/private/net_address_private_impl.cc
+++ b/ppapi/shared_impl/private/net_address_private_impl.cc
@@ -4,6 +4,14 @@
#include "ppapi/shared_impl/private/net_address_private_impl.h"
+#if defined(OS_WIN)
+#include <windows.h>
+#include <ws2tcpip.h>
+#elif defined(OS_POSIX)
+#include <sys/socket.h>
+#include <sys/types.h>
+#endif
+
#include <string.h>
#include <string>
@@ -13,9 +21,6 @@
#include "base/stringprintf.h"
#include "base/sys_byteorder.h"
#include "build/build_config.h"
-#include "net/base/address_list.h"
-#include "net/base/ip_endpoint.h"
-#include "net/base/net_util.h"
#include "ppapi/c/pp_var.h"
#include "ppapi/c/private/ppb_net_address_private.h"
#include "ppapi/shared_impl/var.h"
@@ -33,7 +38,7 @@ typedef ADDRESS_FAMILY sa_family_t;
#define s6_addr16 u.Word
#define ntohs(x) _byteswap_ushort(x)
#define htons(x) _byteswap_ushort(x)
-#endif // OS_WIN
+#endif // defined(OS_WIN)
// The net address interface doesn't have a normal C -> C++ thunk since it
// doesn't actually have any proxy wrapping or associated objects; it's just a
@@ -44,6 +49,65 @@ namespace ppapi {
namespace {
+static const size_t kIPv4AddressSize = 4;
+static const size_t kIPv6AddressSize = 16;
+
+bool IPEndPointToSockaddr(const std::vector<unsigned char>& address,
+ int port,
+ sockaddr* sa) {
+ DCHECK(sa);
+ switch (address.size()) {
+ case kIPv4AddressSize: {
+ struct sockaddr_in* addr = reinterpret_cast<struct sockaddr_in*>(sa);
+ memset(addr, 0, sizeof(struct sockaddr_in));
+ addr->sin_family = AF_INET;
+ addr->sin_port = base::HostToNet16(port);
+ memcpy(&addr->sin_addr, &address[0], static_cast<int>(address.size()));
+ break;
+ }
+ case kIPv6AddressSize: {
+ struct sockaddr_in6* addr6 =
+ reinterpret_cast<struct sockaddr_in6*>(sa);
+ memset(addr6, 0, sizeof(struct sockaddr_in6));
+ addr6->sin6_family = AF_INET6;
+ addr6->sin6_port = base::HostToNet16(port);
+ memcpy(&addr6->sin6_addr, &address[0], static_cast<int>(address.size()));
+ break;
+ }
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool SockaddrToIPEndPoint(const sockaddr& sa,
+ std::vector<unsigned char>* address,
+ int* port) {
+ DCHECK(address);
+ DCHECK(port);
+ switch (sa.sa_family) {
+ case AF_INET: {
+ const struct sockaddr_in* addr =
+ reinterpret_cast<const struct sockaddr_in*>(&sa);
+ *port = base::NetToHost16(addr->sin_port);
+ const char* bytes = reinterpret_cast<const char*>(&addr->sin_addr);
+ address->assign(&bytes[0], &bytes[kIPv4AddressSize]);
+ break;
+ }
+ case AF_INET6: {
+ const struct sockaddr_in6* addr =
+ reinterpret_cast<const struct sockaddr_in6*>(&sa);
+ *port = base::NetToHost16(addr->sin6_port);
+ const char* bytes = reinterpret_cast<const char*>(&addr->sin6_addr);
+ address->assign(&bytes[0], &bytes[kIPv6AddressSize]);
+ break;
+ }
+ default:
+ return false;
+ }
+ return true;
+}
+
// This assert fails on OpenBSD for an unknown reason at the moment.
#if !defined(OS_OPENBSD)
// Make sure the storage in |PP_NetAddress_Private| is big enough. (Do it here
@@ -177,7 +241,6 @@ PP_Bool AreEqual(const PP_NetAddress_Private* addr1,
}
}
-#if defined(OS_WIN) || defined(OS_MACOSX)
std::string ConvertIPv4AddressToString(const sockaddr_in* a,
bool include_port) {
unsigned ip = base::NetToHost32(a->sin_addr.s_addr);
@@ -265,7 +328,6 @@ std::string ConvertIPv6AddressToString(const sockaddr_in6* a,
return description;
}
-#endif // OS_WIN || OS_MACOSX
PP_Var Describe(PP_Module /*module*/,
const struct PP_NetAddress_Private* addr,
@@ -273,12 +335,10 @@ PP_Var Describe(PP_Module /*module*/,
if (!NetAddressPrivateImpl::ValidateNetAddress(*addr))
return PP_MakeUndefined();
-#if defined(OS_WIN) || defined(OS_MACOSX)
// On Windows, |NetAddressToString()| doesn't work in the sandbox. On Mac,
// the output isn't consistent with RFC 5952, at least on Mac OS 10.6:
// |getnameinfo()| collapses length-one runs of zeros (and also doesn't
// display the scope).
- // TODO(viettrungluu): Consider switching to this on Linux.
switch (GetFamilyInternal(addr)) {
case AF_INET: {
const sockaddr_in* a = reinterpret_cast<const sockaddr_in*>(addr->data);
@@ -295,14 +355,6 @@ PP_Var Describe(PP_Module /*module*/,
break;
}
return PP_MakeUndefined();
-#else
- const sockaddr* a = reinterpret_cast<const sockaddr*>(addr->data);
- socklen_t l = addr->size;
- std::string description =
- include_port ? net::NetAddressToStringWithPort(a, l) :
- net::NetAddressToString(a, l);
- return StringVar::StringToPPVar(description);
-#endif
}
PP_Bool ReplacePort(const struct PP_NetAddress_Private* src_addr,
@@ -469,49 +521,26 @@ bool NetAddressPrivateImpl::SockaddrToNetAddress(
// static
bool NetAddressPrivateImpl::IPEndPointToNetAddress(
- const net::IPEndPoint& ip,
+ const std::vector<unsigned char>& address,
+ int port,
PP_NetAddress_Private* net_addr) {
- net::SockaddrStorage storage;
-
- return ip.ToSockAddr(storage.addr, &storage.addr_len) &&
- SockaddrToNetAddress(storage.addr, storage.addr_len, net_addr);
-}
-
-// static
-bool NetAddressPrivateImpl::AddressListToNetAddress(
- const net::AddressList& address_list,
- PP_NetAddress_Private* net_addr) {
- return !address_list.empty() && IPEndPointToNetAddress(address_list.front(),
- net_addr);
+ sockaddr_storage storage;
+ sockaddr* sa = reinterpret_cast<sockaddr*>(&storage);
+ if (!IPEndPointToSockaddr(address, port, sa))
+ return false;
+ return SockaddrToNetAddress(sa, sizeof(storage), net_addr);
}
// static
bool NetAddressPrivateImpl::NetAddressToIPEndPoint(
const PP_NetAddress_Private& net_addr,
- net::IPEndPoint* ip_end_point) {
- if (!ip_end_point || !ValidateNetAddress(net_addr))
+ std::vector<unsigned char>* address,
+ int* port) {
+ if (!address || !port || !ValidateNetAddress(net_addr))
return false;
- if (!ip_end_point->FromSockAddr(
- reinterpret_cast<const sockaddr*>(net_addr.data), net_addr.size)) {
- return false;
- }
-
- return true;
-}
-
-// static
-bool NetAddressPrivateImpl::NetAddressToAddressList(
- const PP_NetAddress_Private& net_addr, net::AddressList* address_list) {
- if (!address_list)
- return false;
-
- net::IPEndPoint ip_end_point;
- if (!NetAddressToIPEndPoint(net_addr, &ip_end_point))
- return false;
-
- *address_list = net::AddressList(ip_end_point);
- return true;
+ return SockaddrToIPEndPoint(
+ reinterpret_cast<const sockaddr&>(*net_addr.data), address, port);
}
} // namespace ppapi
diff --git a/ppapi/shared_impl/private/net_address_private_impl.h b/ppapi/shared_impl/private/net_address_private_impl.h
index 8212f10..db5d308 100644
--- a/ppapi/shared_impl/private/net_address_private_impl.h
+++ b/ppapi/shared_impl/private/net_address_private_impl.h
@@ -5,6 +5,8 @@
#ifndef PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_
#define PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_
+#include <vector>
+
#include "base/basictypes.h"
#include "ppapi/c/pp_stdint.h"
#include "ppapi/shared_impl/ppapi_shared_export.h"
@@ -12,11 +14,6 @@
struct PP_NetAddress_Private;
struct sockaddr;
-namespace net {
-class AddressList;
-class IPEndPoint;
-}
-
namespace ppapi {
class PPAPI_SHARED_EXPORT NetAddressPrivateImpl {
@@ -27,18 +24,13 @@ class PPAPI_SHARED_EXPORT NetAddressPrivateImpl {
uint32_t sa_length,
PP_NetAddress_Private* net_addr);
- static bool IPEndPointToNetAddress(const net::IPEndPoint& ip,
+ static bool IPEndPointToNetAddress(const std::vector<unsigned char>& address,
+ int port,
PP_NetAddress_Private* net_addr);
- // Converts the first address to a PP_NetAddress_Private.
- static bool AddressListToNetAddress(const net::AddressList& address_list,
- PP_NetAddress_Private* net_addr);
-
static bool NetAddressToIPEndPoint(const PP_NetAddress_Private& net_addr,
- net::IPEndPoint* ip_end_point);
-
- static bool NetAddressToAddressList(const PP_NetAddress_Private& net_addr,
- net::AddressList* address_list);
+ std::vector<unsigned char>* address,
+ int* port);
static const PP_NetAddress_Private kInvalidNetAddress;
diff --git a/ppapi/shared_impl/private/ppb_host_resolver_shared.cc b/ppapi/shared_impl/private/ppb_host_resolver_shared.cc
index 13a258f..543b1c0 100644
--- a/ppapi/shared_impl/private/ppb_host_resolver_shared.cc
+++ b/ppapi/shared_impl/private/ppb_host_resolver_shared.cc
@@ -8,9 +8,6 @@
#include <cstring>
#include "base/memory/scoped_ptr.h"
-#if !defined(OS_NACL)
-#include "net/base/address_list.h"
-#endif
#include "ppapi/c/pp_errors.h"
#include "ppapi/shared_impl/private/net_address_private_impl.h"
#include "ppapi/shared_impl/var.h"
@@ -18,22 +15,6 @@
namespace ppapi {
-#if !defined(OS_NACL) && !defined(NACL_WIN64)
-NetAddressList* CreateNetAddressListFromAddressList(
- const net::AddressList& list) {
- scoped_ptr<NetAddressList> net_address_list(new NetAddressList());
- PP_NetAddress_Private address;
-
- for (size_t i = 0; i < list.size(); ++i) {
- if (!NetAddressPrivateImpl::IPEndPointToNetAddress(list[i], &address))
- return NULL;
- net_address_list->push_back(address);
- }
-
- return net_address_list.release();
-}
-#endif // !defined(OS_NACL) && !defined(NACL_WIN64)
-
PPB_HostResolver_Shared::PPB_HostResolver_Shared(PP_Instance instance)
: Resource(OBJECT_IS_IMPL, instance),
host_resolver_id_(GenerateHostResolverID()) {
@@ -94,7 +75,7 @@ bool PPB_HostResolver_Shared::GetNetAddress(uint32 index,
void PPB_HostResolver_Shared::OnResolveCompleted(
bool succeeded,
const std::string& canonical_name,
- const NetAddressList& net_address_list) {
+ const std::vector<PP_NetAddress_Private>& net_address_list) {
if (succeeded) {
canonical_name_ = canonical_name;
net_address_list_ = net_address_list;
diff --git a/ppapi/shared_impl/private/ppb_host_resolver_shared.h b/ppapi/shared_impl/private/ppb_host_resolver_shared.h
index 33adaf9..7372dc5 100644
--- a/ppapi/shared_impl/private/ppb_host_resolver_shared.h
+++ b/ppapi/shared_impl/private/ppb_host_resolver_shared.h
@@ -14,10 +14,6 @@
#include "ppapi/shared_impl/tracked_callback.h"
#include "ppapi/thunk/ppb_host_resolver_private_api.h"
-namespace net {
-class AddressList;
-}
-
namespace ppapi {
struct HostPortPair {
@@ -25,13 +21,6 @@ struct HostPortPair {
uint16_t port;
};
-typedef std::vector<PP_NetAddress_Private> NetAddressList;
-
-#if !defined(OS_NACL) && !defined(NACL_WIN64)
-PPAPI_SHARED_EXPORT NetAddressList*
- CreateNetAddressListFromAddressList(const net::AddressList& list);
-#endif
-
class PPAPI_SHARED_EXPORT PPB_HostResolver_Shared
: public thunk::PPB_HostResolver_Private_API,
public Resource {
@@ -58,9 +47,10 @@ class PPAPI_SHARED_EXPORT PPB_HostResolver_Shared
virtual bool GetNetAddress(uint32_t index,
PP_NetAddress_Private* address) OVERRIDE;
- void OnResolveCompleted(bool succeeded,
- const std::string& canonical_name,
- const NetAddressList& net_address_list);
+ void OnResolveCompleted(
+ bool succeeded,
+ const std::string& canonical_name,
+ const std::vector<PP_NetAddress_Private>& net_address_list);
// Send functions that need to be implemented differently for the
// proxied and non-proxied derived classes.
@@ -76,7 +66,7 @@ class PPAPI_SHARED_EXPORT PPB_HostResolver_Shared
scoped_refptr<TrackedCallback> resolve_callback_;
std::string canonical_name_;
- NetAddressList net_address_list_;
+ std::vector<PP_NetAddress_Private> net_address_list_;
DISALLOW_COPY_AND_ASSIGN(PPB_HostResolver_Shared);
};