| 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 6b62605b02e152b97f1099239692a217f1f203c3..bbe26bec1b34538cdee04e04787568dc3d0b99c7 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/compiler_specific.h"
|
| #include "base/file_path.h"
|
| #include "base/file_util.h"
|
| #include "base/file_util_proxy.h"
|
| @@ -30,14 +31,14 @@ static const int kHTTPMethodNotAllow = 405;
|
| static const int kHTTPRequestedRangeNotSatisfiable = 416;
|
| static const int kHTTPInternalError = 500;
|
|
|
| -static const char* kHTTPOKText = "OK";
|
| -static const char* kHTTPPartialContentText = "Partial Content";
|
| -static const char* kHTTPNotAllowedText = "Not Allowed";
|
| -static const char* kHTTPNotFoundText = "Not Found";
|
| -static const char* kHTTPMethodNotAllowText = "Method Not Allowed";
|
| -static const char* kHTTPRequestedRangeNotSatisfiableText =
|
| +static const char kHTTPOKText[] = "OK";
|
| +static const char kHTTPPartialContentText[] = "Partial Content";
|
| +static const char kHTTPNotAllowedText[] = "Not Allowed";
|
| +static const char kHTTPNotFoundText[] = "Not Found";
|
| +static const char kHTTPMethodNotAllowText[] = "Method Not Allowed";
|
| +static const char kHTTPRequestedRangeNotSatisfiableText[] =
|
| "Requested Range Not Satisfiable";
|
| -static const char* kHTTPInternalErrorText = "Internal Server Error";
|
| +static const char kHTTPInternalErrorText[] = "Internal Server Error";
|
|
|
| BlobURLRequestJob::BlobURLRequestJob(
|
| net::URLRequest* request,
|
| @@ -58,7 +59,8 @@ BlobURLRequestJob::BlobURLRequestJob(
|
| read_buf_remaining_bytes_(0),
|
| error_(false),
|
| headers_set_(false),
|
| - byte_range_set_(false) {
|
| + byte_range_set_(false),
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)) {
|
| }
|
|
|
| BlobURLRequestJob::~BlobURLRequestJob() {
|
| @@ -66,8 +68,9 @@ BlobURLRequestJob::~BlobURLRequestJob() {
|
|
|
| void BlobURLRequestJob::Start() {
|
| // Continue asynchronously.
|
| - MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &BlobURLRequestJob::DidStart));
|
| + MessageLoop::current()->PostTask(
|
| + FROM_HERE,
|
| + method_factory_.NewRunnableMethod(&BlobURLRequestJob::DidStart));
|
| }
|
|
|
| void BlobURLRequestJob::DidStart() {
|
| @@ -90,6 +93,8 @@ void BlobURLRequestJob::Kill() {
|
| stream_.Close();
|
|
|
| URLRequestJob::Kill();
|
| + callback_factory_.RevokeAll();
|
| + method_factory_.RevokeAll();
|
| }
|
|
|
| void BlobURLRequestJob::ResolveFile(const FilePath& file_path) {
|
| @@ -109,18 +114,16 @@ void BlobURLRequestJob::ResolveFile(const FilePath& file_path) {
|
| bool exists = file_util::GetFileInfo(file_path, &file_info);
|
|
|
| // Continue asynchronously.
|
| - MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod(
|
| - this, &BlobURLRequestJob::DidResolve,
|
| - (exists ? base::PLATFORM_FILE_OK : base::PLATFORM_FILE_ERROR_NOT_FOUND),
|
| - file_info));
|
| + MessageLoop::current()->PostTask(
|
| + FROM_HERE,
|
| + method_factory_.NewRunnableMethod(
|
| + &BlobURLRequestJob::DidResolve,
|
| + exists ? base::PLATFORM_FILE_OK : base::PLATFORM_FILE_ERROR_NOT_FOUND,
|
| + file_info));
|
| }
|
|
|
| void BlobURLRequestJob::DidResolve(base::PlatformFileError rv,
|
| const base::PlatformFileInfo& file_info) {
|
| - // We may have been orphaned...
|
| - if (!request_)
|
| - return;
|
| -
|
| // If an error occured, bail out.
|
| if (rv == base::PLATFORM_FILE_ERROR_NOT_FOUND) {
|
| NotifyFailure(net::ERR_FILE_NOT_FOUND);
|
|
|