diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/base/upload_data.cc | 18 | ||||
-rw-r--r-- | net/base/upload_data.h | 15 | ||||
-rw-r--r-- | net/base/upload_data_stream.cc | 8 | ||||
-rw-r--r-- | net/base/upload_data_stream_unittest.cc | 24 | ||||
-rw-r--r-- | net/base/upload_element.h | 2 | ||||
-rw-r--r-- | net/http/http_network_transaction_spdy2_unittest.cc | 19 | ||||
-rw-r--r-- | net/http/http_network_transaction_spdy3_unittest.cc | 19 |
7 files changed, 31 insertions, 74 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() { } diff --git a/net/base/upload_data.h b/net/base/upload_data.h index d541ce4..2f0494c 100644 --- a/net/base/upload_data.h +++ b/net/base/upload_data.h @@ -5,11 +5,10 @@ #ifndef NET_BASE_UPLOAD_DATA_H_ #define NET_BASE_UPLOAD_DATA_H_ -#include <vector> - #include "base/basictypes.h" #include "base/callback.h" #include "base/memory/ref_counted.h" +#include "base/memory/scoped_vector.h" #include "base/supports_user_data.h" #include "net/base/net_export.h" #include "net/base/upload_element.h" @@ -61,17 +60,15 @@ class NET_EXPORT UploadData void set_last_chunk_appended(bool set) { last_chunk_appended_ = set; } bool last_chunk_appended() const { return last_chunk_appended_; } - const std::vector<UploadElement>* elements() const { - return &elements_; + const ScopedVector<UploadElement>& elements() const { + return elements_; } - std::vector<UploadElement>* elements_mutable() { + ScopedVector<UploadElement>* elements_mutable() { return &elements_; } - void SetElements(const std::vector<UploadElement>& elements); - - void swap_elements(std::vector<UploadElement>* elements) { + void swap_elements(ScopedVector<UploadElement>* elements) { elements_.swap(*elements); } @@ -86,7 +83,7 @@ class NET_EXPORT UploadData virtual ~UploadData(); - std::vector<UploadElement> elements_; + ScopedVector<UploadElement> elements_; int64 identifier_; base::Closure chunk_callback_; bool is_chunked_; diff --git a/net/base/upload_data_stream.cc b/net/base/upload_data_stream.cc index 3cc85f1..8398cd1 100644 --- a/net/base/upload_data_stream.cc +++ b/net/base/upload_data_stream.cc @@ -27,9 +27,9 @@ UploadDataStream::UploadDataStream(UploadData* upload_data) initialized_successfully_(false), weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), weak_ptr_factory_for_chunks_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { - const std::vector<UploadElement>& elements = *upload_data_->elements(); + const ScopedVector<UploadElement>& elements = upload_data_->elements(); for (size_t i = 0; i < elements.size(); ++i) - element_readers_.push_back(UploadElementReader::Create(elements[i])); + element_readers_.push_back(UploadElementReader::Create(*elements[i])); upload_data_->set_chunk_callback( base::Bind(&UploadDataStream::OnChunkAvailable, @@ -241,13 +241,13 @@ void UploadDataStream::OnChunkAvailable() { DCHECK(is_chunked()); // Initialize a reader for the newly appended chunk. - const std::vector<UploadElement>& elements = *upload_data_->elements(); + const ScopedVector<UploadElement>& elements = upload_data_->elements(); DCHECK_EQ(elements.size(), element_readers_.size() + 1); // We can initialize the reader synchronously here because only bytes can be // appended for chunked data. We leave |total_size_| at zero, since for // chunked uploads, we may not know the total size. - const UploadElement& element = elements.back(); + const UploadElement& element = *elements.back(); DCHECK_EQ(UploadElement::TYPE_BYTES, element.type()); UploadElementReader* reader = UploadElementReader::Create(element); const int rv = reader->InitSync(); diff --git a/net/base/upload_data_stream_unittest.cc b/net/base/upload_data_stream_unittest.cc index 3c77804..afd1fb5 100644 --- a/net/base/upload_data_stream_unittest.cc +++ b/net/base/upload_data_stream_unittest.cc @@ -177,11 +177,7 @@ TEST_F(UploadDataStreamTest, File) { ASSERT_EQ(static_cast<int>(kTestDataSize), file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file_path); - elements.push_back(element); - upload_data_->SetElements(elements); + upload_data_->AppendFileRange(temp_file_path, 0, kuint64max, base::Time()); UploadDataStream stream(upload_data_); ASSERT_EQ(OK, stream.InitSync()); @@ -209,11 +205,7 @@ TEST_F(UploadDataStreamTest, FileSmallerThanLength) { UploadFileElementReader::ScopedOverridingContentLengthForTests overriding_content_length(kFakeSize); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file_path); - elements.push_back(element); - upload_data_->SetElements(elements); + upload_data_->AppendFileRange(temp_file_path, 0, kuint64max, base::Time()); UploadDataStream stream(upload_data_); ASSERT_EQ(OK, stream.InitSync()); @@ -442,14 +434,10 @@ TEST_F(UploadDataStreamTest, ReadAsync) { void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, const base::Time& time, bool error_expected) { - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePathRange(file_path, 1, 2, time); - elements.push_back(element); // Don't use upload_data_ here, as this function is called twice, and // reusing upload_data_ is wrong. scoped_refptr<UploadData> upload_data(new UploadData); - upload_data->SetElements(elements); + upload_data->AppendFileRange(file_path, 1, 2, time); UploadDataStream stream(upload_data); int error_code = stream.InitSync(); @@ -486,11 +474,7 @@ TEST_F(UploadDataStreamTest, UploadDataReused) { file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); // Prepare |upload_data_| that contains a file. - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file_path); - elements.push_back(element); - upload_data_->SetElements(elements); + upload_data_->AppendFileRange(temp_file_path, 0, kuint64max, base::Time()); // Confirm that the file is read properly. { diff --git a/net/base/upload_element.h b/net/base/upload_element.h index 96e065e..1e7a7fd 100644 --- a/net/base/upload_element.h +++ b/net/base/upload_element.h @@ -77,6 +77,8 @@ class NET_EXPORT UploadElement { uint64 file_range_offset_; uint64 file_range_length_; base::Time expected_file_modification_time_; + + DISALLOW_COPY_AND_ASSIGN(UploadElement); }; #if defined(UNIT_TEST) diff --git a/net/http/http_network_transaction_spdy2_unittest.cc b/net/http/http_network_transaction_spdy2_unittest.cc index bc761f9..41ff63a 100644 --- a/net/http/http_network_transaction_spdy2_unittest.cc +++ b/net/http/http_network_transaction_spdy2_unittest.cc @@ -6583,11 +6583,8 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UploadFileSmallerThanLength) { UploadFileElementReader::ScopedOverridingContentLengthForTests overriding_content_length(kFakeSize); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file_path); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange( + temp_file_path, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.0 200 OK\r\n\r\n"), @@ -6639,11 +6636,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UploadUnreadableFile) { temp_file_content.length())); ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange(temp_file, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.0 200 OK\r\n\r\n"), @@ -6694,11 +6687,7 @@ TEST_F(HttpNetworkTransactionSpdy2Test, UnreadableUploadFileAfterAuthRestart) { ASSERT_TRUE(file_util::WriteFile(temp_file, temp_file_contents.c_str(), temp_file_contents.length())); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange(temp_file, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.1 401 Unauthorized\r\n"), diff --git a/net/http/http_network_transaction_spdy3_unittest.cc b/net/http/http_network_transaction_spdy3_unittest.cc index 53c58d0..1a612ee 100644 --- a/net/http/http_network_transaction_spdy3_unittest.cc +++ b/net/http/http_network_transaction_spdy3_unittest.cc @@ -6583,11 +6583,8 @@ TEST_F(HttpNetworkTransactionSpdy3Test, UploadFileSmallerThanLength) { UploadFileElementReader::ScopedOverridingContentLengthForTests overriding_content_length(kFakeSize); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file_path); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange( + temp_file_path, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.0 200 OK\r\n\r\n"), @@ -6639,11 +6636,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, UploadUnreadableFile) { temp_file_content.length())); ASSERT_TRUE(file_util::MakeFileUnreadable(temp_file)); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange(temp_file, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.0 200 OK\r\n\r\n"), @@ -6694,11 +6687,7 @@ TEST_F(HttpNetworkTransactionSpdy3Test, UnreadableUploadFileAfterAuthRestart) { ASSERT_TRUE(file_util::WriteFile(temp_file, temp_file_contents.c_str(), temp_file_contents.length())); - std::vector<UploadElement> elements; - UploadElement element; - element.SetToFilePath(temp_file); - elements.push_back(element); - request.upload_data->SetElements(elements); + request.upload_data->AppendFileRange(temp_file, 0, kuint64max, base::Time()); MockRead data_reads[] = { MockRead("HTTP/1.1 401 Unauthorized\r\n"), |