| Index: media/blink/buffered_data_source_unittest.cc
|
| diff --git a/media/blink/buffered_data_source_unittest.cc b/media/blink/buffered_data_source_unittest.cc
|
| index cea05b88e9166965313b3e048b253547b9696199..6063c8cc512e61056b4e406872470500fe6eb39f 100644
|
| --- a/media/blink/buffered_data_source_unittest.cc
|
| +++ b/media/blink/buffered_data_source_unittest.cc
|
| @@ -999,7 +999,7 @@ TEST_F(BufferedDataSourceTest, ExternalResource_Response206_CancelAfterDefer) {
|
| EXPECT_TRUE(loader()->range_supported());
|
| EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy());
|
|
|
| - data_source_->OnBufferingHaveEnough();
|
| + data_source_->OnBufferingHaveEnough(false);
|
|
|
| ASSERT_TRUE(active_loader());
|
|
|
| @@ -1012,4 +1012,41 @@ TEST_F(BufferedDataSourceTest, ExternalResource_Response206_CancelAfterDefer) {
|
| EXPECT_FALSE(active_loader());
|
| }
|
|
|
| +TEST_F(BufferedDataSourceTest, ExternalResource_Response206_CancelAfterPlay) {
|
| + set_preload(BufferedDataSource::METADATA);
|
| + InitializeWith206Response();
|
| +
|
| + EXPECT_EQ(BufferedDataSource::METADATA, preload());
|
| + EXPECT_FALSE(is_local_source());
|
| + EXPECT_TRUE(loader()->range_supported());
|
| + EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy());
|
| +
|
| + // Marking the media as playing should prevent deferral. It also switches the
|
| + // data source into kCapacityDefer.
|
| + data_source_->MediaIsPlaying();
|
| + data_source_->OnBufferingHaveEnough(false);
|
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
|
| + ASSERT_TRUE(active_loader());
|
| +
|
| + // Read a bit from the beginning and ensure deferral hasn't happened yet.
|
| + ReadAt(0);
|
| + EXPECT_CALL(*this, ReadCallback(kDataSize));
|
| + EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1));
|
| + ReceiveData(kDataSize);
|
| + ASSERT_TRUE(active_loader());
|
| + ASSERT_FALSE(active_loader()->deferred());
|
| + data_source_->OnBufferingHaveEnough(true);
|
| +
|
| + // Deliver data until capacity is reached and verify deferral.
|
| + int bytes_received = 0;
|
| + EXPECT_CALL(host_, AddBufferedByteRange(_, _)).Times(testing::AtLeast(1));
|
| + while (active_loader() && !active_loader()->deferred()) {
|
| + ReceiveData(kDataSize);
|
| + bytes_received += kDataSize;
|
| + }
|
| + EXPECT_GT(bytes_received, 0);
|
| + EXPECT_LT(bytes_received + kDataSize, kFileSize);
|
| + EXPECT_FALSE(active_loader());
|
| +}
|
| +
|
| } // namespace media
|
|
|