Index: webkit/blob/blob_url_request_job.cc |
diff --git a/webkit/blob/blob_url_request_job.cc b/webkit/blob/blob_url_request_job.cc |
index 15d86accb474e89dd7f346836830ea3ffc23410b..3a980c8eaff1ff52c2f445d7fdf049eaeb22f78e 100644 |
--- a/webkit/blob/blob_url_request_job.cc |
+++ b/webkit/blob/blob_url_request_job.cc |
@@ -4,6 +4,7 @@ |
#include "webkit/blob/blob_url_request_job.h" |
+#include "base/bind.h" |
#include "base/compiler_specific.h" |
#include "base/file_path.h" |
#include "base/file_util.h" |
@@ -51,7 +52,7 @@ BlobURLRequestJob::BlobURLRequestJob( |
BlobData* blob_data, |
base::MessageLoopProxy* file_thread_proxy) |
: net::URLRequestJob(request), |
- callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
+ weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), |
blob_data_(blob_data), |
file_thread_proxy_(file_thread_proxy), |
ALLOW_THIS_IN_INITIALIZER_LIST( |
@@ -111,7 +112,7 @@ void BlobURLRequestJob::Kill() { |
CloseStream(); |
net::URLRequestJob::Kill(); |
- callback_factory_.RevokeAll(); |
+ weak_factory_.InvalidateWeakPtrs(); |
method_factory_.RevokeAll(); |
} |
@@ -119,7 +120,8 @@ void BlobURLRequestJob::ResolveFile(const FilePath& file_path) { |
base::FileUtilProxy::GetFileInfo( |
file_thread_proxy_, |
file_path, |
- callback_factory_.NewCallback(&BlobURLRequestJob::DidResolve)); |
+ base::Bind(&BlobURLRequestJob::DidResolve, |
+ weak_factory_.GetWeakPtr())); |
} |
void BlobURLRequestJob::DidResolve(base::PlatformFileError rv, |
@@ -317,7 +319,8 @@ bool BlobURLRequestJob::DispatchReadFile(const BlobData::Item& item) { |
base::FileUtilProxy::CreateOrOpen( |
file_thread_proxy_, item.file_path(), kFileOpenFlags, |
- callback_factory_.NewCallback(&BlobURLRequestJob::DidOpen)); |
+ base::Bind(&BlobURLRequestJob::DidOpen, |
+ weak_factory_.GetWeakPtr())); |
SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); |
return false; |
} |