summaryrefslogtreecommitdiffstats
path: root/net/base/upload_data.cc
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 06:35:52 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-14 06:35:52 +0000
commitb1064d692d5f1d56877d0b1eb0b38920115227ba (patch)
tree6145df9c1a9d94bf5879cbdbf03cb9fcab4211c7 /net/base/upload_data.cc
parentca0206c7aba32aa151c94514a0456a6c58252fb5 (diff)
downloadchromium_src-b1064d692d5f1d56877d0b1eb0b38920115227ba.zip
chromium_src-b1064d692d5f1d56877d0b1eb0b38920115227ba.tar.gz
chromium_src-b1064d692d5f1d56877d0b1eb0b38920115227ba.tar.bz2
net: Change type of UploadData::elements from std::vector to ScopedVector
Using std::vector to hold UploadElement is bad for two reasons: 1. It results in a lot of unnecessary copy of uploaded data. 2. Appending new chunks may result in invalidating the pointer held by UploadBytesElementReader. BUG=160028 TEST=git try TBR=ananta@chromium.org, tony@chromium.org Review URL: https://chromiumcodereview.appspot.com/11275223 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@167611 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/upload_data.cc')
-rw-r--r--net/base/upload_data.cc18
1 files changed, 7 insertions, 11 deletions
diff --git a/net/base/upload_data.cc b/net/base/upload_data.cc
index c8f2be3..91923a5 100644
--- a/net/base/upload_data.cc
+++ b/net/base/upload_data.cc
@@ -20,8 +20,8 @@ UploadData::UploadData()
void UploadData::AppendBytes(const char* bytes, int bytes_len) {
DCHECK(!is_chunked_);
if (bytes_len > 0) {
- elements_.push_back(UploadElement());
- elements_.back().SetToBytes(bytes, bytes_len);
+ elements_.push_back(new UploadElement());
+ elements_.back()->SetToBytes(bytes, bytes_len);
}
}
@@ -29,9 +29,9 @@ void UploadData::AppendFileRange(const FilePath& file_path,
uint64 offset, uint64 length,
const base::Time& expected_modification_time) {
DCHECK(!is_chunked_);
- elements_.push_back(UploadElement());
- elements_.back().SetToFilePathRange(file_path, offset, length,
- expected_modification_time);
+ elements_.push_back(new UploadElement());
+ elements_.back()->SetToFilePathRange(file_path, offset, length,
+ expected_modification_time);
}
void UploadData::AppendChunk(const char* bytes,
@@ -39,8 +39,8 @@ void UploadData::AppendChunk(const char* bytes,
bool is_last_chunk) {
DCHECK(is_chunked_);
DCHECK(!last_chunk_appended_);
- elements_.push_back(UploadElement());
- elements_.back().SetToBytes(bytes, bytes_len);
+ elements_.push_back(new UploadElement());
+ elements_.back()->SetToBytes(bytes, bytes_len);
last_chunk_appended_ = is_last_chunk;
if (!chunk_callback_.is_null())
chunk_callback_.Run();
@@ -50,10 +50,6 @@ void UploadData::set_chunk_callback(const base::Closure& callback) {
chunk_callback_ = callback;
}
-void UploadData::SetElements(const std::vector<UploadElement>& elements) {
- elements_ = elements;
-}
-
UploadData::~UploadData() {
}