Chromium Code Reviews| Index: content/renderer/media/buffered_data_source_unittest.cc |
| diff --git a/content/renderer/media/buffered_data_source_unittest.cc b/content/renderer/media/buffered_data_source_unittest.cc |
| index 37ff6f8782d1f69a2dda78cbc1283659eababdab..f37107272daf997ee8413fb986cd4cf078ae6fd5 100644 |
| --- a/content/renderer/media/buffered_data_source_unittest.cc |
| +++ b/content/renderer/media/buffered_data_source_unittest.cc |
| @@ -121,13 +121,14 @@ class BufferedDataSourceTest : public testing::Test { |
| MOCK_METHOD1(OnInitialize, void(bool)); |
| - void Initialize(const char* url, bool expected) { |
| + void Initialize(const char* url, bool expected, Preload preload = AUTO) { |
|
scherkus (not reviewing)
2014/06/06 16:39:20
instead of default arguments (which the style guid
|
| GURL gurl(url); |
| data_source_.reset( |
| new MockBufferedDataSource(gurl, |
| message_loop_.message_loop_proxy(), |
| view_->mainFrame()->toWebLocalFrame(), |
| &host_)); |
| + data_source_->SetPreload(preload); |
| response_generator_.reset(new TestResponseGenerator(gurl, kFileSize)); |
| ExpectCreateResourceLoader(); |
| @@ -140,17 +141,25 @@ class BufferedDataSourceTest : public testing::Test { |
| EXPECT_EQ(data_source_->downloading(), is_http); |
| } |
| + // Helper to initialize tests with a valid 200 response. |
| + void InitializeWith200Response(Preload preload = AUTO) { |
| + Initialize(kHttpUrl, true, preload); |
| + |
| + EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length())); |
| + Respond(response_generator_->Generate200()); |
| + } |
| + |
| // Helper to initialize tests with a valid 206 response. |
| - void InitializeWith206Response() { |
| - Initialize(kHttpUrl, true); |
| + void InitializeWith206Response(Preload preload = AUTO) { |
| + Initialize(kHttpUrl, true, preload); |
| EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length())); |
| Respond(response_generator_->Generate206(0)); |
| } |
| // Helper to initialize tests with a valid file:// response. |
| - void InitializeWithFileResponse() { |
| - Initialize(kFileUrl, true); |
| + void InitializeWithFileResponse(Preload preload = AUTO) { |
| + Initialize(kFileUrl, true, preload); |
| EXPECT_CALL(host_, SetTotalBytes(kFileSize)); |
| EXPECT_CALL(host_, AddBufferedByteRange(0, kFileSize)); |
| @@ -222,6 +231,10 @@ class BufferedDataSourceTest : public testing::Test { |
| int data_source_playback_rate() { return data_source_->playback_rate_; } |
| int loader_bitrate() { return loader()->bitrate_; } |
| int loader_playback_rate() { return loader()->playback_rate_; } |
| + bool is_local_source() { return data_source_->assume_fully_buffered(); } |
| + void set_might_be_reused_from_cache_in_future(bool value) { |
| + loader()->might_be_reused_from_cache_in_future_ = value; |
| + } |
| scoped_ptr<MockBufferedDataSource> data_source_; |
| @@ -241,10 +254,7 @@ class BufferedDataSourceTest : public testing::Test { |
| }; |
| TEST_F(BufferedDataSourceTest, Range_Supported) { |
| - Initialize(kHttpUrl, true); |
| - |
| - EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length())); |
| - Respond(response_generator_->Generate206(0)); |
| + InitializeWith206Response(); |
| EXPECT_TRUE(data_source_->loading()); |
| EXPECT_FALSE(data_source_->IsStreaming()); |
| @@ -271,9 +281,7 @@ TEST_F(BufferedDataSourceTest, Range_NotFound) { |
| } |
| TEST_F(BufferedDataSourceTest, Range_NotSupported) { |
| - Initialize(kHttpUrl, true); |
| - EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length())); |
| - Respond(response_generator_->Generate200()); |
| + InitializeWith200Response(); |
| EXPECT_TRUE(data_source_->loading()); |
| EXPECT_TRUE(data_source_->IsStreaming()); |
| @@ -672,4 +680,118 @@ TEST_F(BufferedDataSourceTest, File_FinishLoading) { |
| Stop(); |
| } |
| +TEST_F(BufferedDataSourceTest, LocalResource_DeferStrategy) { |
| + InitializeWithFileResponse(); |
| + |
| + EXPECT_EQ(AUTO, preload()); |
| + EXPECT_TRUE(is_local_source()); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| +TEST_F(BufferedDataSourceTest, LocalResource_PreloadMetadata_DeferStrategy) { |
| + InitializeWithFileResponse(METADATA); |
| + |
| + EXPECT_EQ(METADATA, preload()); |
| + EXPECT_TRUE(is_local_source()); |
| + EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| +TEST_F(BufferedDataSourceTest, ExternalResource_Reponse200_DeferStrategy) { |
| + InitializeWith200Response(); |
| + |
| + EXPECT_EQ(AUTO, preload()); |
| + EXPECT_FALSE(is_local_source()); |
| + EXPECT_FALSE(loader()->range_supported()); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| +TEST_F(BufferedDataSourceTest, |
| + ExternalResource_Response200_PreloadMetadata_DeferStrategy) { |
| + InitializeWith200Response(METADATA); |
| + |
| + EXPECT_EQ(METADATA, preload()); |
| + EXPECT_FALSE(is_local_source()); |
| + EXPECT_FALSE(loader()->range_supported()); |
| + EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| +TEST_F(BufferedDataSourceTest, ExternalResource_Reponse206_DeferStrategy) { |
| + InitializeWith206Response(); |
| + |
| + EXPECT_EQ(AUTO, preload()); |
| + EXPECT_FALSE(is_local_source()); |
| + EXPECT_TRUE(loader()->range_supported()); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + set_might_be_reused_from_cache_in_future(true); |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + set_might_be_reused_from_cache_in_future(false); |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| +TEST_F(BufferedDataSourceTest, |
| + ExternalResource_Response206_PreloadMetadata_DeferStrategy) { |
| + InitializeWith206Response(METADATA); |
| + |
| + EXPECT_EQ(METADATA, preload()); |
| + EXPECT_FALSE(is_local_source()); |
| + EXPECT_TRUE(loader()->range_supported()); |
| + EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + set_might_be_reused_from_cache_in_future(true); |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); |
| + |
| + data_source_->MediaIsPlaying(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + set_might_be_reused_from_cache_in_future(false); |
| + data_source_->MediaIsPaused(); |
| + EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| + |
| + Stop(); |
| +} |
| + |
| } // namespace content |