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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 } // namespace | 330 } // namespace |
331 | 331 |
332 class BlobReaderTest : public ::testing::Test { | 332 class BlobReaderTest : public ::testing::Test { |
333 public: | 333 public: |
334 BlobReaderTest() {} | 334 BlobReaderTest() {} |
335 ~BlobReaderTest() override {} | 335 ~BlobReaderTest() override {} |
336 | 336 |
337 void TearDown() override { | 337 void TearDown() override { |
338 reader_.reset(); | 338 reader_.reset(); |
339 blob_handle_.reset(); | 339 blob_handle_.reset(); |
340 message_loop_.RunUntilIdle(); | 340 base::RunLoop().RunUntilIdle(); |
341 base::RunLoop().RunUntilIdle(); | 341 base::RunLoop().RunUntilIdle(); |
342 } | 342 } |
343 | 343 |
344 protected: | 344 protected: |
345 void InitializeReader(BlobDataBuilder* builder) { | 345 void InitializeReader(BlobDataBuilder* builder) { |
346 blob_handle_ = builder ? context_.AddFinishedBlob(builder) : nullptr; | 346 blob_handle_ = builder ? context_.AddFinishedBlob(builder) : nullptr; |
347 provider_ = new MockFileStreamReaderProvider(); | 347 provider_ = new MockFileStreamReaderProvider(); |
348 reader_.reset(new BlobReader(blob_handle_.get(), | 348 reader_.reset(new BlobReader(blob_handle_.get(), |
349 base::WrapUnique(provider_), | 349 base::WrapUnique(provider_), |
350 message_loop_.task_runner().get())); | 350 message_loop_.task_runner().get())); |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
717 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 717 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
718 | 718 |
719 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); | 719 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); |
720 | 720 |
721 int size_result = -1; | 721 int size_result = -1; |
722 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 722 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
723 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 723 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
724 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 724 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
725 EXPECT_FALSE(reader_->IsInMemory()); | 725 EXPECT_FALSE(reader_->IsInMemory()); |
726 CheckSizeNotCalculatedYet(size_result); | 726 CheckSizeNotCalculatedYet(size_result); |
727 message_loop_.RunUntilIdle(); | 727 base::RunLoop().RunUntilIdle(); |
728 CheckSizeCalculatedAsynchronously(kData.size(), size_result); | 728 CheckSizeCalculatedAsynchronously(kData.size(), size_result); |
729 | 729 |
730 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 730 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
731 | 731 |
732 int bytes_read = 0; | 732 int bytes_read = 0; |
733 int async_bytes_read = 0; | 733 int async_bytes_read = 0; |
734 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 734 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
735 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 735 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
736 base::Bind(&SetValue<int>, &async_bytes_read))); | 736 base::Bind(&SetValue<int>, &async_bytes_read))); |
737 message_loop_.RunUntilIdle(); | 737 base::RunLoop().RunUntilIdle(); |
738 EXPECT_EQ(net::OK, reader_->net_error()); | 738 EXPECT_EQ(net::OK, reader_->net_error()); |
739 EXPECT_EQ(kData.size(), static_cast<size_t>(async_bytes_read)); | 739 EXPECT_EQ(kData.size(), static_cast<size_t>(async_bytes_read)); |
740 EXPECT_EQ(0, bytes_read); | 740 EXPECT_EQ(0, bytes_read); |
741 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); | 741 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); |
742 } | 742 } |
743 | 743 |
744 TEST_F(BlobReaderTest, FileSystemAsync) { | 744 TEST_F(BlobReaderTest, FileSystemAsync) { |
745 BlobDataBuilder b("uuid"); | 745 BlobDataBuilder b("uuid"); |
746 const GURL kURL("file://test_file/here.txt"); | 746 const GURL kURL("file://test_file/here.txt"); |
747 const std::string kData = "FileData!!!"; | 747 const std::string kData = "FileData!!!"; |
748 const base::Time kTime = base::Time::Now(); | 748 const base::Time kTime = base::Time::Now(); |
749 b.AppendFileSystemFile(kURL, 0, kData.size(), kTime); | 749 b.AppendFileSystemFile(kURL, 0, kData.size(), kTime); |
750 this->InitializeReader(&b); | 750 this->InitializeReader(&b); |
751 | 751 |
752 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); | 752 std::unique_ptr<FakeFileStreamReader> reader(new FakeFileStreamReader(kData)); |
753 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 753 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
754 | 754 |
755 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, reader.release()); | 755 ExpectFileSystemCall(kURL, 0, kData.size(), kTime, reader.release()); |
756 | 756 |
757 int size_result = -1; | 757 int size_result = -1; |
758 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 758 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
759 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 759 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
760 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 760 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
761 CheckSizeNotCalculatedYet(size_result); | 761 CheckSizeNotCalculatedYet(size_result); |
762 EXPECT_FALSE(reader_->IsInMemory()); | 762 EXPECT_FALSE(reader_->IsInMemory()); |
763 message_loop_.RunUntilIdle(); | 763 base::RunLoop().RunUntilIdle(); |
764 CheckSizeCalculatedAsynchronously(kData.size(), size_result); | 764 CheckSizeCalculatedAsynchronously(kData.size(), size_result); |
765 | 765 |
766 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 766 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
767 | 767 |
768 int bytes_read = 0; | 768 int bytes_read = 0; |
769 int async_bytes_read = 0; | 769 int async_bytes_read = 0; |
770 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 770 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
771 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 771 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
772 base::Bind(&SetValue<int>, &async_bytes_read))); | 772 base::Bind(&SetValue<int>, &async_bytes_read))); |
773 message_loop_.RunUntilIdle(); | 773 base::RunLoop().RunUntilIdle(); |
774 EXPECT_EQ(net::OK, reader_->net_error()); | 774 EXPECT_EQ(net::OK, reader_->net_error()); |
775 EXPECT_EQ(kData.size(), static_cast<size_t>(async_bytes_read)); | 775 EXPECT_EQ(kData.size(), static_cast<size_t>(async_bytes_read)); |
776 EXPECT_EQ(0, bytes_read); | 776 EXPECT_EQ(0, bytes_read); |
777 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); | 777 EXPECT_EQ(0, memcmp(buffer->data(), "FileData!!!", kData.size())); |
778 } | 778 } |
779 | 779 |
780 TEST_F(BlobReaderTest, DiskCacheAsync) { | 780 TEST_F(BlobReaderTest, DiskCacheAsync) { |
781 std::unique_ptr<disk_cache::Backend> cache = | 781 std::unique_ptr<disk_cache::Backend> cache = |
782 CreateInMemoryDiskCache(message_loop_.task_runner()); | 782 CreateInMemoryDiskCache(message_loop_.task_runner()); |
783 ASSERT_TRUE(cache); | 783 ASSERT_TRUE(cache); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); | 830 ExpectLocalFileCall(kPath, kTime, 0, reader.release()); |
831 | 831 |
832 // We create the reader again with the offset after the seek. | 832 // We create the reader again with the offset after the seek. |
833 reader.reset(new FakeFileStreamReader(kRangeData)); | 833 reader.reset(new FakeFileStreamReader(kRangeData)); |
834 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 834 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
835 ExpectLocalFileCall(kPath, kTime, kOffset, reader.release()); | 835 ExpectLocalFileCall(kPath, kTime, kOffset, reader.release()); |
836 | 836 |
837 int size_result = -1; | 837 int size_result = -1; |
838 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 838 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
839 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 839 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
840 message_loop_.RunUntilIdle(); | 840 base::RunLoop().RunUntilIdle(); |
841 | 841 |
842 scoped_refptr<net::IOBuffer> buffer = CreateBuffer(kReadLength); | 842 scoped_refptr<net::IOBuffer> buffer = CreateBuffer(kReadLength); |
843 EXPECT_EQ(BlobReader::Status::DONE, | 843 EXPECT_EQ(BlobReader::Status::DONE, |
844 reader_->SetReadRange(kOffset, kReadLength)); | 844 reader_->SetReadRange(kOffset, kReadLength)); |
845 | 845 |
846 int bytes_read = 0; | 846 int bytes_read = 0; |
847 int async_bytes_read = 0; | 847 int async_bytes_read = 0; |
848 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 848 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
849 reader_->Read(buffer.get(), kReadLength, &bytes_read, | 849 reader_->Read(buffer.get(), kReadLength, &bytes_read, |
850 base::Bind(&SetValue<int>, &async_bytes_read))); | 850 base::Bind(&SetValue<int>, &async_bytes_read))); |
851 message_loop_.RunUntilIdle(); | 851 base::RunLoop().RunUntilIdle(); |
852 EXPECT_EQ(net::OK, reader_->net_error()); | 852 EXPECT_EQ(net::OK, reader_->net_error()); |
853 EXPECT_EQ(kReadLength, static_cast<size_t>(async_bytes_read)); | 853 EXPECT_EQ(kReadLength, static_cast<size_t>(async_bytes_read)); |
854 EXPECT_EQ(0, bytes_read); | 854 EXPECT_EQ(0, bytes_read); |
855 EXPECT_EQ(0, memcmp(buffer->data(), "leD", kReadLength)); | 855 EXPECT_EQ(0, memcmp(buffer->data(), "leD", kReadLength)); |
856 } | 856 } |
857 | 857 |
858 TEST_F(BlobReaderTest, DiskCacheRange) { | 858 TEST_F(BlobReaderTest, DiskCacheRange) { |
859 std::unique_ptr<disk_cache::Backend> cache = | 859 std::unique_ptr<disk_cache::Backend> cache = |
860 CreateInMemoryDiskCache(message_loop_.task_runner()); | 860 CreateInMemoryDiskCache(message_loop_.task_runner()); |
861 ASSERT_TRUE(cache); | 861 ASSERT_TRUE(cache); |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 FilePath path = kPathBase.Append( | 934 FilePath path = kPathBase.Append( |
935 FilePath::FromUTF8Unsafe(base::StringPrintf("%d", current_value))); | 935 FilePath::FromUTF8Unsafe(base::StringPrintf("%d", current_value))); |
936 ExpectLocalFileCall(path, kTime, offset, reader.release()); | 936 ExpectLocalFileCall(path, kTime, offset, reader.release()); |
937 } | 937 } |
938 | 938 |
939 int size_result = -1; | 939 int size_result = -1; |
940 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 940 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
941 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 941 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
942 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 942 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
943 CheckSizeNotCalculatedYet(size_result); | 943 CheckSizeNotCalculatedYet(size_result); |
944 message_loop_.RunUntilIdle(); | 944 base::RunLoop().RunUntilIdle(); |
945 CheckSizeCalculatedAsynchronously(kTotalSize, size_result); | 945 CheckSizeCalculatedAsynchronously(kTotalSize, size_result); |
946 | 946 |
947 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); | 947 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kBufferSize)); |
948 | 948 |
949 current_value = 0; | 949 current_value = 0; |
950 for (size_t i = 0; i < kTotalSize / kBufferSize; i++) { | 950 for (size_t i = 0; i < kTotalSize / kBufferSize; i++) { |
951 int bytes_read = 0; | 951 int bytes_read = 0; |
952 int async_bytes_read = 0; | 952 int async_bytes_read = 0; |
953 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 953 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
954 reader_->Read(buffer.get(), kBufferSize, &bytes_read, | 954 reader_->Read(buffer.get(), kBufferSize, &bytes_read, |
955 base::Bind(&SetValue<int>, &async_bytes_read))); | 955 base::Bind(&SetValue<int>, &async_bytes_read))); |
956 message_loop_.RunUntilIdle(); | 956 base::RunLoop().RunUntilIdle(); |
957 EXPECT_EQ(net::OK, reader_->net_error()); | 957 EXPECT_EQ(net::OK, reader_->net_error()); |
958 EXPECT_EQ(0, bytes_read); | 958 EXPECT_EQ(0, bytes_read); |
959 EXPECT_EQ(kBufferSize, static_cast<size_t>(async_bytes_read)); | 959 EXPECT_EQ(kBufferSize, static_cast<size_t>(async_bytes_read)); |
960 for (size_t j = 0; j < kBufferSize; j++) { | 960 for (size_t j = 0; j < kBufferSize; j++) { |
961 EXPECT_EQ(current_value, buffer->data()[j]); | 961 EXPECT_EQ(current_value, buffer->data()[j]); |
962 current_value++; | 962 current_value++; |
963 } | 963 } |
964 } | 964 } |
965 } | 965 } |
966 | 966 |
(...skipping 28 matching lines...) Expand all Loading... |
995 std::unique_ptr<FakeFileStreamReader> reader( | 995 std::unique_ptr<FakeFileStreamReader> reader( |
996 new FakeFileStreamReader(kData1)); | 996 new FakeFileStreamReader(kData1)); |
997 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 997 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
998 ExpectLocalFileCall(kData1Path, kTime, 0, reader.release()); | 998 ExpectLocalFileCall(kData1Path, kTime, 0, reader.release()); |
999 | 999 |
1000 int size_result = -1; | 1000 int size_result = -1; |
1001 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 1001 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
1002 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1002 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1003 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1003 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
1004 CheckSizeNotCalculatedYet(size_result); | 1004 CheckSizeNotCalculatedYet(size_result); |
1005 message_loop_.RunUntilIdle(); | 1005 base::RunLoop().RunUntilIdle(); |
1006 CheckSizeCalculatedAsynchronously(kDataSize, size_result); | 1006 CheckSizeCalculatedAsynchronously(kDataSize, size_result); |
1007 | 1007 |
1008 scoped_refptr<net::IOBuffer> buffer = CreateBuffer(kDataSize); | 1008 scoped_refptr<net::IOBuffer> buffer = CreateBuffer(kDataSize); |
1009 | 1009 |
1010 int bytes_read = 0; | 1010 int bytes_read = 0; |
1011 int async_bytes_read = 0; | 1011 int async_bytes_read = 0; |
1012 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1012 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1013 reader_->Read(buffer.get(), kDataSize, &bytes_read, | 1013 reader_->Read(buffer.get(), kDataSize, &bytes_read, |
1014 base::Bind(&SetValue<int>, &async_bytes_read))); | 1014 base::Bind(&SetValue<int>, &async_bytes_read))); |
1015 EXPECT_EQ(0, async_bytes_read); | 1015 EXPECT_EQ(0, async_bytes_read); |
1016 message_loop_.RunUntilIdle(); | 1016 base::RunLoop().RunUntilIdle(); |
1017 EXPECT_EQ(net::OK, reader_->net_error()); | 1017 EXPECT_EQ(net::OK, reader_->net_error()); |
1018 EXPECT_EQ(0, bytes_read); | 1018 EXPECT_EQ(0, bytes_read); |
1019 EXPECT_EQ(kDataSize, static_cast<size_t>(async_bytes_read)); | 1019 EXPECT_EQ(kDataSize, static_cast<size_t>(async_bytes_read)); |
1020 EXPECT_EQ(0, memcmp(buffer->data(), "Hello there. This is multi-content.", | 1020 EXPECT_EQ(0, memcmp(buffer->data(), "Hello there. This is multi-content.", |
1021 kDataSize)); | 1021 kDataSize)); |
1022 } | 1022 } |
1023 | 1023 |
1024 TEST_F(BlobReaderTest, StateErrors) { | 1024 TEST_F(BlobReaderTest, StateErrors) { |
1025 // Test common variables | 1025 // Test common variables |
1026 int bytes_read = -1; | 1026 int bytes_read = -1; |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1108 builder1.AppendFile(kPath, 0, kData.size(), kTime); | 1108 builder1.AppendFile(kPath, 0, kData.size(), kTime); |
1109 this->InitializeReader(&builder1); | 1109 this->InitializeReader(&builder1); |
1110 FakeFileStreamReader* reader = new FakeFileStreamReader(kData); | 1110 FakeFileStreamReader* reader = new FakeFileStreamReader(kData); |
1111 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 1111 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
1112 reader->SetReturnError(net::ERR_FILE_NOT_FOUND); | 1112 reader->SetReturnError(net::ERR_FILE_NOT_FOUND); |
1113 ExpectLocalFileCall(kPath, kTime, 0, reader); | 1113 ExpectLocalFileCall(kPath, kTime, 0, reader); |
1114 | 1114 |
1115 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1115 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1116 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1116 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
1117 EXPECT_EQ(net::OK, reader_->net_error()); | 1117 EXPECT_EQ(net::OK, reader_->net_error()); |
1118 message_loop_.RunUntilIdle(); | 1118 base::RunLoop().RunUntilIdle(); |
1119 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, size_result); | 1119 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, size_result); |
1120 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); | 1120 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); |
1121 | 1121 |
1122 // Case: Error on read. | 1122 // Case: Error on read. |
1123 BlobDataBuilder builder2("uuid2"); | 1123 BlobDataBuilder builder2("uuid2"); |
1124 builder2.AppendFile(kPath, 0, kData.size(), kTime); | 1124 builder2.AppendFile(kPath, 0, kData.size(), kTime); |
1125 this->InitializeReader(&builder2); | 1125 this->InitializeReader(&builder2); |
1126 reader = new FakeFileStreamReader(kData); | 1126 reader = new FakeFileStreamReader(kData); |
1127 ExpectLocalFileCall(kPath, kTime, 0, reader); | 1127 ExpectLocalFileCall(kPath, kTime, 0, reader); |
1128 EXPECT_EQ(BlobReader::Status::DONE, | 1128 EXPECT_EQ(BlobReader::Status::DONE, |
1129 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1129 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
1130 reader->SetReturnError(net::ERR_FILE_NOT_FOUND); | 1130 reader->SetReturnError(net::ERR_FILE_NOT_FOUND); |
1131 reader->SetAsyncRunner(message_loop_.task_runner().get()); | 1131 reader->SetAsyncRunner(message_loop_.task_runner().get()); |
1132 | 1132 |
1133 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); | 1133 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kData.size())); |
1134 int bytes_read = 0; | 1134 int bytes_read = 0; |
1135 int async_bytes_read = 0; | 1135 int async_bytes_read = 0; |
1136 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1136 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1137 reader_->Read(buffer.get(), kData.size(), &bytes_read, | 1137 reader_->Read(buffer.get(), kData.size(), &bytes_read, |
1138 base::Bind(&SetValue<int>, &async_bytes_read))); | 1138 base::Bind(&SetValue<int>, &async_bytes_read))); |
1139 EXPECT_EQ(net::OK, reader_->net_error()); | 1139 EXPECT_EQ(net::OK, reader_->net_error()); |
1140 message_loop_.RunUntilIdle(); | 1140 base::RunLoop().RunUntilIdle(); |
1141 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, async_bytes_read); | 1141 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, async_bytes_read); |
1142 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); | 1142 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); |
1143 } | 1143 } |
1144 | 1144 |
1145 TEST_F(BlobReaderTest, RangeError) { | 1145 TEST_F(BlobReaderTest, RangeError) { |
1146 const std::string kData("Hello!!!"); | 1146 const std::string kData("Hello!!!"); |
1147 const size_t kDataSize = 8ul; | 1147 const size_t kDataSize = 8ul; |
1148 const uint64_t kReadLength = 4ull; | 1148 const uint64_t kReadLength = 4ull; |
1149 | 1149 |
1150 // Case: offset too high. | 1150 // Case: offset too high. |
(...skipping 27 matching lines...) Expand all Loading... |
1178 context_.CreatePendingBlob(kUuid, "", ""); | 1178 context_.CreatePendingBlob(kUuid, "", ""); |
1179 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); | 1179 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); |
1180 provider_ = new MockFileStreamReaderProvider(); | 1180 provider_ = new MockFileStreamReaderProvider(); |
1181 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), | 1181 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), |
1182 message_loop_.task_runner().get())); | 1182 message_loop_.task_runner().get())); |
1183 int size_result = -1; | 1183 int size_result = -1; |
1184 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1184 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1185 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1185 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
1186 EXPECT_FALSE(reader_->IsInMemory()); | 1186 EXPECT_FALSE(reader_->IsInMemory()); |
1187 context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); | 1187 context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); |
1188 message_loop_.RunUntilIdle(); | 1188 base::RunLoop().RunUntilIdle(); |
1189 EXPECT_EQ(net::ERR_FAILED, size_result); | 1189 EXPECT_EQ(net::ERR_FAILED, size_result); |
1190 } | 1190 } |
1191 | 1191 |
1192 TEST_F(BlobReaderTest, ReadFromIncompleteBlob) { | 1192 TEST_F(BlobReaderTest, ReadFromIncompleteBlob) { |
1193 const std::string kUuid("uuid1"); | 1193 const std::string kUuid("uuid1"); |
1194 const std::string kData("Hello!!!"); | 1194 const std::string kData("Hello!!!"); |
1195 const size_t kDataSize = 8ul; | 1195 const size_t kDataSize = 8ul; |
1196 | 1196 |
1197 BlobDataBuilder b(kUuid); | 1197 BlobDataBuilder b(kUuid); |
1198 b.AppendData(kData); | 1198 b.AppendData(kData); |
1199 context_.CreatePendingBlob(kUuid, "", ""); | 1199 context_.CreatePendingBlob(kUuid, "", ""); |
1200 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); | 1200 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); |
1201 provider_ = new MockFileStreamReaderProvider(); | 1201 provider_ = new MockFileStreamReaderProvider(); |
1202 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), | 1202 reader_.reset(new BlobReader(blob_handle_.get(), base::WrapUnique(provider_), |
1203 message_loop_.task_runner().get())); | 1203 message_loop_.task_runner().get())); |
1204 int size_result = -1; | 1204 int size_result = -1; |
1205 EXPECT_EQ(BlobReader::Status::IO_PENDING, | 1205 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
1206 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1206 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
1207 EXPECT_FALSE(reader_->IsInMemory()); | 1207 EXPECT_FALSE(reader_->IsInMemory()); |
1208 context_.CompletePendingBlob(b); | 1208 context_.CompletePendingBlob(b); |
1209 message_loop_.RunUntilIdle(); | 1209 base::RunLoop().RunUntilIdle(); |
1210 CheckSizeCalculatedAsynchronously(kDataSize, size_result); | 1210 CheckSizeCalculatedAsynchronously(kDataSize, size_result); |
1211 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); | 1211 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kDataSize)); |
1212 | 1212 |
1213 int bytes_read = 0; | 1213 int bytes_read = 0; |
1214 int async_bytes_read = 0; | 1214 int async_bytes_read = 0; |
1215 EXPECT_EQ(BlobReader::Status::DONE, | 1215 EXPECT_EQ(BlobReader::Status::DONE, |
1216 reader_->Read(buffer.get(), kDataSize, &bytes_read, | 1216 reader_->Read(buffer.get(), kDataSize, &bytes_read, |
1217 base::Bind(&SetValue<int>, &async_bytes_read))); | 1217 base::Bind(&SetValue<int>, &async_bytes_read))); |
1218 EXPECT_EQ(net::OK, reader_->net_error()); | 1218 EXPECT_EQ(net::OK, reader_->net_error()); |
1219 EXPECT_EQ(kDataSize, static_cast<size_t>(bytes_read)); | 1219 EXPECT_EQ(kDataSize, static_cast<size_t>(bytes_read)); |
1220 EXPECT_EQ(0, async_bytes_read); | 1220 EXPECT_EQ(0, async_bytes_read); |
1221 EXPECT_EQ(kData, std::string(buffer->data(), kDataSize)); | 1221 EXPECT_EQ(kData, std::string(buffer->data(), kDataSize)); |
1222 EXPECT_EQ(net::OK, size_result); | 1222 EXPECT_EQ(net::OK, size_result); |
1223 } | 1223 } |
1224 | 1224 |
1225 } // namespace storage | 1225 } // namespace storage |
OLD | NEW |