Index: chrome/renderer/net/renderer_net_predictor.cc |
=================================================================== |
--- chrome/renderer/net/renderer_net_predictor.cc (revision 110185) |
+++ chrome/renderer/net/renderer_net_predictor.cc (working copy) |
@@ -8,6 +8,7 @@ |
#include <ctype.h> |
+#include "base/bind.h" |
#include "base/logging.h" |
#include "base/message_loop.h" |
#include "chrome/common/net/predictor_common.h" |
@@ -23,7 +24,7 @@ |
RendererNetPredictor::RendererNetPredictor() |
: c_string_queue_(1000), |
- ALLOW_THIS_IN_INITIALIZER_LIST(renderer_predictor_factory_(this)) { |
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
Reset(); |
} |
@@ -52,10 +53,11 @@ |
DCHECK_EQ(old_size, 0u); |
if (0 != old_size) |
return; // Overkill safety net: Don't send too many InvokeLater's. |
- renderer_predictor_factory_.RevokeAll(); |
- RenderThread::Get()->GetMessageLoop()->PostDelayedTask(FROM_HERE, |
- renderer_predictor_factory_.NewRunnableMethod( |
- &RendererNetPredictor::SubmitHostnames), 10); |
+ weak_factory_.InvalidateWeakPtrs(); |
+ RenderThread::Get()->GetMessageLoop()->PostDelayedTask( |
+ FROM_HERE, base::Bind(&RendererNetPredictor::SubmitHostnames, |
+ weak_factory_.GetWeakPtr()), |
+ 10); |
} |
return; |
} |
@@ -86,10 +88,11 @@ |
// This will help to avoid overloads when a page has a TON of links. |
DnsPrefetchNames(kMAX_SUBMISSION_PER_TASK); |
if (new_name_count_ > 0 || 0 < c_string_queue_.Size()) { |
- renderer_predictor_factory_.RevokeAll(); |
- RenderThread::Get()->GetMessageLoop()->PostDelayedTask(FROM_HERE, |
- renderer_predictor_factory_.NewRunnableMethod( |
- &RendererNetPredictor::SubmitHostnames), 10); |
+ weak_factory_.InvalidateWeakPtrs(); |
+ RenderThread::Get()->GetMessageLoop()->PostDelayedTask( |
+ FROM_HERE, base::Bind(&RendererNetPredictor::SubmitHostnames, |
+ weak_factory_.GetWeakPtr()), |
+ 10); |
} else { |
// TODO(JAR): Should we only clear the map when we navigate, or reload? |
domain_map_.clear(); |