OLD | NEW |
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 // For loading files, we make use of overlapped i/o to ensure that reading from | 5 // For loading files, we make use of overlapped i/o to ensure that reading from |
6 // the filesystem (e.g., a network filesystem) does not block the calling | 6 // the filesystem (e.g., a network filesystem) does not block the calling |
7 // thread. An alternative approach would be to use a background thread or pool | 7 // thread. An alternative approach would be to use a background thread or pool |
8 // of threads, but it seems better to leverage the operating system's ability | 8 // of threads, but it seems better to leverage the operating system's ability |
9 // to do background file reads for us. | 9 // to do background file reads for us. |
10 // | 10 // |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, | 263 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, |
264 ERR_REQUEST_RANGE_NOT_SATISFIABLE)); | 264 ERR_REQUEST_RANGE_NOT_SATISFIABLE)); |
265 return; | 265 return; |
266 } | 266 } |
267 | 267 |
268 remaining_bytes_ = byte_range_.last_byte_position() - | 268 remaining_bytes_ = byte_range_.last_byte_position() - |
269 byte_range_.first_byte_position() + 1; | 269 byte_range_.first_byte_position() + 1; |
270 DCHECK_GE(remaining_bytes_, 0); | 270 DCHECK_GE(remaining_bytes_, 0); |
271 | 271 |
272 if (remaining_bytes_ > 0 && byte_range_.first_byte_position() != 0) { | 272 if (remaining_bytes_ > 0 && byte_range_.first_byte_position() != 0) { |
| 273 // TODO(vadimt): Remove ScopedProfile below once crbug.com/423948 is fixed. |
| 274 tracked_objects::ScopedProfile tracking_profile1( |
| 275 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 276 "423948 URLRequestFileJob::DidOpen 1")); |
| 277 |
273 int rv = stream_->Seek(base::File::FROM_BEGIN, | 278 int rv = stream_->Seek(base::File::FROM_BEGIN, |
274 byte_range_.first_byte_position(), | 279 byte_range_.first_byte_position(), |
275 base::Bind(&URLRequestFileJob::DidSeek, | 280 base::Bind(&URLRequestFileJob::DidSeek, |
276 weak_ptr_factory_.GetWeakPtr())); | 281 weak_ptr_factory_.GetWeakPtr())); |
277 if (rv != ERR_IO_PENDING) { | 282 if (rv != ERR_IO_PENDING) { |
278 // stream_->Seek() failed, so pass an intentionally erroneous value | 283 // stream_->Seek() failed, so pass an intentionally erroneous value |
279 // into DidSeek(). | 284 // into DidSeek(). |
280 DidSeek(-1); | 285 DidSeek(-1); |
281 } | 286 } |
282 } else { | 287 } else { |
(...skipping 29 matching lines...) Expand all Loading... |
312 if (result == 0) { | 317 if (result == 0) { |
313 NotifyDone(URLRequestStatus()); | 318 NotifyDone(URLRequestStatus()); |
314 } else if (result < 0) { | 319 } else if (result < 0) { |
315 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); | 320 NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, result)); |
316 } | 321 } |
317 | 322 |
318 NotifyReadComplete(result); | 323 NotifyReadComplete(result); |
319 } | 324 } |
320 | 325 |
321 } // namespace net | 326 } // namespace net |
OLD | NEW |