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

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

Issue 1539693003: [Blob] Fix for resetting reader. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2564
Patch Set: Created 5 years 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 e323a4e9e3118b644f8db438c1f33ea956e14279..ae79dd93cf1719d65ae7fc918b6994bd7b7d8597 100644
--- a/content/browser/loader/upload_data_stream_builder_unittest.cc
+++ b/content/browser/loader/upload_data_stream_builder_unittest.cc
@@ -149,4 +149,55 @@ TEST(UploadDataStreamBuilderTest,
// Clean up for ASAN.
base::RunLoop().RunUntilIdle();
}
+
+TEST(UploadDataStreamBuilderTest, ResetUploadStreamWithBlob) {
+ base::MessageLoopForIO message_loop;
+ {
+ scoped_refptr<ResourceRequestBody> request_body = new ResourceRequestBody;
+
+ const std::string kBlob = "blobuuid";
+ const std::string kBlobData = "blobdata";
+ const int kBlobDataLength = 8;
+ const int64 kIdentifier = 12345;
+
+ BlobStorageContext blob_storage_context;
+ BlobDataBuilder builder(kBlob);
+ builder.AppendData(kBlobData);
+ scoped_ptr<BlobDataHandle> handle =
+ blob_storage_context.AddFinishedBlob(&builder);
+ request_body->AppendBlob(kBlob);
+ request_body->set_identifier(kIdentifier);
+
+ scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build(
+ request_body.get(), &blob_storage_context, nullptr,
+ base::ThreadTaskRunnerHandle::Get().get()));
+
+ net::TestCompletionCallback init_callback;
+ ASSERT_EQ(net::OK, upload->Init(init_callback.callback()));
+
+ // Read part of the data.
+ const int kBufferLength = 4;
+ scoped_refptr<net::IOBufferWithSize> buffer(
+ new net::IOBufferWithSize(kBufferLength));
+ net::TestCompletionCallback read_callback;
+ int result =
+ upload->Read(buffer.get(), buffer->size(), read_callback.callback());
+ EXPECT_EQ(kBufferLength, read_callback.GetResult(result));
+ EXPECT_EQ(0,
+ std::memcmp(kBlobData.c_str(), buffer->data(), buffer->size()));
+
+ // Reset.
+ ASSERT_EQ(net::OK, upload->Init(init_callback.callback()));
+
+ // Read all the data.
+ buffer = new net::IOBufferWithSize(kBlobDataLength);
+ result =
+ upload->Read(buffer.get(), buffer->size(), read_callback.callback());
+ EXPECT_EQ(kBlobDataLength, read_callback.GetResult(result));
+ EXPECT_EQ(0,
+ std::memcmp(kBlobData.c_str(), buffer->data(), buffer->size()));
+ }
+ // Clean up for ASAN.
+ base::RunLoop().RunUntilIdle();
+}
} // namespace content
« no previous file with comments | « content/browser/loader/upload_data_stream_builder.cc ('k') | storage/browser/blob/upload_blob_element_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698