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

Side by Side Diff: content/browser/blob_storage/blob_reader_unittest.cc

Issue 2000483004: [BlobReader] Correct IsInMemory = false when async constructing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests, and comment Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | net/base/upload_element_reader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | net/base/upload_element_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698