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

Unified Diff: ppapi/cpp/private/network_list_private.cc

Issue 23806003: Use PP_ArrayOutput and PPB_NetAddress in PPB_NetworkList_Private.. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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/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..120556de99d0adeed9edcc54a78c42efa9ac4105 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,85 +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(
- pp_resource(), index);
+ return get_interface<PPB_NetworkList_Private_0_3>()->GetMTU(pp_resource(), index);
}
} // namespace pp

Powered by Google App Engine
This is Rietveld 408576698