| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 BlobDataBuilder b("uuid"); | 417 BlobDataBuilder b("uuid"); |
| 418 const std::string kData("Hello!!!"); | 418 const std::string kData("Hello!!!"); |
| 419 const size_t kDataSize = 8ul; | 419 const size_t kDataSize = 8ul; |
| 420 b.AppendData(kData); | 420 b.AppendData(kData); |
| 421 this->InitializeReader(&b); | 421 this->InitializeReader(&b); |
| 422 | 422 |
| 423 int size_result = -1; | 423 int size_result = -1; |
| 424 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 424 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 425 EXPECT_EQ(BlobReader::Status::DONE, | 425 EXPECT_EQ(BlobReader::Status::DONE, |
| 426 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 426 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 427 EXPECT_TRUE(reader_->IsInMemory()); |
| 427 CheckSizeCalculatedSynchronously(kDataSize, size_result); | 428 CheckSizeCalculatedSynchronously(kDataSize, size_result); |
| 428 | 429 |
| 429 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); | 430 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); |
| 430 | 431 |
| 431 int bytes_read = 0; | 432 int bytes_read = 0; |
| 432 int async_bytes_read = 0; | 433 int async_bytes_read = 0; |
| 433 EXPECT_EQ(BlobReader::Status::DONE, | 434 EXPECT_EQ(BlobReader::Status::DONE, |
| 434 reader_->Read(buffer.get(), kDataSize, &bytes_read, | 435 reader_->Read(buffer.get(), kDataSize, &bytes_read, |
| 435 base::Bind(&SetValue<int>, &async_bytes_read))); | 436 base::Bind(&SetValue<int>, &async_bytes_read))); |
| 436 EXPECT_EQ(net::OK, reader_->net_error()); | 437 EXPECT_EQ(net::OK, reader_->net_error()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 447 b.AppendFile(kPath, 0, kData.size(), kTime); | 448 b.AppendFile(kPath, 0, kData.size(), kTime); |
| 448 this->InitializeReader(&b); | 449 this->InitializeReader(&b); |
| 449 | 450 |
| 450 // Non-async reader. | 451 // Non-async reader. |
| 451 ExpectLocalFileCall(kPath, kTime, 0, new FakeFileStreamReader(kData)); | 452 ExpectLocalFileCall(kPath, kTime, 0, new FakeFileStreamReader(kData)); |
| 452 | 453 |
| 453 int size_result = -1; | 454 int size_result = -1; |
| 454 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 455 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 455 EXPECT_EQ(BlobReader::Status::DONE, | 456 EXPECT_EQ(BlobReader::Status::DONE, |
| 456 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 457 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 458 EXPECT_FALSE(reader_->IsInMemory()); |
| 457 CheckSizeCalculatedSynchronously(kData.size(), size_result); | 459 CheckSizeCalculatedSynchronously(kData.size(), size_result); |
| 458 | 460 |
| 459 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 461 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
| 460 | 462 |
| 461 int bytes_read = 0; | 463 int bytes_read = 0; |
| 462 int async_bytes_read = 0; | 464 int async_bytes_read = 0; |
| 463 EXPECT_EQ(BlobReader::Status::DONE, | 465 EXPECT_EQ(BlobReader::Status::DONE, |
| 464 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 466 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
| 465 base::Bind(&SetValue<int>, &async_bytes_read))); | 467 base::Bind(&SetValue<int>, &async_bytes_read))); |
| 466 EXPECT_EQ(net::OK, reader_->net_error()); | 468 EXPECT_EQ(net::OK, reader_->net_error()); |
| 467 EXPECT_EQ(kData.size(), static_cast<size_t>(bytes_read)); | 469 EXPECT_EQ(kData.size(), static_cast<size_t>(bytes_read)); |
| 468 EXPECT_EQ(0, async_bytes_read); | 470 EXPECT_EQ(0, async_bytes_read); |
| 469 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); | 471 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); |
| 470 } | 472 } |
| 471 | 473 |
| 472 TEST_F(BlobReaderTest, BasicFileSystem) { | 474 TEST_F(BlobReaderTest, BasicFileSystem) { |
| 473 BlobDataBuilder b("uuid"); | 475 BlobDataBuilder b("uuid"); |
| 474 const GURL kURL("file://test_file/here.txt"); | 476 const GURL kURL("file://test_file/here.txt"); |
| 475 const std::string kData = "FileData!!!"; | 477 const std::string kData = "FileData!!!"; |
| 476 const base::Time kTime = base::Time::Now(); | 478 const base::Time kTime = base::Time::Now(); |
| 477 b.AppendFileSystemFile(kURL, 0, kData.size(), kTime); | 479 b.AppendFileSystemFile(kURL, 0, kData.size(), kTime); |
| 478 this->InitializeReader(&b); | 480 this->InitializeReader(&b); |
| 479 | |
| 480 // Non-async reader. | 481 // Non-async reader. |
| 481 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, | 482 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, |
| 482 new FakeFileStreamReader(kData)); | 483 new FakeFileStreamReader(kData)); |
| 483 | 484 |
| 484 int size_result = -1; | 485 int size_result = -1; |
| 485 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 486 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 486 EXPECT_EQ(BlobReader::Status::DONE, | 487 EXPECT_EQ(BlobReader::Status::DONE, |
| 487 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 488 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 489 EXPECT_FALSE(reader_->IsInMemory()); |
| 490 |
| 488 CheckSizeCalculatedSynchronously(kData.size(), size_result); | 491 CheckSizeCalculatedSynchronously(kData.size(), size_result); |
| 489 | 492 |
| 490 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 493 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
| 491 | 494 |
| 492 int bytes_read = 0; | 495 int bytes_read = 0; |
| 493 int async_bytes_read = 0; | 496 int async_bytes_read = 0; |
| 494 EXPECT_EQ(BlobReader::Status::DONE, | 497 EXPECT_EQ(BlobReader::Status::DONE, |
| 495 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 498 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
| 496 base::Bind(&SetValue<int>, &async_bytes_read))); | 499 base::Bind(&SetValue<int>, &async_bytes_read))); |
| 497 EXPECT_EQ(net::OK, reader_->net_error()); | 500 EXPECT_EQ(net::OK, reader_->net_error()); |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 | 715 |
| 713 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); | 716 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); |
| 714 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 717 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
| 715 | 718 |
| 716 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); | 719 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); |
| 717 | 720 |
| 718 int size_result = -1; | 721 int size_result = -1; |
| 719 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 722 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 720 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 723 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 721 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 724 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 725 EXPECT_FALSE(reader_->IsInMemory()); |
| 722 CheckSizeNotCalculatedYet(size_result); | 726 CheckSizeNotCalculatedYet(size_result); |
| 723 message_loop_.RunUntilIdle(); | 727 message_loop_.RunUntilIdle(); |
| 724 CheckSizeCalculatedAsynchronously(kData.size(), size_result); | 728 CheckSizeCalculatedAsynchronously(kData.size(), size_result); |
| 725 | 729 |
| 726 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 730 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
| 727 | 731 |
| 728 int bytes_read = 0; | 732 int bytes_read = 0; |
| 729 int async_bytes_read = 0; | 733 int async_bytes_read = 0; |
| 730 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 734 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 731 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 735 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
| (...skipping 16 matching lines...) Expand all Loading... |
| 748 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); | 752 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); |
| 749 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 753 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
| 750 | 754 |
| 751 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, reader.release()); | 755 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, reader.release()); |
| 752 | 756 |
| 753 int size_result = -1; | 757 int size_result = -1; |
| 754 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 758 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 755 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 759 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 756 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 760 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 757 CheckSizeNotCalculatedYet(size_result); | 761 CheckSizeNotCalculatedYet(size_result); |
| 762 EXPECT_FALSE(reader_->IsInMemory()); |
| 758 message_loop_.RunUntilIdle(); | 763 message_loop_.RunUntilIdle(); |
| 759 CheckSizeCalculatedAsynchronously(kData.size(), size_result); | 764 CheckSizeCalculatedAsynchronously(kData.size(), size_result); |
| 760 | 765 |
| 761 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 766 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
| 762 | 767 |
| 763 int bytes_read = 0; | 768 int bytes_read = 0; |
| 764 int async_bytes_read = 0; | 769 int async_bytes_read = 0; |
| 765 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 770 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 766 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 771 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
| 767 base::Bind(&SetValue<int>, &async_bytes_read))); | 772 base::Bind(&SetValue<int>, &async_bytes_read))); |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1171 const std::string kUuid("uuid1"); | 1176 const std::string kUuid("uuid1"); |
| 1172 | 1177 |
| 1173 context_.CreatePendingBlob(kUuid, "", ""); | 1178 context_.CreatePendingBlob(kUuid, "", ""); |
| 1174 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); | 1179 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); |
| 1175 provider_ = new MockFileStreamReaderProvider(); | 1180 provider_ = new MockFileStreamReaderProvider(); |
| 1176 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), | 1181 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), |
| 1177 message_loop_.task_runner().get())); | 1182 message_loop_.task_runner().get())); |
| 1178 int size_result = -1; | 1183 int size_result = -1; |
| 1179 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1184 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 1180 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1185 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 1186 EXPECT_FALSE(reader_->IsInMemory()); |
| 1181 context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); | 1187 context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); |
| 1182 message_loop_.RunUntilIdle(); | 1188 message_loop_.RunUntilIdle(); |
| 1183 EXPECT_EQ(net::ERR_FAILED, size_result); | 1189 EXPECT_EQ(net::ERR_FAILED, size_result); |
| 1184 } | 1190 } |
| 1185 | 1191 |
| 1186 TEST_F(BlobReaderTest, ReadFromIncompleteBlob) { | 1192 TEST_F(BlobReaderTest, ReadFromIncompleteBlob) { |
| 1187 const std::string kUuid("uuid1"); | 1193 const std::string kUuid("uuid1"); |
| 1188 const std::string kData("Hello!!!"); | 1194 const std::string kData("Hello!!!"); |
| 1189 const size_t kDataSize = 8ul; | 1195 const size_t kDataSize = 8ul; |
| 1190 | 1196 |
| 1191 BlobDataBuilder b(kUuid); | 1197 BlobDataBuilder b(kUuid); |
| 1192 b.AppendData(kData); | 1198 b.AppendData(kData); |
| 1193 context_.CreatePendingBlob(kUuid, "", ""); | 1199 context_.CreatePendingBlob(kUuid, "", ""); |
| 1194 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); | 1200 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); |
| 1195 provider_ = new MockFileStreamReaderProvider(); | 1201 provider_ = new MockFileStreamReaderProvider(); |
| 1196 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), | 1202 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), |
| 1197 message_loop_.task_runner().get())); | 1203 message_loop_.task_runner().get())); |
| 1198 int size_result = -1; | 1204 int size_result = -1; |
| 1199 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1205 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 1200 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1206 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 1207 EXPECT_FALSE(reader_->IsInMemory()); |
| 1201 context_.CompletePendingBlob(b); | 1208 context_.CompletePendingBlob(b); |
| 1202 message_loop_.RunUntilIdle(); | 1209 message_loop_.RunUntilIdle(); |
| 1203 CheckSizeCalculatedAsynchronously(kDataSize, size_result); | 1210 CheckSizeCalculatedAsynchronously(kDataSize, size_result); |
| 1204 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); | 1211 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); |
| 1205 | 1212 |
| 1206 int bytes_read = 0; | 1213 int bytes_read = 0; |
| 1207 int async_bytes_read = 0; | 1214 int async_bytes_read = 0; |
| 1208 EXPECT_EQ(BlobReader::Status::DONE, | 1215 EXPECT_EQ(BlobReader::Status::DONE, |
| 1209 reader_->Read(buffer.get(), kDataSize, &bytes_read, | 1216 reader_->Read(buffer.get(), kDataSize, &bytes_read, |
| 1210 base::Bind(&SetValue<int>, &async_bytes_read))); | 1217 base::Bind(&SetValue<int>, &async_bytes_read))); |
| 1211 EXPECT_EQ(net::OK, reader_->net_error()); | 1218 EXPECT_EQ(net::OK, reader_->net_error()); |
| 1212 EXPECT_EQ(kDataSize, static_cast<size_t>(bytes_read)); | 1219 EXPECT_EQ(kDataSize, static_cast<size_t>(bytes_read)); |
| 1213 EXPECT_EQ(0, async_bytes_read); | 1220 EXPECT_EQ(0, async_bytes_read); |
| 1214 EXPECT_EQ(kData, std::string(buffer->data(), kDataSize)); | 1221 EXPECT_EQ(kData, std::string(buffer->data(), kDataSize)); |
| 1215 EXPECT_EQ(net::OK, size_result); | 1222 EXPECT_EQ(net::OK, size_result); |
| 1216 } | 1223 } |
| 1217 | 1224 |
| 1218 } // namespace storage | 1225 } // namespace storage |
| OLD | NEW |