Index: content/renderer/load_progress_tracker.cc |
diff --git a/content/renderer/load_progress_tracker.cc b/content/renderer/load_progress_tracker.cc |
index c4ceb5eb00fce50531fdede2ac0ec3d8f2e5108d..753ab6d7a2f99d7e344be0fd5f2c9caf15d78a13 100644 |
--- a/content/renderer/load_progress_tracker.cc |
+++ b/content/renderer/load_progress_tracker.cc |
@@ -4,6 +4,7 @@ |
#include "content/renderer/load_progress_tracker.h" |
+#include "base/bind.h" |
#include "base/message_loop.h" |
#include "content/common/view_messages.h" |
#include "content/renderer/render_view_impl.h" |
@@ -18,7 +19,7 @@ LoadProgressTracker::LoadProgressTracker(RenderViewImpl* render_view) |
: render_view_(render_view), |
tracked_frame_(NULL), |
progress_(0.0), |
- ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { |
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
} |
LoadProgressTracker::~LoadProgressTracker() { |
@@ -54,20 +55,20 @@ void LoadProgressTracker::DidChangeLoadProgress(WebKit::WebFrame* frame, |
(base::TimeTicks::Now() - last_time_progress_sent_).InMilliseconds() > |
kMinimumDelayBetweenUpdatesMS) { |
// If there is a pending task to send progress, it is now obsolete. |
- method_factory_.RevokeAll(); |
+ weak_factory_.InvalidateWeakPtrs(); |
SendChangeLoadProgress(); |
if (progress == 1.0) |
ResetStates(); |
return; |
} |
- if (!method_factory_.empty()) |
+ if (weak_factory_.HasWeakPtrs()) |
return; |
MessageLoop::current()->PostDelayedTask( |
FROM_HERE, |
- method_factory_.NewRunnableMethod( |
- &LoadProgressTracker::SendChangeLoadProgress), |
+ base::Bind(&LoadProgressTracker::SendChangeLoadProgress, |
+ weak_factory_.GetWeakPtr()), |
kMinimumDelayBetweenUpdatesMS); |
} |
@@ -81,6 +82,6 @@ void LoadProgressTracker::SendChangeLoadProgress() { |
void LoadProgressTracker::ResetStates() { |
tracked_frame_ = NULL; |
progress_ = 0.0; |
- method_factory_.RevokeAll(); |
+ weak_factory_.InvalidateWeakPtrs(); |
last_time_progress_sent_ = base::TimeTicks(); |
} |