Chromium Code Reviews| Index: content/browser/loader/upload_data_stream_builder_unittest.cc |
| diff --git a/content/browser/loader/upload_data_stream_builder_unittest.cc b/content/browser/loader/upload_data_stream_builder_unittest.cc |
| index a946e651e1f9700d673107635f070c2c6bf959be..72035ab5c3c976185177ba0eb690028e86b0e2b4 100644 |
| --- a/content/browser/loader/upload_data_stream_builder_unittest.cc |
| +++ b/content/browser/loader/upload_data_stream_builder_unittest.cc |
| @@ -310,4 +310,65 @@ TEST(UploadDataStreamBuilderTest, ResolveBlobAndCreateUploadDataStream) { |
| base::RunLoop().RunUntilIdle(); |
| } |
| +TEST(UploadDataStreamBuilderTest, CreateUploadDataStreamWithEmptyBlob) { |
| + base::MessageLoop message_loop; |
| + { |
| + // Setup blob data for testing. |
| + base::Time time1, time2; |
| + base::Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", &time1); |
| + base::Time::FromString("Mon, 14 Nov 1994, 11:30:49 GMT", &time2); |
| + |
| + BlobStorageContext blob_storage_context; |
| + |
| + const std::string blob_id0("id-0"); |
| + scoped_ptr<BlobDataBuilder> blob_data_builder( |
| + new BlobDataBuilder(blob_id0)); |
| + scoped_ptr<BlobDataHandle> handle1 = |
| + blob_storage_context.AddFinishedBlob(blob_data_builder.get()); |
| + |
| + const std::string blob_id1("id-1"); |
| + const std::string kBlobData = ""; |
| + blob_data_builder.reset(new BlobDataBuilder(blob_id1)); |
| + blob_data_builder->AppendData(kBlobData); |
| + blob_data_builder->AppendFile( |
| + base::FilePath(FILE_PATH_LITERAL("BlobFile.txt")), 0, 20, time1); |
| + scoped_ptr<BlobDataHandle> handle2 = |
| + blob_storage_context.AddFinishedBlob(blob_data_builder.get()); |
| + |
| + ResourceRequestBody::Element blob_element1, blob_element2; |
| + blob_element1.SetToBytes(kBlobData.c_str(), kBlobData.size()); |
| + blob_element2.SetToFilePathRange( |
| + base::FilePath(FILE_PATH_LITERAL("BlobFile.txt")), 0, 20, time1); |
| + |
| + scoped_refptr<ResourceRequestBody> request_body(new ResourceRequestBody()); |
| + scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build( |
| + request_body.get(), &blob_storage_context, NULL, |
| + base::MessageLoopProxy::current().get())); |
| + |
| + request_body = new ResourceRequestBody(); |
| + request_body->AppendBlob(blob_id1); |
| + request_body->AppendBlob(blob_id1); |
| + request_body->AppendBlob(blob_id1); |
| + |
| + upload = UploadDataStreamBuilder::Build( |
| + request_body.get(), &blob_storage_context, NULL, |
| + base::MessageLoopProxy::current().get()); |
| + ASSERT_TRUE(upload->GetElementReaders()); |
| + ASSERT_EQ(6U, upload->GetElementReaders()->size()); |
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[0], blob_element1)); |
|
jsbell
2015/03/06 18:28:50
Make a local reference to this to avoid the repeat
|
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[1], blob_element2)); |
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[2], blob_element1)); |
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[3], blob_element2)); |
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[4], blob_element1)); |
| + EXPECT_TRUE( |
| + AreElementsEqual(*(*upload->GetElementReaders())[5], blob_element2)); |
| + } |
| + // Clean up for ASAN. |
| + base::RunLoop().RunUntilIdle(); |
| +} |
| } // namespace content |