OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chromeos/dbus/shill_client_helper.h" | 5 #include "chromeos/dbus/shill_client_helper.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/values.h" | 8 #include "base/values.h" |
9 #include "chromeos/dbus/blocking_method_caller.h" | 9 #include "chromeos/dbus/blocking_method_caller.h" |
10 #include "dbus/message.h" | 10 #include "dbus/message.h" |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 } // namespace | 173 } // namespace |
174 | 174 |
175 ShillClientHelper::ShillClientHelper(dbus::Bus* bus, | 175 ShillClientHelper::ShillClientHelper(dbus::Bus* bus, |
176 dbus::ObjectProxy* proxy) | 176 dbus::ObjectProxy* proxy) |
177 : blocking_method_caller_(new BlockingMethodCaller(bus, proxy)), | 177 : blocking_method_caller_(new BlockingMethodCaller(bus, proxy)), |
178 proxy_(proxy), | 178 proxy_(proxy), |
179 weak_ptr_factory_(this) { | 179 weak_ptr_factory_(this) { |
180 } | 180 } |
181 | 181 |
182 ShillClientHelper::~ShillClientHelper() { | 182 ShillClientHelper::~ShillClientHelper() { |
183 LOG_IF(ERROR, observer_list_.size() != 0u) | 183 LOG_IF(ERROR, observer_list_.might_have_observers()) |
184 << "ShillClientHelper destroyed with active observers: " | 184 << "ShillClientHelper destroyed with active observers"; |
185 << observer_list_.size(); | |
186 } | 185 } |
187 | 186 |
188 void ShillClientHelper::AddPropertyChangedObserver( | 187 void ShillClientHelper::AddPropertyChangedObserver( |
189 ShillPropertyChangedObserver* observer) { | 188 ShillPropertyChangedObserver* observer) { |
190 // Excecute all the pending MonitorPropertyChanged calls. | 189 // Excecute all the pending MonitorPropertyChanged calls. |
191 for (size_t i = 0; i < interfaces_to_be_monitored_.size(); ++i) { | 190 for (size_t i = 0; i < interfaces_to_be_monitored_.size(); ++i) { |
192 MonitorPropertyChangedInternal(interfaces_to_be_monitored_[i]); | 191 MonitorPropertyChangedInternal(interfaces_to_be_monitored_[i]); |
193 } | 192 } |
194 interfaces_to_be_monitored_.clear(); | 193 interfaces_to_be_monitored_.clear(); |
195 | 194 |
196 observer_list_.AddObserver(observer); | 195 observer_list_.AddObserver(observer); |
197 } | 196 } |
198 | 197 |
199 void ShillClientHelper::RemovePropertyChangedObserver( | 198 void ShillClientHelper::RemovePropertyChangedObserver( |
200 ShillPropertyChangedObserver* observer) { | 199 ShillPropertyChangedObserver* observer) { |
201 observer_list_.RemoveObserver(observer); | 200 observer_list_.RemoveObserver(observer); |
202 } | 201 } |
203 | 202 |
204 void ShillClientHelper::MonitorPropertyChanged( | 203 void ShillClientHelper::MonitorPropertyChanged( |
205 const std::string& interface_name) { | 204 const std::string& interface_name) { |
206 if (observer_list_.size() > 0) { | 205 if (observer_list_.might_have_observers()) { |
207 // Effectively monitor the PropertyChanged now. | 206 // Effectively monitor the PropertyChanged now. |
208 MonitorPropertyChangedInternal(interface_name); | 207 MonitorPropertyChangedInternal(interface_name); |
209 } else { | 208 } else { |
210 // Delay the ConnectToSignal until an observer is added. | 209 // Delay the ConnectToSignal until an observer is added. |
211 interfaces_to_be_monitored_.push_back(interface_name); | 210 interfaces_to_be_monitored_.push_back(interface_name); |
212 } | 211 } |
213 } | 212 } |
214 | 213 |
215 void ShillClientHelper::MonitorPropertyChangedInternal( | 214 void ShillClientHelper::MonitorPropertyChangedInternal( |
216 const std::string& interface_name) { | 215 const std::string& interface_name) { |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader)); | 466 scoped_ptr<base::Value> value(dbus::PopDataAsValue(&reader)); |
468 if (!value.get()) | 467 if (!value.get()) |
469 return; | 468 return; |
470 | 469 |
471 FOR_EACH_OBSERVER(ShillPropertyChangedObserver, observer_list_, | 470 FOR_EACH_OBSERVER(ShillPropertyChangedObserver, observer_list_, |
472 OnPropertyChanged(name, *value)); | 471 OnPropertyChanged(name, *value)); |
473 } | 472 } |
474 | 473 |
475 | 474 |
476 } // namespace chromeos | 475 } // namespace chromeos |
OLD | NEW |