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

Side by Side Diff: net/base/upload_data_stream.cc

Issue 9321003: net: Make UploadData::GetContentLength() asynchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 10 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 "net/base/upload_data_stream.h" 5 #include "net/base/upload_data_stream.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/threading/thread_restrictions.h" 9 #include "base/threading/thread_restrictions.h"
10 #include "net/base/file_stream.h" 10 #include "net/base/file_stream.h"
11 #include "net/base/io_buffer.h" 11 #include "net/base/io_buffer.h"
12 #include "net/base/net_errors.h" 12 #include "net/base/net_errors.h"
13 13
14 namespace net { 14 namespace net {
15 15
16 const size_t UploadDataStream::kBufferSize = 16384; 16 const size_t UploadDataStream::kBufferSize = 16384;
17 bool UploadDataStream::merge_chunks_ = true; 17 bool UploadDataStream::merge_chunks_ = true;
18 18
19 UploadDataStream::~UploadDataStream() { 19 UploadDataStream::~UploadDataStream() {
20 } 20 }
21 21
22 int UploadDataStream::Init() { 22 int UploadDataStream::Init() {
23 DCHECK(!initialized_successfully_); 23 DCHECK(!initialized_successfully_);
24 24
25 total_size_ = upload_data_->GetContentLength(); 25 total_size_ = upload_data_->GetContentLengthSyncHack();
26 const int result = FillBuffer(); 26 const int result = FillBuffer();
27 initialized_successfully_ = (result == OK); 27 initialized_successfully_ = (result == OK);
28 return result; 28 return result;
29 } 29 }
30 30
31 // static 31 // static
32 size_t UploadDataStream::GetBufferSize() { 32 size_t UploadDataStream::GetBufferSize() {
33 return kBufferSize; 33 return kBufferSize;
34 } 34 }
35 35
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 // time_t precision. So we have to convert both to time_t to compare. 107 // time_t precision. So we have to convert both to time_t to compare.
108 if (!element.expected_file_modification_time().is_null()) { 108 if (!element.expected_file_modification_time().is_null()) {
109 base::PlatformFileInfo info; 109 base::PlatformFileInfo info;
110 if (file_util::GetFileInfo(element.file_path(), &info) && 110 if (file_util::GetFileInfo(element.file_path(), &info) &&
111 element.expected_file_modification_time().ToTimeT() != 111 element.expected_file_modification_time().ToTimeT() !=
112 info.last_modified.ToTimeT()) { 112 info.last_modified.ToTimeT()) {
113 return ERR_UPLOAD_FILE_CHANGED; 113 return ERR_UPLOAD_FILE_CHANGED;
114 } 114 }
115 } 115 }
116 element_file_bytes_remaining_ = element.GetContentLength(); 116 element_file_bytes_remaining_ = element.GetContentLength();
117 // Temporarily allow until fix: http://crbug.com/72001.
118 base::ThreadRestrictions::ScopedAllowIO allow_io;
117 element_file_stream_.reset(element.NewFileStreamForReading()); 119 element_file_stream_.reset(element.NewFileStreamForReading());
118 } 120 }
119 121
120 const int num_bytes_to_read = 122 const int num_bytes_to_read =
121 static_cast<int>(std::min(element_file_bytes_remaining_, 123 static_cast<int>(std::min(element_file_bytes_remaining_,
122 static_cast<uint64>(free_buffer_space))); 124 static_cast<uint64>(free_buffer_space)));
123 if (num_bytes_to_read > 0) { 125 if (num_bytes_to_read > 0) {
124 int num_bytes_consumed = 0; 126 int num_bytes_consumed = 0;
125 // Temporarily allow until fix: http://crbug.com/72001. 127 // Temporarily allow until fix: http://crbug.com/72001.
126 base::ThreadRestrictions::ScopedAllowIO allow_io; 128 base::ThreadRestrictions::ScopedAllowIO allow_io;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
199 elements.back().is_last_chunk())); 201 elements.back().is_last_chunk()));
200 } 202 }
201 203
202 bool UploadDataStream::IsInMemory() const { 204 bool UploadDataStream::IsInMemory() const {
203 DCHECK(initialized_successfully_); 205 DCHECK(initialized_successfully_);
204 206
205 return upload_data_->IsInMemory(); 207 return upload_data_->IsInMemory();
206 } 208 }
207 209
208 } // namespace net 210 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698