Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(439)

Unified Diff: ppapi/shared_impl/private/net_address_private_impl.cc

Issue 10993078: Use extensions socket permission for TCP/UDP socket APIs in Pepper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/shared_impl/private/net_address_private_impl.cc
diff --git a/ppapi/shared_impl/private/net_address_private_impl.cc b/ppapi/shared_impl/private/net_address_private_impl.cc
index b3fb3f6d973294e51852d10803f544bedd0ca137..3b08977276e38c484236cb01b73238f945637e1a 100644
--- a/ppapi/shared_impl/private/net_address_private_impl.cc
+++ b/ppapi/shared_impl/private/net_address_private_impl.cc
@@ -332,29 +332,11 @@ std::string ConvertIPv6AddressToString(const sockaddr_in6* a,
PP_Var Describe(PP_Module /*module*/,
const struct PP_NetAddress_Private* addr,
PP_Bool include_port) {
- if (!NetAddressPrivateImpl::ValidateNetAddress(*addr))
+ std::string str =
+ NetAddressPrivateImpl::DescribeNetAddress(*addr, !!include_port);
+ if (str.empty())
return PP_MakeUndefined();
-
- // 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).
- switch (GetFamilyInternal(addr)) {
- case AF_INET: {
- const sockaddr_in* a = reinterpret_cast<const sockaddr_in*>(addr->data);
- return StringVar::StringToPPVar(
- ConvertIPv4AddressToString(a, !!include_port));
- }
- case AF_INET6: {
- const sockaddr_in6* a = reinterpret_cast<const sockaddr_in6*>(addr->data);
- return StringVar::StringToPPVar(
- ConvertIPv6AddressToString(a, !!include_port));
- }
- default:
- NOTREACHED();
- break;
- }
- return PP_MakeUndefined();
+ return StringVar::StringToPPVar(str);
}
PP_Bool ReplacePort(const struct PP_NetAddress_Private* src_addr,
@@ -543,4 +525,31 @@ bool NetAddressPrivateImpl::NetAddressToIPEndPoint(
reinterpret_cast<const sockaddr&>(*net_addr.data), address, port);
}
+// static
+std::string NetAddressPrivateImpl::DescribeNetAddress(
+ const PP_NetAddress_Private& addr,
+ bool include_port) {
+ if (!NetAddressPrivateImpl::ValidateNetAddress(addr))
+ return std::string();
+
+ // 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).
+ switch (GetFamilyInternal(&addr)) {
+ case AF_INET: {
+ const sockaddr_in* a = reinterpret_cast<const sockaddr_in*>(&addr.data);
+ return ConvertIPv4AddressToString(a, include_port);
+ }
+ case AF_INET6: {
+ const sockaddr_in6* a = reinterpret_cast<const sockaddr_in6*>(&addr.data);
+ return ConvertIPv6AddressToString(a, include_port);
+ }
+ default:
+ NOTREACHED();
+ break;
+ }
+ return std::string();
+}
+
} // namespace ppapi

Powered by Google App Engine
This is Rietveld 408576698