summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-16 23:51:24 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-16 23:51:24 +0000
commitb93fee240c82a81a3cea2535a77c8e09456e0433 (patch)
tree121fb8c05b7c939841914b0c84b4e91d7026015b
parent0c893bcfc8c118649c3d2aa21f0b9c45d233b9e8 (diff)
downloadchromium_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.cc14
-rw-r--r--chrome/browser/chromeos/audio_mixer_alsa.h3
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc30
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);