Index: remoting/client/plugin/pepper_network_manager.cc |
diff --git a/remoting/client/plugin/pepper_network_manager.cc b/remoting/client/plugin/pepper_network_manager.cc |
index d4fa68f5dd1d166ed0f71a2b7b67b38d709963c3..7b0f50f5764be88eb03b1dc2fe9ed76140139e83 100644 |
--- a/remoting/client/plugin/pepper_network_manager.cc |
+++ b/remoting/client/plugin/pepper_network_manager.cc |
@@ -17,11 +17,15 @@ |
namespace remoting { |
PepperNetworkManager::PepperNetworkManager(const pp::InstanceHandle& instance) |
- : monitor_(instance, &PepperNetworkManager::OnNetworkListCallbackHandler, |
- this), |
+ : monitor_(instance), |
start_count_(0), |
network_list_received_(false), |
+ callback_factory_(this), |
weak_factory_(this) { |
+ pp::CompletionCallbackWithOutput<pp::NetworkListPrivate> callback = |
+ callback_factory_.NewCallbackWithOutput( |
+ &PepperNetworkManager::OnNetworkList); |
+ monitor_.UpdateNetworkList(callback); |
} |
PepperNetworkManager::~PepperNetworkManager() { |
@@ -43,18 +47,24 @@ void PepperNetworkManager::StopUpdating() { |
--start_count_; |
} |
-// static |
-void PepperNetworkManager::OnNetworkListCallbackHandler( |
- void* user_data, |
- PP_Resource list_resource) { |
- PepperNetworkManager* object = static_cast<PepperNetworkManager*>(user_data); |
- pp::NetworkListPrivate list(pp::PASS_REF, list_resource); |
- object->OnNetworkList(list); |
-} |
-void PepperNetworkManager::OnNetworkList(const pp::NetworkListPrivate& list) { |
+void PepperNetworkManager::OnNetworkList(int32_t result, |
+ const pp::NetworkListPrivate& list) { |
+ if (result != PP_OK) { |
+ SignalError(); |
+ return; |
+ } |
+ DCHECK(!list.is_null()); |
+ |
network_list_received_ = true; |
+ // Request for the next update. |
+ pp::CompletionCallbackWithOutput<pp::NetworkListPrivate> callback = |
+ callback_factory_.NewCallbackWithOutput( |
+ &PepperNetworkManager::OnNetworkList); |
+ monitor_.UpdateNetworkList(callback); |
+ |
+ // Convert the networks to talk_base::Network. |
std::vector<talk_base::Network*> networks; |
size_t count = list.GetCount(); |
for (size_t i = 0; i < count; i++) { |