Chromium Code Reviews| Index: chromeos/dbus/shill_client_helper.cc |
| diff --git a/chromeos/dbus/shill_client_helper.cc b/chromeos/dbus/shill_client_helper.cc |
| index c83bfe0b9d3530f1c9f859eeba37beb225e625d7..c0c5890712cf9bda4533edcd3611ed475b25897e 100644 |
| --- a/chromeos/dbus/shill_client_helper.cc |
| +++ b/chromeos/dbus/shill_client_helper.cc |
| @@ -35,6 +35,14 @@ ShillClientHelper::~ShillClientHelper() { |
| void ShillClientHelper::AddPropertyChangedObserver( |
| ShillPropertyChangedObserver* observer) { |
| + // Excecutes all the pending MonitorPropertyChanged calls. |
|
hashimoto
2013/02/13 05:56:00
nitty-nit: s/Executes/Execute/
Our style guide doe
deymo
2013/02/13 19:18:11
Done.
|
| + for (std::vector<std::string>::iterator it = |
|
hashimoto
2013/02/13 05:56:00
nit: "for (size_t i = 0; i < interfaces_to_be_moni
deymo
2013/02/13 19:18:11
Done.
|
| + interfaces_to_be_monitored_.begin(); |
| + it != interfaces_to_be_monitored_.end(); ++it) { |
| + MonitorPropertyChangedInternal(*it); |
| + } |
| + interfaces_to_be_monitored_.clear(); |
| + |
| observer_list_.AddObserver(observer); |
| } |
| @@ -45,6 +53,17 @@ void ShillClientHelper::RemovePropertyChangedObserver( |
| void ShillClientHelper::MonitorPropertyChanged( |
| const std::string& interface_name) { |
| + if (observer_list_.size() > 0) { |
| + // Effectively monitor the PropertyChanged now. |
| + MonitorPropertyChangedInternal(interface_name); |
| + } else { |
| + // Delay the ConnectToSignal until an observer is added. |
| + interfaces_to_be_monitored_.push_back(interface_name); |
| + } |
| +} |
| + |
| +void ShillClientHelper::MonitorPropertyChangedInternal( |
| + const std::string& interface_name) { |
| // We are not using dbus::PropertySet to monitor PropertyChanged signal |
| // because the interface is not "org.freedesktop.DBus.Properties". |
| proxy_->ConnectToSignal(interface_name, |