Index: chrome/browser/chromeos/cros/network_library_impl_cros.cc |
diff --git a/chrome/browser/chromeos/cros/network_library_impl_cros.cc b/chrome/browser/chromeos/cros/network_library_impl_cros.cc |
index 21b12a53f052abba6c5d32e0d5012c8614f42761..da0a2aec5c2d631d97ceb72788a716dd36db81b5 100644 |
--- a/chrome/browser/chromeos/cros/network_library_impl_cros.cc |
+++ b/chrome/browser/chromeos/cros/network_library_impl_cros.cc |
@@ -5,9 +5,11 @@ |
#include "chrome/browser/chromeos/cros/network_library_impl_cros.h" |
#include <dbus/dbus-glib.h> |
+#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/json/json_writer.h" // for debug output only. |
#include "base/metrics/histogram.h" |
+#include "base/values.h" |
#include "chrome/browser/chromeos/cros/cros_library.h" |
#include "chrome/browser/chromeos/cros/native_network_constants.h" |
#include "chrome/browser/chromeos/cros/native_network_parser.h" |
@@ -456,6 +458,30 @@ bool NetworkLibraryImplCros::GetWifiAccessPoints( |
return CrosGetWifiAccessPoints(result); |
} |
+void NetworkLibraryImplCros::RefreshIPConfig(Network* network) { |
+ DCHECK(network); |
+ CrosRequestNetworkDeviceProperties( |
+ network->device_path(), |
+ base::Bind(&NetworkLibraryImplCros::RefreshIPConfigCallback, |
+ weak_ptr_factory_.GetWeakPtr())); |
+} |
+ |
+void NetworkLibraryImplCros::RefreshIPConfigCallback( |
+ const std::string& device_path, |
+ const base::DictionaryValue* properties) { |
+ const ListValue* ips = NULL; |
+ if (!properties->GetListWithoutPathExpansion( |
+ flimflam::kIPConfigsProperty, &ips)) |
+ return; |
+ |
+ for (size_t i = 0; i < ips->GetSize(); i++) { |
+ std::string ipconfig_path; |
+ if (!ips->GetString(i, &ipconfig_path)) |
+ continue; |
+ CrosRequestIPConfigRefresh(ipconfig_path); |
+ } |
+} |
+ |
void NetworkLibraryImplCros::DisconnectFromNetwork(const Network* network) { |
DCHECK(network); |
// Asynchronous disconnect request. Network state will be updated through |