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

Unified Diff: content/browser/fileapi/blob_reader_unittest.cc

Issue 1234813004: [BlobAsync] Asynchronous Blob Construction Final Patch (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@blob-protocol-change
Patch Set: comments Created 4 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/fileapi/blob_reader_unittest.cc
diff --git a/content/browser/fileapi/blob_reader_unittest.cc b/content/browser/fileapi/blob_reader_unittest.cc
index d16b552d392dc922e8ff8ff9bd246ca3a609530d..3d8036ea84a16023497eb90bc66bc3557d20db65 100644
--- a/content/browser/fileapi/blob_reader_unittest.cc
+++ b/content/browser/fileapi/blob_reader_unittest.cc
@@ -327,8 +327,7 @@ class BlobReaderTest : public ::testing::Test {
void InitializeReader(BlobDataBuilder* builder) {
blob_handle_ = builder ? context_.AddFinishedBlob(builder) : nullptr;
provider_ = new MockFileStreamReaderProvider();
- scoped_ptr<BlobReader::FileStreamReaderProvider> temp_ptr(provider_);
- reader_.reset(new BlobReader(blob_handle_.get(), std::move(temp_ptr),
+ reader_.reset(new BlobReader(blob_handle_.get(), make_scoped_ptr(provider_),
message_loop_.task_runner().get()));
}
@@ -395,8 +394,6 @@ class BlobReaderTest : public ::testing::Test {
DISALLOW_COPY_AND_ASSIGN(BlobReaderTest);
};
-namespace {
-
TEST_F(BlobReaderTest, BasicMemory) {
BlobDataBuilder b("uuid");
const std::string kData("Hello!!!");
@@ -1113,5 +1110,52 @@ TEST_F(BlobReaderTest, RangeError) {
EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error());
}
-} // namespace
+TEST_F(BlobReaderTest, HandleBeforeAsyncCancel) {
+ const std::string kUuid("uuid1");
+
+ context_.CreatePendingBlob(kUuid, "", "");
+ blob_handle_ = context_.GetBlobDataFromUUID(kUuid);
+ provider_ = new MockFileStreamReaderProvider();
+ reader_.reset(new BlobReader(blob_handle_.get(), make_scoped_ptr(provider_),
+ message_loop_.task_runner().get()));
+ int size_result = -1;
+ EXPECT_EQ(BlobReader::Status::IO_PENDING,
+ reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result)));
+ context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN);
+ message_loop_.RunUntilIdle();
+ EXPECT_EQ(net::ERR_FAILED, size_result);
+}
+
+TEST_F(BlobReaderTest, ReadFromIncompleteBlob) {
+ const std::string kUuid("uuid1");
+ const std::string kData("Hello!!!");
+ const size_t kDataSize = 8ul;
+
+ BlobDataBuilder b(kUuid);
+ b.AppendData(kData);
+ context_.CreatePendingBlob(kUuid, "", "");
+ blob_handle_ = context_.GetBlobDataFromUUID(kUuid);
+ provider_ = new MockFileStreamReaderProvider();
+ reader_.reset(new BlobReader(blob_handle_.get(), make_scoped_ptr(provider_),
+ message_loop_.task_runner().get()));
+ int size_result = -1;
+ EXPECT_EQ(BlobReader::Status::IO_PENDING,
+ reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result)));
+ context_.CompletePendingBlob(b);
+ message_loop_.RunUntilIdle();
+ CheckSizeCalculatedAsynchronously(kDataSize, size_result);
+ scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize));
+
+ int bytes_read = 0;
+ int async_bytes_read = 0;
+ EXPECT_EQ(BlobReader::Status::DONE,
+ reader_->Read(buffer.get(), kDataSize, &bytes_read,
+ base::Bind(&SetValue<int>, &async_bytes_read)));
+ EXPECT_EQ(net::OK, reader_->net_error());
+ EXPECT_EQ(kDataSize, static_cast<size_t>(bytes_read));
+ EXPECT_EQ(0, async_bytes_read);
+ EXPECT_EQ(0, memcmp(buffer->data(), "Hello!!!", kDataSize));
kinuko 2016/03/15 15:29:06 "Hello!!!" -> kData ?
dmurph 2016/03/15 22:40:14 Done.
+ EXPECT_EQ(net::OK, size_result);
+}
+
} // namespace storage

Powered by Google App Engine
This is Rietveld 408576698