Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: webkit/blob/blob_url_request_job.cc

Issue 8231004: Remaining cleanup (base::Bind): Replacing FileUtilProxy calls with new callback (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: got it building Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/blob/blob_url_request_job.h" 5 #include "webkit/blob/blob_url_request_job.h"
6 6
7 #include "base/bind.h"
7 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
8 #include "base/file_path.h" 9 #include "base/file_path.h"
9 #include "base/file_util.h" 10 #include "base/file_util.h"
10 #include "base/file_util_proxy.h" 11 #include "base/file_util_proxy.h"
11 #include "base/message_loop.h" 12 #include "base/message_loop.h"
12 #include "base/message_loop_proxy.h" 13 #include "base/message_loop_proxy.h"
13 #include "base/string_number_conversions.h" 14 #include "base/string_number_conversions.h"
14 #include "base/threading/thread_restrictions.h" 15 #include "base/threading/thread_restrictions.h"
15 #include "net/base/file_stream.h" 16 #include "net/base/file_stream.h"
16 #include "net/base/io_buffer.h" 17 #include "net/base/io_buffer.h"
(...skipping 27 matching lines...) Expand all
44 45
45 static const int kFileOpenFlags = base::PLATFORM_FILE_OPEN | 46 static const int kFileOpenFlags = base::PLATFORM_FILE_OPEN |
46 base::PLATFORM_FILE_READ | 47 base::PLATFORM_FILE_READ |
47 base::PLATFORM_FILE_ASYNC; 48 base::PLATFORM_FILE_ASYNC;
48 49
49 BlobURLRequestJob::BlobURLRequestJob( 50 BlobURLRequestJob::BlobURLRequestJob(
50 net::URLRequest* request, 51 net::URLRequest* request,
51 BlobData* blob_data, 52 BlobData* blob_data,
52 base::MessageLoopProxy* file_thread_proxy) 53 base::MessageLoopProxy* file_thread_proxy)
53 : net::URLRequestJob(request), 54 : net::URLRequestJob(request),
54 callback_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 55 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
55 blob_data_(blob_data), 56 blob_data_(blob_data),
56 file_thread_proxy_(file_thread_proxy), 57 file_thread_proxy_(file_thread_proxy),
57 ALLOW_THIS_IN_INITIALIZER_LIST( 58 ALLOW_THIS_IN_INITIALIZER_LIST(
58 io_callback_(this, &BlobURLRequestJob::DidRead)), 59 io_callback_(this, &BlobURLRequestJob::DidRead)),
59 item_index_(0), 60 item_index_(0),
60 total_size_(0), 61 total_size_(0),
61 current_item_offset_(0), 62 current_item_offset_(0),
62 remaining_bytes_(0), 63 remaining_bytes_(0),
63 read_buf_offset_(0), 64 read_buf_offset_(0),
64 read_buf_size_(0), 65 read_buf_size_(0),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 if (stream_ != NULL) { 105 if (stream_ != NULL) {
105 stream_->Close(); 106 stream_->Close();
106 stream_.reset(NULL); 107 stream_.reset(NULL);
107 } 108 }
108 } 109 }
109 110
110 void BlobURLRequestJob::Kill() { 111 void BlobURLRequestJob::Kill() {
111 CloseStream(); 112 CloseStream();
112 113
113 net::URLRequestJob::Kill(); 114 net::URLRequestJob::Kill();
114 callback_factory_.RevokeAll(); 115 weak_factory_.InvalidateWeakPtrs();
115 method_factory_.RevokeAll(); 116 method_factory_.RevokeAll();
116 } 117 }
117 118
118 void BlobURLRequestJob::ResolveFile(const FilePath& file_path) { 119 void BlobURLRequestJob::ResolveFile(const FilePath& file_path) {
119 base::FileUtilProxy::GetFileInfo( 120 base::FileUtilProxy::GetFileInfo(
120 file_thread_proxy_, 121 file_thread_proxy_,
121 file_path, 122 file_path,
122 callback_factory_.NewCallback(&BlobURLRequestJob::DidResolve)); 123 base::Bind(&BlobURLRequestJob::DidResolve,
124 weak_factory_.GetWeakPtr()));
123 } 125 }
124 126
125 void BlobURLRequestJob::DidResolve(base::PlatformFileError rv, 127 void BlobURLRequestJob::DidResolve(base::PlatformFileError rv,
126 const base::PlatformFileInfo& file_info) { 128 const base::PlatformFileInfo& file_info) {
127 // If an error occured, bail out. 129 // If an error occured, bail out.
128 if (rv == base::PLATFORM_FILE_ERROR_NOT_FOUND) { 130 if (rv == base::PLATFORM_FILE_ERROR_NOT_FOUND) {
129 NotifyFailure(net::ERR_FILE_NOT_FOUND); 131 NotifyFailure(net::ERR_FILE_NOT_FOUND);
130 return; 132 return;
131 } else if (rv != base::PLATFORM_FILE_OK) { 133 } else if (rv != base::PLATFORM_FILE_OK) {
132 NotifyFailure(net::ERR_FAILED); 134 NotifyFailure(net::ERR_FAILED);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 return true; 312 return true;
311 } 313 }
312 314
313 bool BlobURLRequestJob::DispatchReadFile(const BlobData::Item& item) { 315 bool BlobURLRequestJob::DispatchReadFile(const BlobData::Item& item) {
314 // If the stream already exists, keep reading from it. 316 // If the stream already exists, keep reading from it.
315 if (stream_ != NULL) 317 if (stream_ != NULL)
316 return ReadFile(item); 318 return ReadFile(item);
317 319
318 base::FileUtilProxy::CreateOrOpen( 320 base::FileUtilProxy::CreateOrOpen(
319 file_thread_proxy_, item.file_path(), kFileOpenFlags, 321 file_thread_proxy_, item.file_path(), kFileOpenFlags,
320 callback_factory_.NewCallback(&BlobURLRequestJob::DidOpen)); 322 base::Bind(&BlobURLRequestJob::DidOpen,
323 weak_factory_.GetWeakPtr()));
321 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); 324 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0));
322 return false; 325 return false;
323 } 326 }
324 327
325 void BlobURLRequestJob::DidOpen(base::PlatformFileError rv, 328 void BlobURLRequestJob::DidOpen(base::PlatformFileError rv,
326 base::PassPlatformFile file, 329 base::PassPlatformFile file,
327 bool created) { 330 bool created) {
328 if (rv != base::PLATFORM_FILE_OK) { 331 if (rv != base::PLATFORM_FILE_OK) {
329 NotifyFailure(net::ERR_FAILED); 332 NotifyFailure(net::ERR_FAILED);
330 return; 333 return;
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 // We don't support multiple range requests in one single URL request, 564 // We don't support multiple range requests in one single URL request,
562 // because we need to do multipart encoding here. 565 // because we need to do multipart encoding here.
563 // TODO(jianli): Support multipart byte range requests. 566 // TODO(jianli): Support multipart byte range requests.
564 NotifyFailure(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE); 567 NotifyFailure(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE);
565 } 568 }
566 } 569 }
567 } 570 }
568 } 571 }
569 572
570 } // namespace webkit_blob 573 } // namespace webkit_blob
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698