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

Unified Diff: content/browser/loader/upload_data_stream_builder_unittest.cc

Issue 942633004: IndexedDB: Fixed support for empty blobs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created local var to improve readability 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
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..1be8eccbf36fc311879f46dcd67cef42ff7a92a2 100644
--- a/content/browser/loader/upload_data_stream_builder_unittest.cc
+++ b/content/browser/loader/upload_data_stream_builder_unittest.cc
@@ -310,4 +310,60 @@ 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);
michaeln 2015/03/06 22:31:38 This isn't an empty blob?
cmumford 2015/03/09 20:05:48 Acknowledged.
+ 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);
mmenke 2015/03/06 20:54:40 The CL description indicates it supports empty fil
cmumford 2015/03/09 20:05:48 Acknowledged.
+
+ 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());
+ const auto& readers = *upload->GetElementReaders();
+ ASSERT_EQ(6U, readers.size());
+ EXPECT_TRUE(AreElementsEqual(*readers[0], blob_element1));
michaeln 2015/03/06 22:31:38 Not sure about this test? It's making sure that bl
cmumford 2015/03/09 20:05:48 Yes, I see your point. I've modified the test to u
+ EXPECT_TRUE(AreElementsEqual(*readers[1], blob_element2));
+ EXPECT_TRUE(AreElementsEqual(*readers[2], blob_element1));
+ EXPECT_TRUE(AreElementsEqual(*readers[3], blob_element2));
+ EXPECT_TRUE(AreElementsEqual(*readers[4], blob_element1));
+ EXPECT_TRUE(AreElementsEqual(*readers[5], blob_element2));
+ }
+ // Clean up for ASAN.
+ base::RunLoop().RunUntilIdle();
+}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698