| 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 "content/public/common/url_constants.h" | 7 #include "content/public/common/url_constants.h" |
| 8 #include "content/renderer/media/buffered_data_source.h" | 8 #include "content/renderer/media/buffered_data_source.h" |
| 9 #include "content/renderer/media/test_response_generator.h" | 9 #include "content/renderer/media/test_response_generator.h" |
| 10 #include "content/test/mock_webframeclient.h" | 10 #include "content/test/mock_webframeclient.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 static const int kDataSize = 1024; | 105 static const int kDataSize = 1024; |
| 106 | 106 |
| 107 static const char kHttpUrl[] = "http://localhost/foo.webm"; | 107 static const char kHttpUrl[] = "http://localhost/foo.webm"; |
| 108 static const char kFileUrl[] = "file:///tmp/bar.webm"; | 108 static const char kFileUrl[] = "file:///tmp/bar.webm"; |
| 109 | 109 |
| 110 class BufferedDataSourceTest : public testing::Test { | 110 class BufferedDataSourceTest : public testing::Test { |
| 111 public: | 111 public: |
| 112 BufferedDataSourceTest() | 112 BufferedDataSourceTest() |
| 113 : view_(WebView::create(NULL)), | 113 : view_(WebView::create(NULL)), |
| 114 frame_(WebLocalFrame::create(&client_)), | 114 frame_(WebLocalFrame::create(&client_)), |
| 115 preload_(AUTO) { | 115 preload_(BufferedDataSource::AUTO) { |
| 116 view_->setMainFrame(frame_); | 116 view_->setMainFrame(frame_); |
| 117 } | 117 } |
| 118 | 118 |
| 119 virtual ~BufferedDataSourceTest() { | 119 virtual ~BufferedDataSourceTest() { |
| 120 view_->close(); | 120 view_->close(); |
| 121 frame_->close(); | 121 frame_->close(); |
| 122 } | 122 } |
| 123 | 123 |
| 124 MOCK_METHOD1(OnInitialize, void(bool)); | 124 MOCK_METHOD1(OnInitialize, void(bool)); |
| 125 | 125 |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 218 } | 218 } |
| 219 | 219 |
| 220 // Accessors for private variables on |data_source_|. | 220 // Accessors for private variables on |data_source_|. |
| 221 BufferedResourceLoader* loader() { | 221 BufferedResourceLoader* loader() { |
| 222 return data_source_->loader_.get(); | 222 return data_source_->loader_.get(); |
| 223 } | 223 } |
| 224 WebURLLoader* url_loader() { | 224 WebURLLoader* url_loader() { |
| 225 return loader()->active_loader_->loader_.get(); | 225 return loader()->active_loader_->loader_.get(); |
| 226 } | 226 } |
| 227 | 227 |
| 228 Preload preload() { return data_source_->preload_; } | 228 BufferedDataSource::Preload preload() { return data_source_->preload_; } |
| 229 void set_preload(Preload preload) { preload_ = preload; } | 229 void set_preload(BufferedDataSource::Preload preload) { preload_ = preload; } |
| 230 BufferedResourceLoader::DeferStrategy defer_strategy() { | 230 BufferedResourceLoader::DeferStrategy defer_strategy() { |
| 231 return loader()->defer_strategy_; | 231 return loader()->defer_strategy_; |
| 232 } | 232 } |
| 233 int data_source_bitrate() { return data_source_->bitrate_; } | 233 int data_source_bitrate() { return data_source_->bitrate_; } |
| 234 int data_source_playback_rate() { return data_source_->playback_rate_; } | 234 int data_source_playback_rate() { return data_source_->playback_rate_; } |
| 235 int loader_bitrate() { return loader()->bitrate_; } | 235 int loader_bitrate() { return loader()->bitrate_; } |
| 236 int loader_playback_rate() { return loader()->playback_rate_; } | 236 int loader_playback_rate() { return loader()->playback_rate_; } |
| 237 bool is_local_source() { return data_source_->assume_fully_buffered(); } | 237 bool is_local_source() { return data_source_->assume_fully_buffered(); } |
| 238 void set_might_be_reused_from_cache_in_future(bool value) { | 238 void set_might_be_reused_from_cache_in_future(bool value) { |
| 239 loader()->might_be_reused_from_cache_in_future_ = value; | 239 loader()->might_be_reused_from_cache_in_future_ = value; |
| 240 } | 240 } |
| 241 | 241 |
| 242 scoped_ptr<MockBufferedDataSource> data_source_; | 242 scoped_ptr<MockBufferedDataSource> data_source_; |
| 243 | 243 |
| 244 scoped_ptr<TestResponseGenerator> response_generator_; | 244 scoped_ptr<TestResponseGenerator> response_generator_; |
| 245 MockWebFrameClient client_; | 245 MockWebFrameClient client_; |
| 246 WebView* view_; | 246 WebView* view_; |
| 247 WebLocalFrame* frame_; | 247 WebLocalFrame* frame_; |
| 248 | 248 |
| 249 StrictMock<MockBufferedDataSourceHost> host_; | 249 StrictMock<MockBufferedDataSourceHost> host_; |
| 250 base::MessageLoop message_loop_; | 250 base::MessageLoop message_loop_; |
| 251 | 251 |
| 252 private: | 252 private: |
| 253 // Used for calling BufferedDataSource::Read(). | 253 // Used for calling BufferedDataSource::Read(). |
| 254 uint8 buffer_[kDataSize]; | 254 uint8 buffer_[kDataSize]; |
| 255 | 255 |
| 256 Preload preload_; | 256 BufferedDataSource::Preload preload_; |
| 257 | 257 |
| 258 DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceTest); | 258 DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceTest); |
| 259 }; | 259 }; |
| 260 | 260 |
| 261 TEST_F(BufferedDataSourceTest, Range_Supported) { | 261 TEST_F(BufferedDataSourceTest, Range_Supported) { |
| 262 InitializeWith206Response(); | 262 InitializeWith206Response(); |
| 263 | 263 |
| 264 EXPECT_TRUE(data_source_->loading()); | 264 EXPECT_TRUE(data_source_->loading()); |
| 265 EXPECT_FALSE(data_source_->IsStreaming()); | 265 EXPECT_FALSE(data_source_->IsStreaming()); |
| 266 Stop(); | 266 Stop(); |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError)); | 518 EXPECT_CALL(*this, ReadCallback(media::DataSource::kReadError)); |
| 519 data_source_->Stop(); | 519 data_source_->Stop(); |
| 520 } | 520 } |
| 521 message_loop_.RunUntilIdle(); | 521 message_loop_.RunUntilIdle(); |
| 522 } | 522 } |
| 523 | 523 |
| 524 TEST_F(BufferedDataSourceTest, DefaultValues) { | 524 TEST_F(BufferedDataSourceTest, DefaultValues) { |
| 525 InitializeWith206Response(); | 525 InitializeWith206Response(); |
| 526 | 526 |
| 527 // Ensure we have sane values for default loading scenario. | 527 // Ensure we have sane values for default loading scenario. |
| 528 EXPECT_EQ(AUTO, preload()); | 528 EXPECT_EQ(BufferedDataSource::AUTO, preload()); |
| 529 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 529 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 530 | 530 |
| 531 EXPECT_EQ(0, data_source_bitrate()); | 531 EXPECT_EQ(0, data_source_bitrate()); |
| 532 EXPECT_EQ(0.0f, data_source_playback_rate()); | 532 EXPECT_EQ(0.0f, data_source_playback_rate()); |
| 533 EXPECT_EQ(0, loader_bitrate()); | 533 EXPECT_EQ(0, loader_bitrate()); |
| 534 EXPECT_EQ(0.0f, loader_playback_rate()); | 534 EXPECT_EQ(0.0f, loader_playback_rate()); |
| 535 | 535 |
| 536 EXPECT_TRUE(data_source_->loading()); | 536 EXPECT_TRUE(data_source_->loading()); |
| 537 Stop(); | 537 Stop(); |
| 538 } | 538 } |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 EXPECT_FALSE(data_source_->downloading()); | 656 EXPECT_FALSE(data_source_->downloading()); |
| 657 FinishLoading(); | 657 FinishLoading(); |
| 658 EXPECT_FALSE(data_source_->downloading()); | 658 EXPECT_FALSE(data_source_->downloading()); |
| 659 | 659 |
| 660 Stop(); | 660 Stop(); |
| 661 } | 661 } |
| 662 | 662 |
| 663 TEST_F(BufferedDataSourceTest, LocalResource_DeferStrategy) { | 663 TEST_F(BufferedDataSourceTest, LocalResource_DeferStrategy) { |
| 664 InitializeWithFileResponse(); | 664 InitializeWithFileResponse(); |
| 665 | 665 |
| 666 EXPECT_EQ(AUTO, preload()); | 666 EXPECT_EQ(BufferedDataSource::AUTO, preload()); |
| 667 EXPECT_TRUE(is_local_source()); | 667 EXPECT_TRUE(is_local_source()); |
| 668 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 668 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 669 | 669 |
| 670 data_source_->MediaIsPlaying(); | 670 data_source_->MediaIsPlaying(); |
| 671 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 671 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 672 | 672 |
| 673 data_source_->MediaIsPaused(); | 673 data_source_->MediaIsPaused(); |
| 674 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 674 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 675 | 675 |
| 676 Stop(); | 676 Stop(); |
| 677 } | 677 } |
| 678 | 678 |
| 679 TEST_F(BufferedDataSourceTest, LocalResource_PreloadMetadata_DeferStrategy) { | 679 TEST_F(BufferedDataSourceTest, LocalResource_PreloadMetadata_DeferStrategy) { |
| 680 set_preload(METADATA); | 680 set_preload(BufferedDataSource::METADATA); |
| 681 InitializeWithFileResponse(); | 681 InitializeWithFileResponse(); |
| 682 | 682 |
| 683 EXPECT_EQ(METADATA, preload()); | 683 EXPECT_EQ(BufferedDataSource::METADATA, preload()); |
| 684 EXPECT_TRUE(is_local_source()); | 684 EXPECT_TRUE(is_local_source()); |
| 685 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); | 685 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| 686 | 686 |
| 687 data_source_->MediaIsPlaying(); | 687 data_source_->MediaIsPlaying(); |
| 688 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 688 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 689 | 689 |
| 690 data_source_->MediaIsPaused(); | 690 data_source_->MediaIsPaused(); |
| 691 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 691 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 692 | 692 |
| 693 Stop(); | 693 Stop(); |
| 694 } | 694 } |
| 695 | 695 |
| 696 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse200_DeferStrategy) { | 696 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse200_DeferStrategy) { |
| 697 InitializeWith200Response(); | 697 InitializeWith200Response(); |
| 698 | 698 |
| 699 EXPECT_EQ(AUTO, preload()); | 699 EXPECT_EQ(BufferedDataSource::AUTO, preload()); |
| 700 EXPECT_FALSE(is_local_source()); | 700 EXPECT_FALSE(is_local_source()); |
| 701 EXPECT_FALSE(loader()->range_supported()); | 701 EXPECT_FALSE(loader()->range_supported()); |
| 702 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 702 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 703 | 703 |
| 704 data_source_->MediaIsPlaying(); | 704 data_source_->MediaIsPlaying(); |
| 705 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 705 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 706 | 706 |
| 707 data_source_->MediaIsPaused(); | 707 data_source_->MediaIsPaused(); |
| 708 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 708 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 709 | 709 |
| 710 Stop(); | 710 Stop(); |
| 711 } | 711 } |
| 712 | 712 |
| 713 TEST_F(BufferedDataSourceTest, | 713 TEST_F(BufferedDataSourceTest, |
| 714 ExternalResource_Response200_PreloadMetadata_DeferStrategy) { | 714 ExternalResource_Response200_PreloadMetadata_DeferStrategy) { |
| 715 set_preload(METADATA); | 715 set_preload(BufferedDataSource::METADATA); |
| 716 InitializeWith200Response(); | 716 InitializeWith200Response(); |
| 717 | 717 |
| 718 EXPECT_EQ(METADATA, preload()); | 718 EXPECT_EQ(BufferedDataSource::METADATA, preload()); |
| 719 EXPECT_FALSE(is_local_source()); | 719 EXPECT_FALSE(is_local_source()); |
| 720 EXPECT_FALSE(loader()->range_supported()); | 720 EXPECT_FALSE(loader()->range_supported()); |
| 721 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); | 721 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| 722 | 722 |
| 723 data_source_->MediaIsPlaying(); | 723 data_source_->MediaIsPlaying(); |
| 724 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 724 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 725 | 725 |
| 726 data_source_->MediaIsPaused(); | 726 data_source_->MediaIsPaused(); |
| 727 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 727 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 728 | 728 |
| 729 Stop(); | 729 Stop(); |
| 730 } | 730 } |
| 731 | 731 |
| 732 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse206_DeferStrategy) { | 732 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse206_DeferStrategy) { |
| 733 InitializeWith206Response(); | 733 InitializeWith206Response(); |
| 734 | 734 |
| 735 EXPECT_EQ(AUTO, preload()); | 735 EXPECT_EQ(BufferedDataSource::AUTO, preload()); |
| 736 EXPECT_FALSE(is_local_source()); | 736 EXPECT_FALSE(is_local_source()); |
| 737 EXPECT_TRUE(loader()->range_supported()); | 737 EXPECT_TRUE(loader()->range_supported()); |
| 738 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 738 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 739 | 739 |
| 740 data_source_->MediaIsPlaying(); | 740 data_source_->MediaIsPlaying(); |
| 741 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 741 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 742 set_might_be_reused_from_cache_in_future(true); | 742 set_might_be_reused_from_cache_in_future(true); |
| 743 data_source_->MediaIsPaused(); | 743 data_source_->MediaIsPaused(); |
| 744 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); | 744 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); |
| 745 | 745 |
| 746 data_source_->MediaIsPlaying(); | 746 data_source_->MediaIsPlaying(); |
| 747 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 747 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 748 set_might_be_reused_from_cache_in_future(false); | 748 set_might_be_reused_from_cache_in_future(false); |
| 749 data_source_->MediaIsPaused(); | 749 data_source_->MediaIsPaused(); |
| 750 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 750 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 751 | 751 |
| 752 Stop(); | 752 Stop(); |
| 753 } | 753 } |
| 754 | 754 |
| 755 TEST_F(BufferedDataSourceTest, | 755 TEST_F(BufferedDataSourceTest, |
| 756 ExternalResource_Response206_PreloadMetadata_DeferStrategy) { | 756 ExternalResource_Response206_PreloadMetadata_DeferStrategy) { |
| 757 set_preload(METADATA); | 757 set_preload(BufferedDataSource::METADATA); |
| 758 InitializeWith206Response(); | 758 InitializeWith206Response(); |
| 759 | 759 |
| 760 EXPECT_EQ(METADATA, preload()); | 760 EXPECT_EQ(BufferedDataSource::METADATA, preload()); |
| 761 EXPECT_FALSE(is_local_source()); | 761 EXPECT_FALSE(is_local_source()); |
| 762 EXPECT_TRUE(loader()->range_supported()); | 762 EXPECT_TRUE(loader()->range_supported()); |
| 763 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); | 763 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy()); |
| 764 | 764 |
| 765 data_source_->MediaIsPlaying(); | 765 data_source_->MediaIsPlaying(); |
| 766 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 766 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 767 set_might_be_reused_from_cache_in_future(true); | 767 set_might_be_reused_from_cache_in_future(true); |
| 768 data_source_->MediaIsPaused(); | 768 data_source_->MediaIsPaused(); |
| 769 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); | 769 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy()); |
| 770 | 770 |
| 771 data_source_->MediaIsPlaying(); | 771 data_source_->MediaIsPlaying(); |
| 772 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 772 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 773 set_might_be_reused_from_cache_in_future(false); | 773 set_might_be_reused_from_cache_in_future(false); |
| 774 data_source_->MediaIsPaused(); | 774 data_source_->MediaIsPaused(); |
| 775 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); | 775 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy()); |
| 776 | 776 |
| 777 Stop(); | 777 Stop(); |
| 778 } | 778 } |
| 779 | 779 |
| 780 } // namespace content | 780 } // namespace content |
| OLD | NEW |