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

Unified Diff: net/base/upload_file_element_reader.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/upload_file_element_reader.h ('k') | net/base/upload_file_element_reader_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/upload_file_element_reader.cc
diff --git a/net/base/upload_file_element_reader.cc b/net/base/upload_file_element_reader.cc
deleted file mode 100644
index 864584d849d43f08741e7ce3834bb8af97a64d28..0000000000000000000000000000000000000000
--- a/net/base/upload_file_element_reader.cc
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/base/upload_file_element_reader.h"
-
-#include "base/bind.h"
-#include "base/files/file_util.h"
-#include "base/location.h"
-#include "base/profiler/scoped_tracker.h"
-#include "base/task_runner_util.h"
-#include "net/base/file_stream.h"
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-
-namespace net {
-
-namespace {
-
-// In tests, this value is used to override the return value of
-// UploadFileElementReader::GetContentLength() when set to non-zero.
-uint64 overriding_content_length = 0;
-
-} // namespace
-
-UploadFileElementReader::UploadFileElementReader(
- base::TaskRunner* task_runner,
- const base::FilePath& path,
- uint64 range_offset,
- uint64 range_length,
- const base::Time& expected_modification_time)
- : task_runner_(task_runner),
- path_(path),
- range_offset_(range_offset),
- range_length_(range_length),
- expected_modification_time_(expected_modification_time),
- content_length_(0),
- bytes_remaining_(0),
- weak_ptr_factory_(this) {
- DCHECK(task_runner_.get());
-}
-
-UploadFileElementReader::~UploadFileElementReader() {
-}
-
-const UploadFileElementReader* UploadFileElementReader::AsFileReader() const {
- return this;
-}
-
-int UploadFileElementReader::Init(const CompletionCallback& callback) {
- DCHECK(!callback.is_null());
- Reset();
-
- file_stream_.reset(new FileStream(task_runner_.get()));
- int result = file_stream_->Open(
- path_,
- base::File::FLAG_OPEN | base::File::FLAG_READ |
- base::File::FLAG_ASYNC,
- base::Bind(&UploadFileElementReader::OnOpenCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- callback));
- DCHECK_GT(0, result);
- return result;
-}
-
-uint64 UploadFileElementReader::GetContentLength() const {
- if (overriding_content_length)
- return overriding_content_length;
- return content_length_;
-}
-
-uint64 UploadFileElementReader::BytesRemaining() const {
- return bytes_remaining_;
-}
-
-int UploadFileElementReader::Read(IOBuffer* buf,
- int buf_length,
- const CompletionCallback& callback) {
- DCHECK(!callback.is_null());
-
- int num_bytes_to_read = static_cast<int>(
- std::min(BytesRemaining(), static_cast<uint64>(buf_length)));
- if (num_bytes_to_read == 0)
- return 0;
-
- int result = file_stream_->Read(
- buf, num_bytes_to_read,
- base::Bind(base::IgnoreResult(&UploadFileElementReader::OnReadCompleted),
- weak_ptr_factory_.GetWeakPtr(),
- callback));
- // Even in async mode, FileStream::Read() may return the result synchronously.
- if (result != ERR_IO_PENDING)
- return OnReadCompleted(CompletionCallback(), result);
- return ERR_IO_PENDING;
-}
-
-void UploadFileElementReader::Reset() {
- weak_ptr_factory_.InvalidateWeakPtrs();
- bytes_remaining_ = 0;
- content_length_ = 0;
- file_stream_.reset();
-}
-
-void UploadFileElementReader::OnOpenCompleted(
- const CompletionCallback& callback,
- int result) {
- // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed.
- tracked_objects::ScopedTracker tracking_profile(
- FROM_HERE_WITH_EXPLICIT_FUNCTION(
- "423948 UploadFileElementReader::OnOpenCompleted"));
-
- DCHECK(!callback.is_null());
-
- if (result < 0) {
- DLOG(WARNING) << "Failed to open \"" << path_.value()
- << "\" for reading: " << result;
- callback.Run(result);
- return;
- }
-
- if (range_offset_) {
- int result = file_stream_->Seek(
- base::File::FROM_BEGIN, range_offset_,
- base::Bind(&UploadFileElementReader::OnSeekCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- callback));
- DCHECK_GT(0, result);
- if (result != ERR_IO_PENDING)
- callback.Run(result);
- } else {
- OnSeekCompleted(callback, OK);
- }
-}
-
-void UploadFileElementReader::OnSeekCompleted(
- const CompletionCallback& callback,
- int64 result) {
- DCHECK(!callback.is_null());
-
- if (result < 0) {
- DLOG(WARNING) << "Failed to seek \"" << path_.value()
- << "\" to offset: " << range_offset_ << " (" << result << ")";
- callback.Run(static_cast<int>(result));
- return;
- }
-
- base::File::Info* file_info = new base::File::Info;
- bool posted = base::PostTaskAndReplyWithResult(
- task_runner_.get(),
- FROM_HERE,
- base::Bind(&base::GetFileInfo, path_, file_info),
- base::Bind(&UploadFileElementReader::OnGetFileInfoCompleted,
- weak_ptr_factory_.GetWeakPtr(),
- callback,
- base::Owned(file_info)));
- DCHECK(posted);
-}
-
-void UploadFileElementReader::OnGetFileInfoCompleted(
- const CompletionCallback& callback,
- base::File::Info* file_info,
- bool result) {
- DCHECK(!callback.is_null());
- if (!result) {
- DLOG(WARNING) << "Failed to get file info of \"" << path_.value() << "\"";
- callback.Run(ERR_FILE_NOT_FOUND);
- return;
- }
-
- int64 length = file_info->size;
- if (range_offset_ < static_cast<uint64>(length)) {
- // Compensate for the offset.
- length = std::min(length - range_offset_, range_length_);
- }
-
- // If the underlying file has been changed and the expected file modification
- // time is set, treat it as error. Note that |expected_modification_time_| may
- // have gone through multiple conversion steps involving loss of precision
- // (including conversion to time_t). Therefore the check below only verifies
- // that the timestamps are within one second of each other. This check is used
- // for sliced files.
- if (!expected_modification_time_.is_null() &&
- (expected_modification_time_ - file_info->last_modified)
- .magnitude()
- .InSeconds() != 0) {
- callback.Run(ERR_UPLOAD_FILE_CHANGED);
- return;
- }
-
- content_length_ = length;
- bytes_remaining_ = GetContentLength();
- callback.Run(OK);
-}
-
-int UploadFileElementReader::OnReadCompleted(
- const CompletionCallback& callback,
- int result) {
- if (result == 0) // Reached end-of-file earlier than expected.
- result = ERR_UPLOAD_FILE_CHANGED;
-
- if (result > 0) {
- DCHECK_GE(bytes_remaining_, static_cast<uint64>(result));
- bytes_remaining_ -= result;
- }
-
- if (!callback.is_null())
- callback.Run(result);
- return result;
-}
-
-UploadFileElementReader::ScopedOverridingContentLengthForTests::
-ScopedOverridingContentLengthForTests(uint64 value) {
- overriding_content_length = value;
-}
-
-UploadFileElementReader::ScopedOverridingContentLengthForTests::
-~ScopedOverridingContentLengthForTests() {
- overriding_content_length = 0;
-}
-
-} // namespace net
« no previous file with comments | « net/base/upload_file_element_reader.h ('k') | net/base/upload_file_element_reader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698