Index: ppapi/cpp/private/network_list_private.cc |
diff --git a/ppapi/cpp/private/network_list_private.cc b/ppapi/cpp/private/network_list_private.cc |
index 1297aa3a09c65bc27200022ca2b789c902e08cf2..5a3a5be3d014f13502f6150e717df9d51c88cf46 100644 |
--- a/ppapi/cpp/private/network_list_private.cc |
+++ b/ppapi/cpp/private/network_list_private.cc |
@@ -4,15 +4,19 @@ |
#include "ppapi/cpp/private/network_list_private.h" |
+#include "ppapi/c/pp_errors.h" |
+#include "ppapi/cpp/array_output.h" |
+#include "ppapi/cpp/logging.h" |
#include "ppapi/cpp/module_impl.h" |
+#include "ppapi/cpp/net_address.h" |
#include "ppapi/cpp/var.h" |
namespace pp { |
namespace { |
-template <> const char* interface_name<PPB_NetworkList_Private>() { |
- return PPB_NETWORKLIST_PRIVATE_INTERFACE; |
+template <> const char* interface_name<PPB_NetworkList_Private_0_3>() { |
+ return PPB_NETWORKLIST_PRIVATE_INTERFACE_0_3; |
} |
} // namespace |
@@ -26,84 +30,64 @@ NetworkListPrivate::NetworkListPrivate(PassRef, PP_Resource resource) |
// static |
bool NetworkListPrivate::IsAvailable() { |
- return has_interface<PPB_NetworkList_Private>(); |
+ return has_interface<PPB_NetworkList_Private_0_3>(); |
} |
uint32_t NetworkListPrivate::GetCount() const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return 0; |
- return get_interface<PPB_NetworkList_Private>()->GetCount(pp_resource()); |
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetCount(pp_resource()); |
} |
std::string NetworkListPrivate::GetName(uint32_t index) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return std::string(); |
Var result(PASS_REF, |
- get_interface<PPB_NetworkList_Private>()->GetName( |
+ get_interface<PPB_NetworkList_Private_0_3>()->GetName( |
pp_resource(), index)); |
return result.is_string() ? result.AsString() : std::string(); |
} |
PP_NetworkListType_Private NetworkListPrivate::GetType(uint32_t index) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return PP_NETWORKLIST_ETHERNET; |
- return get_interface<PPB_NetworkList_Private>()->GetType( |
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetType( |
pp_resource(), index); |
} |
PP_NetworkListState_Private NetworkListPrivate::GetState(uint32_t index) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return PP_NETWORKLIST_DOWN; |
- return get_interface<PPB_NetworkList_Private>()->GetState( |
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetState( |
pp_resource(), index); |
} |
-void NetworkListPrivate::GetIpAddresses( |
+int32_t NetworkListPrivate::GetIpAddresses( |
uint32_t index, |
- std::vector<PP_NetAddress_Private>* addresses) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
- return; |
- |
- // Most network interfaces don't have more than 3 network |
- // interfaces. |
- addresses->resize(3); |
- |
- int32_t result = get_interface<PPB_NetworkList_Private>()->GetIpAddresses( |
- pp_resource(), index, &addresses->front(), addresses->size()); |
- |
- if (result < 0) { |
- addresses->resize(0); |
- return; |
- } |
- |
- if (result <= static_cast<int32_t>(addresses->size())) { |
- addresses->resize(result); |
- return; |
- } |
- |
- addresses->resize(result); |
- result = get_interface<PPB_NetworkList_Private>()->GetIpAddresses( |
- pp_resource(), index, &addresses->front(), addresses->size()); |
- if (result < 0) { |
- addresses->resize(0); |
- } else if (result < static_cast<int32_t>(addresses->size())) { |
- addresses->resize(result); |
- } |
+ std::vector<NetAddress>* addresses) const { |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
+ return PP_ERROR_NOINTERFACE; |
+ if (!addresses) |
+ return PP_ERROR_BADARGUMENT; |
+ |
+ ResourceArrayOutputAdapter<NetAddress> adapter(addresses); |
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetIpAddresses( |
+ pp_resource(), index, adapter.pp_array_output()); |
} |
std::string NetworkListPrivate::GetDisplayName(uint32_t index) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return std::string(); |
Var result(PASS_REF, |
- get_interface<PPB_NetworkList_Private>()->GetDisplayName( |
+ get_interface<PPB_NetworkList_Private_0_3>()->GetDisplayName( |
pp_resource(), index)); |
return result.is_string() ? result.AsString() : std::string(); |
} |
uint32_t NetworkListPrivate::GetMTU(uint32_t index) const { |
- if (!has_interface<PPB_NetworkList_Private>()) |
+ if (!has_interface<PPB_NetworkList_Private_0_3>()) |
return 0; |
- return get_interface<PPB_NetworkList_Private>()->GetMTU( |
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetMTU( |
pp_resource(), index); |
} |