| 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;
|
| }
|
|
|