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

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

Issue 1513783005: [Blob] Fix for resetting reader. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add test, removed cleanup 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 c8f6b77c9af1a7c7ac3ec8d90b39944a980e7b25..869938fe87dfbeded30878913175728e536195f5 100644
--- a/content/browser/loader/upload_data_stream_builder_unittest.cc
+++ b/content/browser/loader/upload_data_stream_builder_unittest.cc
@@ -149,4 +149,57 @@ TEST(UploadDataStreamBuilderTest,
// Clean up for ASAN.
base::RunLoop().RunUntilIdle();
}
+
+TEST(UploadDataStreamBuilderTest,
+ ResetUploadStreamWithBlob) {
michaeln 2015/12/11 23:21:33 does this not fit on one line?
dmurph 2015/12/11 23:34:01 Done.
+ base::MessageLoopForIO message_loop;
+ {
+ scoped_refptr<ResourceRequestBody> request_body = new ResourceRequestBody;
+
+ const std::string kBlob = "blobuuid";
+ const std::string kBlobData = "blobdata";
+ const int64 kIdentifier = 12345;
+
+ BlobStorageContext context;
mmenke 2015/12/11 23:15:45 May want to call this blob_storage_context. Match
dmurph 2015/12/11 23:34:01 Done.
+ BlobDataBuilder builder(kBlob);
+ builder.AppendData(kBlobData);
+ scoped_ptr<BlobDataHandle> handle = context.AddFinishedBlob(&builder);
+ request_body->AppendBlob(kBlob);
+ request_body->set_identifier(kIdentifier);
+
+ scoped_ptr<net::UploadDataStream> upload(UploadDataStreamBuilder::Build(
+ request_body.get(), &context, NULL,
mmenke 2015/12/11 23:15:45 nullptr
dmurph 2015/12/11 23:34:01 Done.
+ base::ThreadTaskRunnerHandle::Get().get()));
+
+ const storage::UploadBlobElementReader* r3 =
+ static_cast<storage::UploadBlobElementReader*>(
+ (*upload->GetElementReaders())[0].get());
+ ASSERT_TRUE(r3);
mmenke 2015/12/11 23:15:45 This doesn't seem to get us anything.
michaeln 2015/12/11 23:21:33 right, the local var is not used
dmurph 2015/12/11 23:34:02 REmoved.
+
+ net::TestCompletionCallback init_callback;
+ ASSERT_EQ(net::OK, upload->Init(init_callback.callback()));
+
+ // Read part of the data.
+ int kBufferLength = 4;
mmenke 2015/12/11 23:15:45 const
dmurph 2015/12/11 23:34:01 Done.
+ scoped_ptr<char[]> buffer(new char[kBufferLength]);
mmenke 2015/12/11 23:15:45 scoped_array, or could just use IOBufferWithSize (
michaeln 2015/12/11 23:21:33 or you could put buffer on the stack, IOBufferWith
dmurph 2015/12/11 23:34:02 IMPOSSIBLE (refcounted ;) Made it simpler though.
+ scoped_refptr<net::IOBuffer> io_buffer =
+ new net::WrappedIOBuffer(buffer.get());
+ net::TestCompletionCallback read_callback;
+ int result =
+ upload->Read(io_buffer.get(), kBufferLength, read_callback.callback());
+ EXPECT_EQ(static_cast<int>(kBufferLength), read_callback.GetResult(result));
mmenke 2015/12/11 23:15:45 kBufferLength is already an int.
dmurph 2015/12/11 23:34:02 Done.
+ EXPECT_EQ(0, std::memcmp(kBlobData.c_str(), buffer.get(), kBufferLength));
+
+ // Reset.
+ ASSERT_EQ(net::OK, upload->Init(init_callback.callback()));
+
+ // Read same part of data.
+ result =
+ upload->Read(io_buffer.get(), kBufferLength, read_callback.callback());
+ EXPECT_EQ(static_cast<int>(kBufferLength), read_callback.GetResult(result));
mmenke 2015/12/11 23:15:45 kBufferLength is already an int.
dmurph 2015/12/11 23:34:02 Done.
+ EXPECT_EQ(0, std::memcmp(kBlobData.c_str(), buffer.get(), kBufferLength));
mmenke 2015/12/11 23:15:45 Should we read the entire body here, just in case?
dmurph 2015/12/11 23:34:02 Sure.
+ }
+ // 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