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

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

Issue 16155009: Update webkit/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/browser/blob/blob_url_request_job.h" 5 #include "webkit/browser/blob/blob_url_request_job.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 file_system_context_(file_system_context), 73 file_system_context_(file_system_context),
74 file_thread_proxy_(file_thread_proxy), 74 file_thread_proxy_(file_thread_proxy),
75 total_size_(0), 75 total_size_(0),
76 remaining_bytes_(0), 76 remaining_bytes_(0),
77 pending_get_file_info_count_(0), 77 pending_get_file_info_count_(0),
78 current_item_index_(0), 78 current_item_index_(0),
79 current_item_offset_(0), 79 current_item_offset_(0),
80 error_(false), 80 error_(false),
81 headers_set_(false), 81 headers_set_(false),
82 byte_range_set_(false) { 82 byte_range_set_(false) {
83 DCHECK(file_thread_proxy_); 83 DCHECK(file_thread_proxy_.get());
84 } 84 }
85 85
86 void BlobURLRequestJob::Start() { 86 void BlobURLRequestJob::Start() {
87 // Continue asynchronously. 87 // Continue asynchronously.
88 base::MessageLoop::current()->PostTask( 88 base::MessageLoop::current()->PostTask(
89 FROM_HERE, 89 FROM_HERE,
90 base::Bind(&BlobURLRequestJob::DidStart, weak_factory_.GetWeakPtr())); 90 base::Bind(&BlobURLRequestJob::DidStart, weak_factory_.GetWeakPtr()));
91 } 91 }
92 92
93 void BlobURLRequestJob::Kill() { 93 void BlobURLRequestJob::Kill() {
(...skipping 20 matching lines...) Expand all
114 dest_size = static_cast<int>(remaining_bytes_); 114 dest_size = static_cast<int>(remaining_bytes_);
115 115
116 // If we should copy zero bytes because |remaining_bytes_| is zero, short 116 // If we should copy zero bytes because |remaining_bytes_| is zero, short
117 // circuit here. 117 // circuit here.
118 if (!dest_size) { 118 if (!dest_size) {
119 *bytes_read = 0; 119 *bytes_read = 0;
120 return true; 120 return true;
121 } 121 }
122 122
123 // Keep track of the buffer. 123 // Keep track of the buffer.
124 DCHECK(!read_buf_); 124 DCHECK(!read_buf_.get());
125 read_buf_ = new net::DrainableIOBuffer(dest, dest_size); 125 read_buf_ = new net::DrainableIOBuffer(dest, dest_size);
126 126
127 return ReadLoop(bytes_read); 127 return ReadLoop(bytes_read);
128 } 128 }
129 129
130 bool BlobURLRequestJob::GetMimeType(std::string* mime_type) const { 130 bool BlobURLRequestJob::GetMimeType(std::string* mime_type) const {
131 if (!response_info_) 131 if (!response_info_)
132 return false; 132 return false;
133 133
134 return response_info_->headers->GetMimeType(mime_type); 134 return response_info_->headers->GetMimeType(mime_type);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 171 }
172 172
173 void BlobURLRequestJob::DidStart() { 173 void BlobURLRequestJob::DidStart() {
174 // We only support GET request per the spec. 174 // We only support GET request per the spec.
175 if (request()->method() != "GET") { 175 if (request()->method() != "GET") {
176 NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED); 176 NotifyFailure(net::ERR_METHOD_NOT_SUPPORTED);
177 return; 177 return;
178 } 178 }
179 179
180 // If the blob data is not present, bail out. 180 // If the blob data is not present, bail out.
181 if (!blob_data_) { 181 if (!blob_data_.get()) {
182 NotifyFailure(net::ERR_FILE_NOT_FOUND); 182 NotifyFailure(net::ERR_FILE_NOT_FOUND);
183 return; 183 return;
184 } 184 }
185 185
186 CountSize(); 186 CountSize();
187 } 187 }
188 188
189 bool BlobURLRequestJob::AddItemLength(size_t index, int64 item_length) { 189 bool BlobURLRequestJob::AddItemLength(size_t index, int64 item_length) {
190 if (item_length > kint64max - total_size_) { 190 if (item_length > kint64max - total_size_) {
191 NotifyFailure(net::ERR_FAILED); 191 NotifyFailure(net::ERR_FAILED);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 385
386 AdvanceBytesRead(bytes_to_read); 386 AdvanceBytesRead(bytes_to_read);
387 return true; 387 return true;
388 } 388 }
389 389
390 bool BlobURLRequestJob::ReadFileItem(FileStreamReader* reader, 390 bool BlobURLRequestJob::ReadFileItem(FileStreamReader* reader,
391 int bytes_to_read) { 391 int bytes_to_read) {
392 DCHECK_GE(read_buf_->BytesRemaining(), bytes_to_read); 392 DCHECK_GE(read_buf_->BytesRemaining(), bytes_to_read);
393 DCHECK(reader); 393 DCHECK(reader);
394 const int result = reader->Read( 394 const int result = reader->Read(
395 read_buf_, bytes_to_read, 395 read_buf_.get(),
396 base::Bind(&BlobURLRequestJob::DidReadFile, 396 bytes_to_read,
397 base::Unretained(this))); 397 base::Bind(&BlobURLRequestJob::DidReadFile, base::Unretained(this)));
398 if (result >= 0) { 398 if (result >= 0) {
399 // Data is immediately available. 399 // Data is immediately available.
400 if (GetStatus().is_io_pending()) 400 if (GetStatus().is_io_pending())
401 DidReadFile(result); 401 DidReadFile(result);
402 else 402 else
403 AdvanceBytesRead(result); 403 AdvanceBytesRead(result);
404 return true; 404 return true;
405 } 405 }
406 if (result == net::ERR_IO_PENDING) 406 if (result == net::ERR_IO_PENDING)
407 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); 407 SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0));
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 void BlobURLRequestJob::CreateFileStreamReader(size_t index, 578 void BlobURLRequestJob::CreateFileStreamReader(size_t index,
579 int64 additional_offset) { 579 int64 additional_offset) {
580 DCHECK_LT(index, blob_data_->items().size()); 580 DCHECK_LT(index, blob_data_->items().size());
581 const BlobData::Item& item = blob_data_->items().at(index); 581 const BlobData::Item& item = blob_data_->items().at(index);
582 DCHECK(IsFileType(item.type())); 582 DCHECK(IsFileType(item.type()));
583 DCHECK_EQ(0U, index_to_reader_.count(index)); 583 DCHECK_EQ(0U, index_to_reader_.count(index));
584 584
585 FileStreamReader* reader = NULL; 585 FileStreamReader* reader = NULL;
586 switch (item.type()) { 586 switch (item.type()) {
587 case BlobData::Item::TYPE_FILE: 587 case BlobData::Item::TYPE_FILE:
588 reader = new LocalFileStreamReader( 588 reader = new LocalFileStreamReader(file_thread_proxy_.get(),
589 file_thread_proxy_, 589 item.path(),
590 item.path(), 590 item.offset() + additional_offset,
591 item.offset() + additional_offset, 591 item.expected_modification_time());
592 item.expected_modification_time());
593 break; 592 break;
594 case BlobData::Item::TYPE_FILE_FILESYSTEM: 593 case BlobData::Item::TYPE_FILE_FILESYSTEM:
595 reader = file_system_context_->CreateFileStreamReader( 594 reader = file_system_context_->CreateFileStreamReader(
596 fileapi::FileSystemURL(file_system_context_->CrackURL(item.url())), 595 fileapi::FileSystemURL(file_system_context_->CrackURL(item.url())),
597 item.offset() + additional_offset, 596 item.offset() + additional_offset,
598 item.expected_modification_time()).release(); 597 item.expected_modification_time()).release();
599 break; 598 break;
600 default: 599 default:
601 NOTREACHED(); 600 NOTREACHED();
602 } 601 }
603 DCHECK(reader); 602 DCHECK(reader);
604 index_to_reader_[index] = reader; 603 index_to_reader_[index] = reader;
605 } 604 }
606 605
607 } // namespace webkit_blob 606 } // namespace webkit_blob
OLDNEW
« no previous file with comments | « webkit/browser/blob/blob_storage_controller_unittest.cc ('k') | webkit/browser/blob/blob_url_request_job_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698