diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-16 23:51:24 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-12-16 23:51:24 +0000 |
commit | b93fee240c82a81a3cea2535a77c8e09456e0433 (patch) | |
tree | 121fb8c05b7c939841914b0c84b4e91d7026015b | |
parent | 0c893bcfc8c118649c3d2aa21f0b9c45d233b9e8 (diff) | |
download | chromium_src-b93fee240c82a81a3cea2535a77c8e09456e0433.zip chromium_src-b93fee240c82a81a3cea2535a77c8e09456e0433.tar.gz chromium_src-b93fee240c82a81a3cea2535a77c8e09456e0433.tar.bz2 |
base::Bind() conversion for chrome/browser/chromeos.
BUG=none
TEST=trybots
Review URL: http://codereview.chromium.org/8604009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114883 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/chromeos/audio_mixer_alsa.cc | 14 | ||||
-rw-r--r-- | chrome/browser/chromeos/audio_mixer_alsa.h | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.cc | 30 |
3 files changed, 22 insertions, 25 deletions
diff --git a/chrome/browser/chromeos/audio_mixer_alsa.cc b/chrome/browser/chromeos/audio_mixer_alsa.cc index 0f17fd2..a380c31 100644 --- a/chrome/browser/chromeos/audio_mixer_alsa.cc +++ b/chrome/browser/chromeos/audio_mixer_alsa.cc @@ -11,9 +11,10 @@ #include <alsa/asoundlib.h> +#include "base/bind.h" +#include "base/bind_helpers.h" #include "base/logging.h" #include "base/message_loop.h" -#include "base/task.h" #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "chrome/browser/browser_process.h" @@ -86,7 +87,8 @@ AudioMixerAlsa::~AudioMixerAlsa() { DCHECK(MessageLoop::current() != thread_->message_loop()); thread_->message_loop()->PostTask( - FROM_HERE, NewRunnableMethod(this, &AudioMixerAlsa::Disconnect)); + FROM_HERE, base::Bind(&AudioMixerAlsa::Disconnect, + base::Unretained(this))); disconnected_event_.Wait(); base::ThreadRestrictions::ScopedAllowIO allow_io_for_thread_join; @@ -104,7 +106,7 @@ void AudioMixerAlsa::Init() { thread_.reset(new base::Thread("AudioMixerAlsa")); CHECK(thread_->Start()); thread_->message_loop()->PostTask( - FROM_HERE, NewRunnableMethod(this, &AudioMixerAlsa::Connect)); + FROM_HERE, base::Bind(&AudioMixerAlsa::Connect, base::Unretained(this))); } bool AudioMixerAlsa::IsInitialized() { @@ -146,7 +148,7 @@ void AudioMixerAlsa::SetVolumeDb(double volume_db) { volume_db_ = volume_db; if (!apply_is_pending_) thread_->message_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, &AudioMixerAlsa::ApplyState)); + base::Bind(&AudioMixerAlsa::ApplyState, base::Unretained(this))); } bool AudioMixerAlsa::IsMuted() { @@ -162,7 +164,7 @@ void AudioMixerAlsa::SetMuted(bool muted) { is_muted_ = muted; if (!apply_is_pending_) thread_->message_loop()->PostTask(FROM_HERE, - NewRunnableMethod(this, &AudioMixerAlsa::ApplyState)); + base::Bind(&AudioMixerAlsa::ApplyState, base::Unretained(this))); } // static @@ -187,7 +189,7 @@ void AudioMixerAlsa::Connect() { if (!ConnectInternal()) { thread_->message_loop()->PostDelayedTask(FROM_HERE, - NewRunnableMethod(this, &AudioMixerAlsa::Connect), + base::Bind(&AudioMixerAlsa::Connect, base::Unretained(this)), kConnectionRetrySleepSec * 1000); } } diff --git a/chrome/browser/chromeos/audio_mixer_alsa.h b/chrome/browser/chromeos/audio_mixer_alsa.h index 7ec758a..5bd7fc0 100644 --- a/chrome/browser/chromeos/audio_mixer_alsa.h +++ b/chrome/browser/chromeos/audio_mixer_alsa.h @@ -9,7 +9,6 @@ #include <string> #include "base/basictypes.h" -#include "base/callback_old.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/synchronization/lock.h" @@ -127,6 +126,4 @@ class AudioMixerAlsa : public AudioMixer { } // namespace chromeos -DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::AudioMixerAlsa); - #endif // CHROME_BROWSER_CHROMEOS_AUDIO_MIXER_ALSA_H_ diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index 46eb6b0..59936a9 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -15,10 +15,12 @@ #include <utility> #include "base/bind.h" +#include "base/compiler_specific.h" #include "base/i18n/icu_encoding_detection.h" #include "base/i18n/icu_string_conversions.h" #include "base/i18n/time_formatting.h" #include "base/memory/scoped_vector.h" +#include "base/memory/weak_ptr.h" #include "base/json/json_writer.h" // for debug output only. #include "base/metrics/histogram.h" #include "base/stl_util.h" @@ -1986,8 +1988,8 @@ class NetworkLibraryImplBase : public NetworkLibrary { // List of networks to move to the user profile once logged in. std::list<std::string> user_networks_; - // Delayed task to notify a network change. - CancelableTask* notify_task_; + // Weak pointer factory for cancelling a network change callback. + base::WeakPtrFactory<NetworkLibraryImplBase> notify_manager_weak_factory_; // Cellular plan payment time. base::Time cellular_plan_payment_time_; @@ -2011,7 +2013,7 @@ NetworkLibraryImplBase::NetworkLibraryImplBase() offline_mode_(false), is_locked_(false), sim_operation_(SIM_OPERATION_NONE), - notify_task_(NULL) { + ALLOW_THIS_IN_INITIALIZER_LIST(notify_manager_weak_factory_(this)) { network_login_observer_.reset(new NetworkLoginObserver(this)); } @@ -3306,24 +3308,22 @@ std::string NetworkLibraryImplBase::GetProfilePath(NetworkProfileType type) { // notifications, e.g. connection state, devices, services, etc. void NetworkLibraryImplBase::NotifyNetworkManagerChanged(bool force_update) { // Cancel any pending signals. - if (notify_task_) { - notify_task_->Cancel(); - notify_task_ = NULL; - } + notify_manager_weak_factory_.InvalidateWeakPtrs(); if (force_update) { // Signal observers now. SignalNetworkManagerObservers(); } else { // Schedule a delayed signal to limit the frequency of notifications. - notify_task_ = NewRunnableMethod( - this, &NetworkLibraryImplBase::SignalNetworkManagerObservers); - BrowserThread::PostDelayedTask(BrowserThread::UI, FROM_HERE, notify_task_, - kNetworkNotifyDelayMs); + BrowserThread::PostDelayedTask( + BrowserThread::UI, + FROM_HERE, + base::Bind(&NetworkLibraryImplBase::SignalNetworkManagerObservers, + notify_manager_weak_factory_.GetWeakPtr()), + kNetworkNotifyDelayMs); } } void NetworkLibraryImplBase::SignalNetworkManagerObservers() { - notify_task_ = NULL; FOR_EACH_OBSERVER(NetworkManagerObserver, network_manager_observers_, OnNetworkManagerChanged(this)); @@ -5295,6 +5295,8 @@ void NetworkLibraryImplStub::CallConnectToNetwork(Network* network) { // If a delay has been set (i.e. we are interactive), delay the call to // ConnectToNetwork (but signal observers since we changed connecting state). if (connect_delay_ms_) { + // This class is a Singleton and won't be deleted until this callbacks has + // run. BrowserThread::PostDelayedTask( BrowserThread::UI, FROM_HERE, base::Bind(&NetworkLibraryImplStub::ConnectToNetwork, @@ -5428,7 +5430,3 @@ NetworkLibrary* NetworkLibrary::GetImpl(bool stub) { ///////////////////////////////////////////////////////////////////////////// } // namespace chromeos - -// Allows InvokeLater without adding refcounting. This class is a Singleton and -// won't be deleted until its last InvokeLater is run. -DISABLE_RUNNABLE_METHOD_REFCOUNT(chromeos::NetworkLibraryImplBase); |