Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chromeos/dbus/shill_client_helper.cc

Issue 23190045: Switch ObserverList::size() to ObserverList::might_have_observers() Pt.1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pure merge Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/panel_mouse_watcher.cc ('k') | chromeos/dbus/shill_manager_client_stub.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698