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

Unified Diff: chrome/browser/metrics/metrics_service.cc

Issue 8603013: base::Bind() conversion for MetricsService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/metrics_service.cc
diff --git a/chrome/browser/metrics/metrics_service.cc b/chrome/browser/metrics/metrics_service.cc
index 93dffd8b251634fce6ff91e4b997c43520c86564..b9f99987d8d547da744beafafdb99c061e4286d7 100644
--- a/chrome/browser/metrics/metrics_service.cc
+++ b/chrome/browser/metrics/metrics_service.cc
@@ -264,16 +264,17 @@ struct MetricsService::ChildProcessStats {
// Will run the provided task after finished.
class MetricsMemoryDetails : public MemoryDetails {
public:
- explicit MetricsMemoryDetails(Task* completion) : completion_(completion) {}
+ explicit MetricsMemoryDetails(const base::Closure& callback)
+ : callback_(callback) {}
virtual void OnDetailsAvailable() {
- MessageLoop::current()->PostTask(FROM_HERE, completion_);
+ MessageLoop::current()->PostTask(FROM_HERE, callback_);
}
private:
~MetricsMemoryDetails() {}
- Task* completion_;
+ base::Closure callback_;
DISALLOW_COPY_AND_ASSIGN(MetricsMemoryDetails);
};
@@ -365,8 +366,8 @@ MetricsService::MetricsService()
io_thread_(NULL),
idle_since_last_transmission_(false),
next_window_id_(0),
- ALLOW_THIS_IN_INITIALIZER_LIST(log_sender_factory_(this)),
- ALLOW_THIS_IN_INITIALIZER_LIST(state_saver_factory_(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(log_sender_weak_factory_(this)),
+ ALLOW_THIS_IN_INITIALIZER_LIST(state_saver_weak_factory_(this)),
waiting_for_asynchronus_reporting_step_(false) {
DCHECK(IsSingleThreaded());
InitializeMetricsState();
@@ -760,10 +761,12 @@ std::string MetricsService::GenerateClientID() {
// State save methods
void MetricsService::ScheduleNextStateSave() {
- state_saver_factory_.RevokeAll();
+ state_saver_weak_factory_.InvalidateWeakPtrs();
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- state_saver_factory_.NewRunnableMethod(&MetricsService::SaveLocalState),
+ MessageLoop::current()->PostDelayedTask(
+ FROM_HERE,
+ base::Bind(&MetricsService::SaveLocalState,
+ state_saver_weak_factory_.GetWeakPtr()),
kSaveStateInterval * 1000);
}
@@ -874,10 +877,12 @@ void MetricsService::StartScheduledUpload() {
DCHECK(!waiting_for_asynchronus_reporting_step_);
waiting_for_asynchronus_reporting_step_ = true;
- Task* task = log_sender_factory_.
- NewRunnableMethod(&MetricsService::OnMemoryDetailCollectionDone);
+ base::Closure callback =
+ base::Bind(&MetricsService::OnMemoryDetailCollectionDone,
+ log_sender_weak_factory_.GetWeakPtr());
- scoped_refptr<MetricsMemoryDetails> details(new MetricsMemoryDetails(task));
+ scoped_refptr<MetricsMemoryDetails> details(
+ new MetricsMemoryDetails(callback));
details->StartFetch();
// Collect WebCore cache information to put into a histogram.
@@ -901,8 +906,9 @@ void MetricsService::OnMemoryDetailCollectionDone() {
// OnHistogramSynchronizationDone to continue processing.
// Create a callback_task for OnHistogramSynchronizationDone.
- Task* callback_task = log_sender_factory_.NewRunnableMethod(
- &MetricsService::OnHistogramSynchronizationDone);
+ base::Closure callback = base::Bind(
+ &MetricsService::OnHistogramSynchronizationDone,
+ log_sender_weak_factory_.GetWeakPtr());
base::StatisticsRecorder::CollectHistogramStats("Browser");
@@ -910,7 +916,7 @@ void MetricsService::OnMemoryDetailCollectionDone() {
// renderer processes. Wait time specifies how long to wait before absolutely
// calling us back on the task.
HistogramSynchronizer::FetchRendererHistogramsAsynchronously(
- MessageLoop::current(), callback_task,
+ MessageLoop::current(), callback,
kMaxHistogramGatheringWaitDuration);
}
« chrome/browser/metrics/histogram_synchronizer.h ('K') | « chrome/browser/metrics/metrics_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698