Index: chrome/browser/chromeos/cros/cros_network_functions.cc |
diff --git a/chrome/browser/chromeos/cros/cros_network_functions.cc b/chrome/browser/chromeos/cros/cros_network_functions.cc |
index 10139fabe604f1e3a8a7da6f33358479df0a365c..95f58276102d896abf32615ac19abf7373e90ae7 100644 |
--- a/chrome/browser/chromeos/cros/cros_network_functions.cc |
+++ b/chrome/browser/chromeos/cros/cros_network_functions.cc |
@@ -26,56 +26,84 @@ namespace chromeos { |
namespace { |
// Class to watch network manager's properties without Libcros. |
-class NetworkManagerPropertiesWatcher : public CrosNetworkWatcher { |
+class NetworkManagerPropertiesWatcher |
+ : public CrosNetworkWatcher, |
+ public ShillManagerClient::PropertyChangedObserver { |
public: |
NetworkManagerPropertiesWatcher( |
- const NetworkPropertiesWatcherCallback& callback) { |
+ const NetworkPropertiesWatcherCallback& callback) |
+ : callback_(callback) { |
DBusThreadManager::Get()->GetShillManagerClient()-> |
- SetPropertyChangedHandler(base::Bind(callback, |
- flimflam::kFlimflamServicePath)); |
+ AddPropertyChangedObserver(this); |
} |
+ |
virtual ~NetworkManagerPropertiesWatcher() { |
DBusThreadManager::Get()->GetShillManagerClient()-> |
- ResetPropertyChangedHandler(); |
+ RemovePropertyChangedObserver(this); |
+ } |
+ |
+ virtual void OnPropertyChanged(const std::string& name, |
+ const base::Value& value) { |
+ callback_.Run(flimflam::kFlimflamServicePath, name, value); |
} |
+ private: |
+ NetworkPropertiesWatcherCallback callback_; |
}; |
// Class to watch network service's properties without Libcros. |
-class NetworkServicePropertiesWatcher : public CrosNetworkWatcher { |
+class NetworkServicePropertiesWatcher |
+ : public CrosNetworkWatcher, |
+ ShillServiceClient::PropertyChangedObserver |
hashimoto
2012/09/21 11:52:01
Add public, no new line before '{'
Greg Spencer (Chromium)
2012/09/21 22:03:47
Done.
|
+{ |
public: |
NetworkServicePropertiesWatcher( |
const NetworkPropertiesWatcherCallback& callback, |
- const std::string& service_path) : service_path_(service_path) { |
+ const std::string& service_path) : service_path_(service_path), |
+ callback_(callback) { |
DBusThreadManager::Get()->GetShillServiceClient()-> |
- SetPropertyChangedHandler(dbus::ObjectPath(service_path), |
- base::Bind(callback, service_path)); |
+ AddPropertyChangedObserver(dbus::ObjectPath(service_path), this); |
} |
+ |
virtual ~NetworkServicePropertiesWatcher() { |
DBusThreadManager::Get()->GetShillServiceClient()-> |
- ResetPropertyChangedHandler(dbus::ObjectPath(service_path_)); |
+ RemovePropertyChangedObserver(dbus::ObjectPath(service_path_), this); |
} |
+ virtual void OnPropertyChanged(const std::string& name, |
+ const base::Value& value) { |
+ callback_.Run(service_path_, name, value); |
+ } |
private: |
hashimoto
2012/09/21 11:52:01
nit: Add new line before 'private'
Greg Spencer (Chromium)
2012/09/21 22:03:47
Done.
|
std::string service_path_; |
+ NetworkPropertiesWatcherCallback callback_; |
}; |
// Class to watch network device's properties without Libcros. |
-class NetworkDevicePropertiesWatcher : public CrosNetworkWatcher { |
+class NetworkDevicePropertiesWatcher |
+ : public CrosNetworkWatcher, |
+ public ShillDeviceClient::PropertyChangedObserver { |
public: |
NetworkDevicePropertiesWatcher( |
const NetworkPropertiesWatcherCallback& callback, |
- const std::string& device_path) : device_path_(device_path) { |
+ const std::string& device_path) : device_path_(device_path), |
+ callback_(callback) { |
DBusThreadManager::Get()->GetShillDeviceClient()-> |
- SetPropertyChangedHandler(dbus::ObjectPath(device_path), |
- base::Bind(callback, device_path)); |
+ AddPropertyChangedObserver(dbus::ObjectPath(device_path), this); |
} |
+ |
virtual ~NetworkDevicePropertiesWatcher() { |
DBusThreadManager::Get()->GetShillDeviceClient()-> |
- ResetPropertyChangedHandler(dbus::ObjectPath(device_path_)); |
+ RemovePropertyChangedObserver(dbus::ObjectPath(device_path_), this); |
+ } |
+ |
+ virtual void OnPropertyChanged(const std::string& name, |
+ const base::Value& value) { |
+ callback_.Run(device_path_, name, value); |
} |
private: |
std::string device_path_; |
+ NetworkPropertiesWatcherCallback callback_; |
}; |
// Converts a string to a CellularDataPlanType. |
@@ -180,7 +208,14 @@ class DataPlanUpdateWatcher : public CrosNetworkWatcher { |
}; |
// Does nothing. Used as a callback. |
-void DoNothing(DBusMethodCallStatus call_status) {} |
+void DoNothing() {} |
hashimoto
2012/09/21 11:52:01
You can use base::DoNothing() in base/bind_helpers
|
+ |
+// Does nothing. Used as a callback. |
+void DoNothingWithCallStatus(DBusMethodCallStatus call_status) {} |
+ |
+// Ignores errors. |
+void IgnoreErrors(const std::string& error_name, |
+ const std::string& error_message) {} |
// A callback used to implement CrosRequest*Properties functions. |
void RunCallbackWithDictionaryValue(const NetworkPropertiesCallback& callback, |
@@ -190,6 +225,25 @@ void RunCallbackWithDictionaryValue(const NetworkPropertiesCallback& callback, |
callback.Run(path, call_status == DBUS_METHOD_CALL_SUCCESS ? &value : NULL); |
} |
+// A callback used to implement CrosRequest*Properties functions. |
+void RunCallbackWithDictionaryValueNoStatus( |
+ const NetworkPropertiesCallback& callback, |
+ const std::string& path, |
+ const base::DictionaryValue& value) { |
+ callback.Run(path, &value); |
+} |
+ |
+// A callback used to implement the error callback for CrosRequest*Properties |
+// functions. |
+void RunCallbackWithDictionaryValueError( |
+ const NetworkPropertiesCallback& callback, |
+ const std::string& path, |
+ const std::string& error_name, |
+ const std::string& error_message) { |
+ callback.Run(path, NULL); |
+} |
+ |
hashimoto
2012/09/21 11:52:01
nit: Remove this blank line.
|
+ |
// Used as a callback for ShillManagerClient::GetService |
void OnGetService(const NetworkPropertiesCallback& callback, |
DBusMethodCallStatus call_status, |
@@ -316,20 +370,23 @@ void CrosSetNetworkServiceProperty(const std::string& service_path, |
const base::Value& value) { |
DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
dbus::ObjectPath(service_path), property, value, |
- base::Bind(&DoNothing)); |
+ base::Bind(DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosClearNetworkServiceProperty(const std::string& service_path, |
const std::string& property) { |
DBusThreadManager::Get()->GetShillServiceClient()->ClearProperty( |
- dbus::ObjectPath(service_path), property, base::Bind(&DoNothing)); |
+ dbus::ObjectPath(service_path), property, base::Bind(DoNothing), |
+ base::Bind(&IgnoreErrors)); |
hashimoto
2012/09/21 11:52:01
nit: align.
|
} |
void CrosSetNetworkDeviceProperty(const std::string& device_path, |
const std::string& property, |
const base::Value& value) { |
DBusThreadManager::Get()->GetShillDeviceClient()->SetProperty( |
- dbus::ObjectPath(device_path), property, value, base::Bind(&DoNothing)); |
+ dbus::ObjectPath(device_path), property, value, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosSetNetworkIPConfigProperty(const std::string& ipconfig_path, |
@@ -337,19 +394,23 @@ void CrosSetNetworkIPConfigProperty(const std::string& ipconfig_path, |
const base::Value& value) { |
DBusThreadManager::Get()->GetShillIPConfigClient()->SetProperty( |
dbus::ObjectPath(ipconfig_path), property, value, |
- base::Bind(&DoNothing)); |
+ base::Bind(&DoNothingWithCallStatus)); |
} |
void CrosSetNetworkManagerProperty(const std::string& property, |
const base::Value& value) { |
DBusThreadManager::Get()->GetShillManagerClient()->SetProperty( |
- property, value, base::Bind(&DoNothing)); |
+ property, value, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosDeleteServiceFromProfile(const std::string& profile_path, |
const std::string& service_path) { |
DBusThreadManager::Get()->GetShillProfileClient()->DeleteEntry( |
- dbus::ObjectPath(profile_path), service_path, base::Bind(&DoNothing)); |
+ dbus::ObjectPath(profile_path), |
+ service_path, |
+ base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestCellularDataPlanUpdate(const std::string& modem_service_path) { |
@@ -423,7 +484,9 @@ void CrosRequestNetworkProfileProperties( |
const NetworkPropertiesCallback& callback) { |
DBusThreadManager::Get()->GetShillProfileClient()->GetProperties( |
dbus::ObjectPath(profile_path), |
- base::Bind(&RunCallbackWithDictionaryValue, callback, profile_path)); |
+ base::Bind(&RunCallbackWithDictionaryValueNoStatus, |
+ callback, profile_path), |
+ base::Bind(RunCallbackWithDictionaryValueError, callback, profile_path)); |
} |
void CrosRequestNetworkProfileEntryProperties( |
@@ -433,7 +496,10 @@ void CrosRequestNetworkProfileEntryProperties( |
DBusThreadManager::Get()->GetShillProfileClient()->GetEntry( |
dbus::ObjectPath(profile_path), |
profile_entry_path, |
- base::Bind(&RunCallbackWithDictionaryValue, |
+ base::Bind(&RunCallbackWithDictionaryValueNoStatus, |
+ callback, |
+ profile_entry_path), |
+ base::Bind(RunCallbackWithDictionaryValueError, |
callback, |
profile_entry_path)); |
} |
@@ -459,7 +525,8 @@ void CrosRequestHiddenWifiNetworkProperties( |
// |properties| and return a new or existing service to OnGetService(). |
// OnGetService will then call GetProperties which will then call callback. |
DBusThreadManager::Get()->GetShillManagerClient()->GetService( |
- properties, base::Bind(&OnGetService, callback)); |
+ properties, base::Bind(&OnGetService, callback), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestVirtualNetworkProperties( |
@@ -489,32 +556,38 @@ void CrosRequestVirtualNetworkProperties( |
// |properties| and pass a new or existing service to OnGetService(). |
// OnGetService will then call GetProperties which will then call callback. |
DBusThreadManager::Get()->GetShillManagerClient()->GetService( |
- properties, base::Bind(&OnGetService, callback)); |
+ properties, base::Bind(&OnGetService, callback), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestNetworkServiceDisconnect(const std::string& service_path) { |
DBusThreadManager::Get()->GetShillServiceClient()->Disconnect( |
- dbus::ObjectPath(service_path), base::Bind(&DoNothing)); |
+ dbus::ObjectPath(service_path), base::Bind(DoNothing), |
hashimoto
2012/09/21 11:52:01
nit: Add '&' before DoNothing for consistency.
|
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestRemoveNetworkService(const std::string& service_path) { |
DBusThreadManager::Get()->GetShillServiceClient()->Remove( |
- dbus::ObjectPath(service_path), base::Bind(&DoNothing)); |
+ dbus::ObjectPath(service_path), base::Bind(DoNothing), |
hashimoto
2012/09/21 11:52:01
ditto.
|
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestNetworkScan(const std::string& network_type) { |
DBusThreadManager::Get()->GetShillManagerClient()->RequestScan( |
- network_type, base::Bind(&DoNothing)); |
+ network_type, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
void CrosRequestNetworkDeviceEnable(const std::string& network_type, |
bool enable) { |
if (enable) { |
DBusThreadManager::Get()->GetShillManagerClient()->EnableTechnology( |
- network_type, base::Bind(&DoNothing)); |
+ network_type, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} else { |
DBusThreadManager::Get()->GetShillManagerClient()->DisableTechnology( |
- network_type, base::Bind(&DoNothing)); |
+ network_type, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
} |
@@ -563,7 +636,7 @@ void CrosRequestChangePin(const std::string& device_path, |
void CrosProposeScan(const std::string& device_path) { |
DBusThreadManager::Get()->GetShillDeviceClient()->ProposeScan( |
- dbus::ObjectPath(device_path), base::Bind(&DoNothing)); |
+ dbus::ObjectPath(device_path), base::Bind(&DoNothingWithCallStatus)); |
} |
void CrosRequestCellularRegister(const std::string& device_path, |
@@ -579,7 +652,8 @@ void CrosRequestCellularRegister(const std::string& device_path, |
bool CrosSetOfflineMode(bool offline) { |
base::FundamentalValue value(offline); |
DBusThreadManager::Get()->GetShillManagerClient()->SetProperty( |
- flimflam::kOfflineModeProperty, value, base::Bind(&DoNothing)); |
+ flimflam::kOfflineModeProperty, value, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
return true; |
} |
@@ -667,7 +741,7 @@ bool CrosRemoveIPConfig(const std::string& ipconfig_path) { |
void CrosRequestIPConfigRefresh(const std::string& ipconfig_path) { |
DBusThreadManager::Get()->GetShillIPConfigClient()->Refresh( |
dbus::ObjectPath(ipconfig_path), |
- base::Bind(&DoNothing)); |
+ base::Bind(&DoNothingWithCallStatus)); |
} |
bool CrosGetWifiAccessPoints(WifiAccessPointVector* result) { |
@@ -758,7 +832,8 @@ bool CrosGetWifiAccessPoints(WifiAccessPointVector* result) { |
void CrosConfigureService(const base::DictionaryValue& properties) { |
DBusThreadManager::Get()->GetShillManagerClient()->ConfigureService( |
- properties, base::Bind(&DoNothing)); |
+ properties, base::Bind(&DoNothing), |
+ base::Bind(&IgnoreErrors)); |
} |
std::string CrosPrefixLengthToNetmask(int32 prefix_length) { |