diff options
author | caitkp@chromium.org <caitkp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-26 19:15:33 +0000 |
---|---|---|
committer | caitkp@chromium.org <caitkp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-26 19:15:33 +0000 |
commit | 5e362e4700605d749f57cfe361449a6f067541ff (patch) | |
tree | 120f168a2a56cc253d457c76b857e32dd0b49efb | |
parent | 6ac748db5fe76c06d1560a040dac8a018b15d2a1 (diff) | |
download | chromium_src-5e362e4700605d749f57cfe361449a6f067541ff.zip chromium_src-5e362e4700605d749f57cfe361449a6f067541ff.tar.gz chromium_src-5e362e4700605d749f57cfe361449a6f067541ff.tar.bz2 |
Switch ObserverList::size() to ObserverList::might_have_observers() Pt.1
This is in preparation for making ObserverList::size() protected (see bug for details).
BUG=278526
TEST=no change
TBR=darin@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23190045
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@219580 0039d316-1c4b-4281-b951-d872f2087c98
18 files changed, 34 insertions, 33 deletions
diff --git a/ash/launcher/launcher_button.cc b/ash/launcher/launcher_button.cc index 26677ae..7529f6f 100644 --- a/ash/launcher/launcher_button.cc +++ b/ash/launcher/launcher_button.cc @@ -67,7 +67,7 @@ class LauncherButtonAnimation : public ui::AnimationDelegate { void RemoveObserver(Observer* observer) { observers_.RemoveObserver(observer); - if (observers_.size() == 0) + if (!observers_.might_have_observers()) animation_.Stop(); } diff --git a/ash/system/chromeos/network/network_icon_animation.cc b/ash/system/chromeos/network/network_icon_animation.cc index 1169c67..2a6428c 100644 --- a/ash/system/chromeos/network/network_icon_animation.cc +++ b/ash/system/chromeos/network/network_icon_animation.cc @@ -45,7 +45,7 @@ void NetworkIconAnimation::AddObserver(AnimationObserver* observer) { void NetworkIconAnimation::RemoveObserver(AnimationObserver* observer) { observers_.RemoveObserver(observer); - if (observers_.size() == 0) + if (!observers_.might_have_observers()) animation_.Reset(); // Stops the animation and resets the current value. } diff --git a/chrome/browser/chromeos/cros/network_library_impl_base.cc b/chrome/browser/chromeos/cros/network_library_impl_base.cc index 6d38e02..9b169a5 100644 --- a/chrome/browser/chromeos/cros/network_library_impl_base.cc +++ b/chrome/browser/chromeos/cros/network_library_impl_base.cc @@ -127,7 +127,7 @@ void NetworkLibraryImplBase::RemoveNetworkObserver( network_observers_.find(service_path); if (map_iter != network_observers_.end()) { map_iter->second->RemoveObserver(observer); - if (!map_iter->second->size()) { + if (!map_iter->second->might_have_observers()) { MonitorNetworkStop(service_path); delete map_iter->second; network_observers_.erase(map_iter); @@ -141,7 +141,7 @@ void NetworkLibraryImplBase::RemoveObserverForAllNetworks( NetworkObserverMap::iterator map_iter = network_observers_.begin(); while (map_iter != network_observers_.end()) { map_iter->second->RemoveObserver(observer); - if (!map_iter->second->size()) { + if (!map_iter->second->might_have_observers()) { MonitorNetworkStop(map_iter->first); delete map_iter->second; network_observers_.erase(map_iter++); diff --git a/chrome/browser/download/download_path_reservation_tracker_unittest.cc b/chrome/browser/download/download_path_reservation_tracker_unittest.cc index 06183a5..5703da3 100644 --- a/chrome/browser/download/download_path_reservation_tracker_unittest.cc +++ b/chrome/browser/download/download_path_reservation_tracker_unittest.cc @@ -35,7 +35,7 @@ class FakeDownloadItem : public MockDownloadItem { } virtual ~FakeDownloadItem() { FOR_EACH_OBSERVER(Observer, observers_, OnDownloadDestroyed(this)); - EXPECT_EQ(0u, observers_.size()); + EXPECT_FALSE(observers_.might_have_observers()); } virtual void AddObserver(Observer* observer) OVERRIDE { observers_.AddObserver(observer); diff --git a/chrome/browser/net/pref_proxy_config_tracker_impl.cc b/chrome/browser/net/pref_proxy_config_tracker_impl.cc index 5dd3e5d..fbf5e0c 100644 --- a/chrome/browser/net/pref_proxy_config_tracker_impl.cc +++ b/chrome/browser/net/pref_proxy_config_tracker_impl.cc @@ -79,7 +79,7 @@ void ChromeProxyConfigService::UpdateProxyConfig( pref_config_state_ = config_state; pref_config_ = config; - if (!observers_.size()) + if (!observers_.might_have_observers()) return; // Evaluate the proxy configuration. If GetLatestProxyConfig returns diff --git a/chrome/browser/policy/policy_service_impl.cc b/chrome/browser/policy/policy_service_impl.cc index 6af7605..2cfdcbb 100644 --- a/chrome/browser/policy/policy_service_impl.cc +++ b/chrome/browser/policy/policy_service_impl.cc @@ -56,7 +56,7 @@ void PolicyServiceImpl::RemoveObserver(PolicyDomain domain, return; } it->second->RemoveObserver(observer); - if (it->second->size() == 0) { + if (!it->second->might_have_observers()) { delete it->second; observers_.erase(it); } diff --git a/chrome/browser/status_icons/status_icon.cc b/chrome/browser/status_icons/status_icon.cc index 00270d2..52a36ab 100644 --- a/chrome/browser/status_icons/status_icon.cc +++ b/chrome/browser/status_icons/status_icon.cc @@ -22,7 +22,7 @@ void StatusIcon::RemoveObserver(StatusIconObserver* observer) { } bool StatusIcon::HasObservers() const { - return observers_.size() > 0; + return observers_.might_have_observers(); } void StatusIcon::DispatchClickEvent() { diff --git a/chrome/browser/ui/panels/display_settings_provider.cc b/chrome/browser/ui/panels/display_settings_provider.cc index adf5ff2..42d76cc 100644 --- a/chrome/browser/ui/panels/display_settings_provider.cc +++ b/chrome/browser/ui/panels/display_settings_provider.cc @@ -43,9 +43,10 @@ void DisplaySettingsProvider::RemoveDesktopBarObserver( void DisplaySettingsProvider::AddFullScreenObserver( FullScreenObserver* observer) { is_full_screen_ = IsFullScreen(); + bool already_started = full_screen_observers_.might_have_observers(); full_screen_observers_.AddObserver(observer); - if (full_screen_observers_.size() == 1 && NeedsPeriodicFullScreenCheck()) { + if (!already_started && NeedsPeriodicFullScreenCheck()) { full_screen_mode_timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds(kFullScreenModeCheckIntervalMs), base::Bind(&DisplaySettingsProvider::CheckFullScreenMode, @@ -58,7 +59,7 @@ void DisplaySettingsProvider::RemoveFullScreenObserver( FullScreenObserver* observer) { full_screen_observers_.RemoveObserver(observer); - if (full_screen_observers_.size() == 0) + if (!full_screen_observers_.might_have_observers()) full_screen_mode_timer_.Stop(); } diff --git a/chrome/browser/ui/panels/panel_mouse_watcher.cc b/chrome/browser/ui/panels/panel_mouse_watcher.cc index b55ca76..1774658 100644 --- a/chrome/browser/ui/panels/panel_mouse_watcher.cc +++ b/chrome/browser/ui/panels/panel_mouse_watcher.cc @@ -14,15 +14,16 @@ PanelMouseWatcher::~PanelMouseWatcher() { } void PanelMouseWatcher::AddObserver(PanelMouseWatcherObserver* observer) { + bool already_started = observers_.might_have_observers(); observers_.AddObserver(observer); - if (observers_.size() == 1) + if (!already_started) Start(); } void PanelMouseWatcher::RemoveObserver(PanelMouseWatcherObserver* observer) { DCHECK(observers_.HasObserver(observer)); observers_.RemoveObserver(observer); - if (observers_.size() == 0) + if (!observers_.might_have_observers()) Stop(); } diff --git a/chromeos/dbus/shill_client_helper.cc b/chromeos/dbus/shill_client_helper.cc index 61dcb4d..a0af3b8 100644 --- a/chromeos/dbus/shill_client_helper.cc +++ b/chromeos/dbus/shill_client_helper.cc @@ -180,9 +180,8 @@ ShillClientHelper::ShillClientHelper(dbus::Bus* bus, } ShillClientHelper::~ShillClientHelper() { - LOG_IF(ERROR, observer_list_.size() != 0u) - << "ShillClientHelper destroyed with active observers: " - << observer_list_.size(); + LOG_IF(ERROR, observer_list_.might_have_observers()) + << "ShillClientHelper destroyed with active observers"; } void ShillClientHelper::AddPropertyChangedObserver( @@ -203,7 +202,7 @@ void ShillClientHelper::RemovePropertyChangedObserver( void ShillClientHelper::MonitorPropertyChanged( const std::string& interface_name) { - if (observer_list_.size() > 0) { + if (observer_list_.might_have_observers()) { // Effectively monitor the PropertyChanged now. MonitorPropertyChangedInternal(interface_name); } else { diff --git a/chromeos/dbus/shill_manager_client_stub.cc b/chromeos/dbus/shill_manager_client_stub.cc index 640949a..b601eb2 100644 --- a/chromeos/dbus/shill_manager_client_stub.cc +++ b/chromeos/dbus/shill_manager_client_stub.cc @@ -523,7 +523,7 @@ void ShillManagerClientStub::CallNotifyObserversPropertyChanged( int delay_ms) { // Avoid unnecessary delayed task if we have no observers (e.g. during // initial setup). - if (observer_list_.size() == 0) + if (!observer_list_.might_have_observers()) return; if (!CommandLine::ForCurrentProcess()->HasSwitch( chromeos::switches::kEnableStubInteractive)) { diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc index d4f6e53..2a4ad9a 100644 --- a/content/browser/loader/resource_dispatcher_host_impl.cc +++ b/content/browser/loader/resource_dispatcher_host_impl.cc @@ -1813,7 +1813,7 @@ void ResourceDispatcherHostImpl::UnregisterResourceMessageDelegate( DelegateMap::iterator it = delegate_map_.find(id); DCHECK(it->second->HasObserver(delegate)); it->second->RemoveObserver(delegate); - if (it->second->size() == 0) { + if (!it->second->might_have_observers()) { delete it->second; delegate_map_.erase(it); } diff --git a/content/browser/media/webrtc_internals.cc b/content/browser/media/webrtc_internals.cc index f8bcdc3..e94447a 100644 --- a/content/browser/media/webrtc_internals.cc +++ b/content/browser/media/webrtc_internals.cc @@ -65,7 +65,7 @@ void WebRTCInternals::OnAddPeerConnection(int render_process_id, dict->SetString("url", url); peer_connection_data_.Append(dict); - if (observers_.size() > 0) + if (observers_.might_have_observers()) SendUpdate("addPeerConnection", dict); } @@ -85,7 +85,7 @@ void WebRTCInternals::OnRemovePeerConnection(ProcessId pid, int lid) { peer_connection_data_.Remove(i, NULL); - if (observers_.size() > 0) { + if (observers_.might_have_observers()) { base::DictionaryValue id; id.SetInteger("pid", static_cast<int>(pid)); id.SetInteger("lid", lid); @@ -123,7 +123,7 @@ void WebRTCInternals::OnUpdatePeerConnection( log_entry->SetString("value", value); log->Append(log_entry); - if (observers_.size() > 0) { + if (observers_.might_have_observers()) { base::DictionaryValue update; update.SetInteger("pid", static_cast<int>(pid)); update.SetInteger("lid", lid); @@ -138,7 +138,7 @@ void WebRTCInternals::OnUpdatePeerConnection( void WebRTCInternals::OnAddStats(base::ProcessId pid, int lid, const base::ListValue& value) { - if (observers_.size() == 0) + if (!observers_.might_have_observers()) return; base::DictionaryValue dict; @@ -165,7 +165,7 @@ void WebRTCInternals::RemoveObserver(WebRTCInternalsUIObserver *observer) { } void WebRTCInternals::SendAllUpdates() { - if (observers_.size() > 0) + if (observers_.might_have_observers()) SendUpdate("updateAllPeerConnections", &peer_connection_data_); } @@ -184,7 +184,7 @@ void WebRTCInternals::StopRtpRecording() { } void WebRTCInternals::SendUpdate(const string& command, base::Value* value) { - DCHECK_GT(observers_.size(), (size_t)0); + DCHECK(observers_.might_have_observers()); FOR_EACH_OBSERVER(WebRTCInternalsUIObserver, observers_, @@ -216,7 +216,7 @@ void WebRTCInternals::OnRendererExit(int render_process_id) { record->GetInteger("rid", &this_rid); if (this_rid == render_process_id) { - if (observers_.size() > 0) { + if (observers_.might_have_observers()) { int lid = 0, pid = 0; record->GetInteger("lid", &lid); record->GetInteger("pid", &pid); diff --git a/content/browser/notification_service_impl.cc b/content/browser/notification_service_impl.cc index 4913288..27de857 100644 --- a/content/browser/notification_service_impl.cc +++ b/content/browser/notification_service_impl.cc @@ -83,7 +83,7 @@ void NotificationServiceImpl::RemoveObserver(NotificationObserver* observer, observers_[type][source.map_key()]; if (observer_list) { observer_list->RemoveObserver(observer); - if (!observer_list->size()) { + if (!observer_list->might_have_observers()) { observers_[type].erase(source.map_key()); delete observer_list; } diff --git a/media/base/user_input_monitor.cc b/media/base/user_input_monitor.cc index 18b4c80..8a1f1da 100644 --- a/media/base/user_input_monitor.cc +++ b/media/base/user_input_monitor.cc @@ -33,7 +33,7 @@ void UserInputMonitor::AddMouseListener(MouseEventListener* listener) { void UserInputMonitor::RemoveMouseListener(MouseEventListener* listener) { base::AutoLock auto_lock(lock_); mouse_listeners_.RemoveObserver(listener); - if (mouse_listeners_.size() == 0) { + if (!mouse_listeners_.might_have_observers()) { StopMouseMonitoring(); monitoring_mouse_ = false; DVLOG(2) << "Stopped mouse monitoring."; @@ -51,7 +51,7 @@ void UserInputMonitor::AddKeyStrokeListener(KeyStrokeListener* listener) { void UserInputMonitor::RemoveKeyStrokeListener(KeyStrokeListener* listener) { base::AutoLock auto_lock(lock_); key_stroke_listeners_.RemoveObserver(listener); - if (key_stroke_listeners_.size() == 0) { + if (!key_stroke_listeners_.might_have_observers()) { StopKeyboardMonitoring(); monitoring_keyboard_ = false; DVLOG(2) << "Stopped keyboard monitoring."; diff --git a/net/dns/mdns_client_impl.cc b/net/dns/mdns_client_impl.cc index 8f79edf..a90ac64 100644 --- a/net/dns/mdns_client_impl.cc +++ b/net/dns/mdns_client_impl.cc @@ -378,7 +378,7 @@ void MDnsClientImpl::Core::RemoveListener(MDnsListenerImpl* listener) { observer_list_iterator->second->RemoveObserver(listener); // Remove the observer list from the map if it is empty - if (observer_list_iterator->second->size() == 0) { + if (!observer_list_iterator->second->might_have_observers()) { // Schedule the actual removal for later in case the listener removal // happens while iterating over the observer list. base::MessageLoop::current()->PostTask( @@ -389,7 +389,7 @@ void MDnsClientImpl::Core::RemoveListener(MDnsListenerImpl* listener) { void MDnsClientImpl::Core::CleanupObserverList(const ListenerKey& key) { ListenerMap::iterator found = listeners_.find(key); - if (found != listeners_.end() && found->second->size() == 0) { + if (found != listeners_.end() && !found->second->might_have_observers()) { delete found->second; listeners_.erase(found); } diff --git a/sync/js/sync_js_controller.cc b/sync/js/sync_js_controller.cc index 49f3cc7..4d3148f 100644 --- a/sync/js/sync_js_controller.cc +++ b/sync/js/sync_js_controller.cc @@ -73,7 +73,7 @@ void SyncJsController::UpdateBackendEventHandler() { // event handler we pass to it if we don't have any event // handlers. WeakHandle<JsEventHandler> backend_event_handler = - (js_event_handlers_.size() > 0) ? + js_event_handlers_.might_have_observers() ? MakeWeakHandle(AsWeakPtr()) : WeakHandle<SyncJsController>(); js_backend_.Call(FROM_HERE, &JsBackend::SetJsEventHandler, backend_event_handler); diff --git a/ui/compositor/layer_animator_unittest.cc b/ui/compositor/layer_animator_unittest.cc index 8b4d792..5cae43c 100644 --- a/ui/compositor/layer_animator_unittest.cc +++ b/ui/compositor/layer_animator_unittest.cc @@ -1764,13 +1764,13 @@ TEST(LayerAnimatorTest, ObserverReleasedBeforeAnimationSequenceEnds) { animator->StartAnimation(sequence); // |observer| should be attached to |sequence|. - EXPECT_EQ(static_cast<size_t>(1), sequence->observers_.size()); + EXPECT_TRUE(sequence->observers_.might_have_observers()); // Now, release |observer| observer.reset(); // And |sequence| should no longer be attached to |observer|. - EXPECT_EQ(static_cast<size_t>(0), sequence->observers_.size()); + EXPECT_FALSE(sequence->observers_.might_have_observers()); } TEST(LayerAnimatorTest, ObserverAttachedAfterAnimationStarted) { |