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 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 |