OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
8 #include "media/base/media_log.h" | 8 #include "media/base/media_log.h" |
9 #include "media/base/mock_filters.h" | 9 #include "media/base/mock_filters.h" |
10 #include "media/base/test_helpers.h" | 10 #include "media/base/test_helpers.h" |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 data_source_->Read(position, kDataSize, buffer_, | 216 data_source_->Read(position, kDataSize, buffer_, |
217 base::Bind(&BufferedDataSourceTest::ReadCallback, | 217 base::Bind(&BufferedDataSourceTest::ReadCallback, |
218 base::Unretained(this))); | 218 base::Unretained(this))); |
219 message_loop_.RunUntilIdle(); | 219 message_loop_.RunUntilIdle(); |
220 } | 220 } |
221 | 221 |
222 // Accessors for private variables on |data_source_|. | 222 // Accessors for private variables on |data_source_|. |
223 BufferedResourceLoader* loader() { | 223 BufferedResourceLoader* loader() { |
224 return data_source_->loader_.get(); | 224 return data_source_->loader_.get(); |
225 } | 225 } |
| 226 ActiveLoader* active_loader() { return loader()->active_loader_.get(); } |
226 WebURLLoader* url_loader() { | 227 WebURLLoader* url_loader() { |
227 return loader()->active_loader_->loader_.get(); | 228 return loader()->active_loader_->loader_.get(); |
228 } | 229 } |
229 | 230 |
230 BufferedDataSource::Preload preload() { return data_source_->preload_; } | 231 BufferedDataSource::Preload preload() { return data_source_->preload_; } |
231 void set_preload(BufferedDataSource::Preload preload) { preload_ = preload; } | 232 void set_preload(BufferedDataSource::Preload preload) { preload_ = preload; } |
232 BufferedResourceLoader::DeferStrategy defer_strategy() { | 233 BufferedResourceLoader::DeferStrategy defer_strategy() { |
233 return loader()->defer_strategy_; | 234 return loader()->defer_strategy_; |
234 } | 235 } |
235 int data_source_bitrate() { return data_source_->bitrate_; } | 236 int data_source_bitrate() { return data_source_->bitrate_; } |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
800 | 801 |
801 data_source_->MediaIsPlaying(); | 802 data_source_->MediaIsPlaying(); |
802 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 803 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
803 set_might_be_reused_from_cache_in_future(false); | 804 set_might_be_reused_from_cache_in_future(false); |
804 data_source_->MediaIsPaused(); | 805 data_source_->MediaIsPaused(); |
805 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 806 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
806 | 807 |
807 Stop(); | 808 Stop(); |
808 } | 809 } |
809 | 810 |
| 811 TEST_F(BufferedDataSourceTest, ExternalResource_Response206_VerifyDefer) { |
| 812 set_preload(BufferedDataSource::METADATA); |
| 813 InitializeWith206Response(); |
| 814 |
| 815 EXPECT_EQ(BufferedDataSource::METADATA, preload()); |
| 816 EXPECT_FALSE(is_local_source()); |
| 817 EXPECT_TRUE(loader()->range_supported()); |
| 818 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| 819 |
| 820 // Read a bit from the beginning. |
| 821 ReadAt(0); |
| 822 EXPECT_CALL(*this, ReadCallback(kDataSize)); |
| 823 EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1)); |
| 824 ReceiveData(kDataSize); |
| 825 |
| 826 ASSERT_TRUE(active_loader()); |
| 827 EXPECT_TRUE(active_loader()->deferred()); |
| 828 } |
| 829 |
| 830 TEST_F(BufferedDataSourceTest, ExternalResource_Response206_CancelAfterDefer) { |
| 831 set_preload(BufferedDataSource::METADATA); |
| 832 InitializeWith206Response(); |
| 833 |
| 834 EXPECT_EQ(BufferedDataSource::METADATA, preload()); |
| 835 EXPECT_FALSE(is_local_source()); |
| 836 EXPECT_TRUE(loader()->range_supported()); |
| 837 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| 838 |
| 839 data_source_->CancelUponDeferral(); |
| 840 |
| 841 ASSERT_TRUE(active_loader()); |
| 842 |
| 843 // Read a bit from the beginning. |
| 844 ReadAt(0); |
| 845 EXPECT_CALL(*this, ReadCallback(kDataSize)); |
| 846 EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1)); |
| 847 ReceiveData(kDataSize); |
| 848 |
| 849 EXPECT_FALSE(active_loader()); |
| 850 } |
| 851 |
810 } // namespace media | 852 } // namespace media |
OLD | NEW |