| 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 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 reader_.reset(); | 320 reader_.reset(); |
| 321 blob_handle_.reset(); | 321 blob_handle_.reset(); |
| 322 message_loop_.RunUntilIdle(); | 322 message_loop_.RunUntilIdle(); |
| 323 base::RunLoop().RunUntilIdle(); | 323 base::RunLoop().RunUntilIdle(); |
| 324 } | 324 } |
| 325 | 325 |
| 326 protected: | 326 protected: |
| 327 void InitializeReader(BlobDataBuilder* builder) { | 327 void InitializeReader(BlobDataBuilder* builder) { |
| 328 blob_handle_ = builder ? context_.AddFinishedBlob(builder) : nullptr; | 328 blob_handle_ = builder ? context_.AddFinishedBlob(builder) : nullptr; |
| 329 provider_ = new MockFileStreamReaderProvider(); | 329 provider_ = new MockFileStreamReaderProvider(); |
| 330 scoped_ptr<BlobReader::FileStreamReaderProvider> temp_ptr(provider_); | 330 reader_.reset(new BlobReader(blob_handle_.get(), make_scoped_ptr(provider_), |
| 331 reader_.reset(new BlobReader(blob_handle_.get(), std::move(temp_ptr), | |
| 332 message_loop_.task_runner().get())); | 331 message_loop_.task_runner().get())); |
| 333 } | 332 } |
| 334 | 333 |
| 335 // Takes ownership of the file reader (the blob reader takes ownership). | 334 // Takes ownership of the file reader (the blob reader takes ownership). |
| 336 void ExpectLocalFileCall(const FilePath& file_path, | 335 void ExpectLocalFileCall(const FilePath& file_path, |
| 337 base::Time modification_time, | 336 base::Time modification_time, |
| 338 uint64_t initial_offset, | 337 uint64_t initial_offset, |
| 339 FakeFileStreamReader* reader) { | 338 FakeFileStreamReader* reader) { |
| 340 EXPECT_CALL(*provider_, CreateForLocalFileMock( | 339 EXPECT_CALL(*provider_, CreateForLocalFileMock( |
| 341 message_loop_.task_runner().get(), file_path, | 340 message_loop_.task_runner().get(), file_path, |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 BlobStorageContext context_; | 387 BlobStorageContext context_; |
| 389 scoped_ptr<BlobDataHandle> blob_handle_; | 388 scoped_ptr<BlobDataHandle> blob_handle_; |
| 390 MockFileStreamReaderProvider* provider_ = nullptr; | 389 MockFileStreamReaderProvider* provider_ = nullptr; |
| 391 base::MessageLoop message_loop_; | 390 base::MessageLoop message_loop_; |
| 392 scoped_ptr<BlobReader> reader_; | 391 scoped_ptr<BlobReader> reader_; |
| 393 | 392 |
| 394 private: | 393 private: |
| 395 DISALLOW_COPY_AND_ASSIGN(BlobReaderTest); | 394 DISALLOW_COPY_AND_ASSIGN(BlobReaderTest); |
| 396 }; | 395 }; |
| 397 | 396 |
| 398 namespace { | |
| 399 | |
| 400 TEST_F(BlobReaderTest, BasicMemory) { | 397 TEST_F(BlobReaderTest, BasicMemory) { |
| 401 BlobDataBuilder b("uuid"); | 398 BlobDataBuilder b("uuid"); |
| 402 const std::string kData("Hello!!!"); | 399 const std::string kData("Hello!!!"); |
| 403 const size_t kDataSize = 8ul; | 400 const size_t kDataSize = 8ul; |
| 404 b.AppendData(kData); | 401 b.AppendData(kData); |
| 405 this->InitializeReader(&b); | 402 this->InitializeReader(&b); |
| 406 | 403 |
| 407 int size_result = -1; | 404 int size_result = -1; |
| 408 EXPECT_FALSE(IsReaderTotalSizeCalculated()); | 405 EXPECT_FALSE(IsReaderTotalSizeCalculated()); |
| 409 EXPECT_EQ(BlobReader::Status::DONE, | 406 EXPECT_EQ(BlobReader::Status::DONE, |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1106 this->InitializeReader(&b2); | 1103 this->InitializeReader(&b2); |
| 1107 size_result = -1; | 1104 size_result = -1; |
| 1108 EXPECT_EQ(BlobReader::Status::DONE, | 1105 EXPECT_EQ(BlobReader::Status::DONE, |
| 1109 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); | 1106 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 1110 buffer = CreateBuffer(kDataSize + 1); | 1107 buffer = CreateBuffer(kDataSize + 1); |
| 1111 EXPECT_EQ(BlobReader::Status::NET_ERROR, | 1108 EXPECT_EQ(BlobReader::Status::NET_ERROR, |
| 1112 reader_->SetReadRange(0, kDataSize + 1)); | 1109 reader_->SetReadRange(0, kDataSize + 1)); |
| 1113 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); | 1110 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); |
| 1114 } | 1111 } |
| 1115 | 1112 |
| 1116 } // namespace | 1113 TEST_F(BlobReaderTest, HandleBeforeAsyncCancel) { |
| 1114 const std::string kUuid("uuid1"); |
| 1115 const std::string kData("Hello!!!"); |
| 1116 |
| 1117 BlobDataBuilder b(kUuid); |
| 1118 b.AppendData(kData); |
| 1119 context_.CreatePendingBlob(kUuid, "", ""); |
| 1120 blob_handle_ = context_.GetBlobDataFromUUID(kUuid); |
| 1121 provider_ = new MockFileStreamReaderProvider(); |
| 1122 reader_.reset(new BlobReader(blob_handle_.get(), make_scoped_ptr(provider_), |
| 1123 message_loop_.task_runner().get())); |
| 1124 int size_result = -1; |
| 1125 EXPECT_EQ(BlobReader::Status::IO_PENDING, |
| 1126 reader_->CalculateSize(base::Bind(&SetValue<int>, &size_result))); |
| 1127 context_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); |
| 1128 message_loop_.RunUntilIdle(); |
| 1129 EXPECT_EQ(net::ERR_FAILED, size_result); |
| 1130 } |
| 1131 |
| 1117 } // namespace storage | 1132 } // namespace storage |
| OLD | NEW |