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..d9dbd60067e03116a61599826d6c21f25ffdac65 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,23 @@ TEST_F(BlobReaderTest, RangeError) { |
EXPECT_EQ(net::ERR_FILE_NOT_FOUND, reader_->net_error()); |
} |
-} // namespace |
+TEST_F(BlobReaderTest, HandleBeforeAsyncCancel) { |
+ const std::string kUuid("uuid1"); |
+ const std::string kData("Hello!!!"); |
+ |
+ 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_.CancelPendingBlob(kUuid, IPCBlobCreationCancelCode::UNKNOWN); |
+ message_loop_.RunUntilIdle(); |
+ EXPECT_EQ(net::ERR_FAILED, size_result); |
+} |
+ |
} // namespace storage |