Index: chrome/browser/io_thread.cc |
diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc |
index c86f21ec0c45ba51671c5f54c8bc78edae5c968f..18d1d2ba28d8c5418b6001c9377fa6ecffb0985a 100644 |
--- a/chrome/browser/io_thread.cc |
+++ b/chrome/browser/io_thread.cc |
@@ -7,6 +7,8 @@ |
#include <vector> |
#include "base/command_line.h" |
+#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/debug/leak_tracker.h" |
#include "base/logging.h" |
#include "base/metrics/field_trial.h" |
@@ -68,6 +70,9 @@ |
using content::BrowserThread; |
+// The IOThread object must outlive any tasks posted to the IO thread before the |
+// Quit task, so base::Bind() calls are not refcounted. |
+ |
namespace { |
// Custom URLRequestContext used by requests which aren't associated with a |
@@ -328,10 +333,6 @@ SystemURLRequestContextGetter::GetIOMessageLoopProxy() const { |
return io_message_loop_proxy_; |
} |
-// The IOThread object must outlive any tasks posted to the IO thread before the |
-// Quit task. |
-DISABLE_RUNNABLE_METHOD_REFCOUNT(IOThread); |
- |
IOThread::Globals::Globals() {} |
IOThread::Globals::~Globals() {} |
@@ -351,7 +352,7 @@ IOThread::IOThread( |
extension_event_router_forwarder_(extension_event_router_forwarder), |
globals_(NULL), |
sdch_manager_(NULL), |
- ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) { |
+ ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)) { |
// We call RegisterPrefs() here (instead of inside browser_prefs.cc) to make |
// sure that everything is initialized in the right order. |
RegisterPrefs(local_state); |
@@ -370,9 +371,9 @@ IOThread::IOThread( |
local_state); |
ssl_config_service_manager_.reset( |
SSLConfigServiceManager::CreateDefaultManager(local_state)); |
- MessageLoop::current()->PostTask(FROM_HERE, |
- method_factory_.NewRunnableMethod( |
- &IOThread::InitSystemRequestContext)); |
+ MessageLoop::current()->PostTask( |
+ FROM_HERE, base::Bind(&IOThread::InitSystemRequestContext, |
+ weak_factory_.GetWeakPtr())); |
} |
IOThread::~IOThread() { |
@@ -593,10 +594,8 @@ void IOThread::InitSystemRequestContext() { |
system_url_request_context_getter_ = |
new SystemURLRequestContextGetter(this); |
message_loop()->PostTask( |
- FROM_HERE, |
- NewRunnableMethod( |
- this, |
- &IOThread::InitSystemRequestContextOnIOThread)); |
+ FROM_HERE, base::Bind(&IOThread::InitSystemRequestContextOnIOThread, |
+ base::Unretained(this))); |
} |
void IOThread::InitSystemRequestContextOnIOThread() { |