Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(371)

Side by Side Diff: content/renderer/media/buffered_data_source_unittest.cc

Issue 302553006: Suppress pause and buffer for local resources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Using default arguments instead of overloading Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 view_->setMainFrame(frame_); 114 view_->setMainFrame(frame_);
115 } 115 }
116 116
117 virtual ~BufferedDataSourceTest() { 117 virtual ~BufferedDataSourceTest() {
118 view_->close(); 118 view_->close();
119 frame_->close(); 119 frame_->close();
120 } 120 }
121 121
122 MOCK_METHOD1(OnInitialize, void(bool)); 122 MOCK_METHOD1(OnInitialize, void(bool));
123 123
124 void Initialize(const char* url, bool expected) { 124 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
125 GURL gurl(url); 125 GURL gurl(url);
126 data_source_.reset( 126 data_source_.reset(
127 new MockBufferedDataSource(gurl, 127 new MockBufferedDataSource(gurl,
128 message_loop_.message_loop_proxy(), 128 message_loop_.message_loop_proxy(),
129 view_->mainFrame()->toWebLocalFrame(), 129 view_->mainFrame()->toWebLocalFrame(),
130 &host_)); 130 &host_));
131 data_source_->SetPreload(preload);
131 132
132 response_generator_.reset(new TestResponseGenerator(gurl, kFileSize)); 133 response_generator_.reset(new TestResponseGenerator(gurl, kFileSize));
133 ExpectCreateResourceLoader(); 134 ExpectCreateResourceLoader();
134 EXPECT_CALL(*this, OnInitialize(expected)); 135 EXPECT_CALL(*this, OnInitialize(expected));
135 data_source_->Initialize(base::Bind(&BufferedDataSourceTest::OnInitialize, 136 data_source_->Initialize(base::Bind(&BufferedDataSourceTest::OnInitialize,
136 base::Unretained(this))); 137 base::Unretained(this)));
137 message_loop_.RunUntilIdle(); 138 message_loop_.RunUntilIdle();
138 139
139 bool is_http = gurl.SchemeIsHTTPOrHTTPS(); 140 bool is_http = gurl.SchemeIsHTTPOrHTTPS();
140 EXPECT_EQ(data_source_->downloading(), is_http); 141 EXPECT_EQ(data_source_->downloading(), is_http);
141 } 142 }
142 143
144 // Helper to initialize tests with a valid 200 response.
145 void InitializeWith200Response(Preload preload = AUTO) {
146 Initialize(kHttpUrl, true, preload);
147
148 EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length()));
149 Respond(response_generator_->Generate200());
150 }
151
143 // Helper to initialize tests with a valid 206 response. 152 // Helper to initialize tests with a valid 206 response.
144 void InitializeWith206Response() { 153 void InitializeWith206Response(Preload preload = AUTO) {
145 Initialize(kHttpUrl, true); 154 Initialize(kHttpUrl, true, preload);
146 155
147 EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length())); 156 EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length()));
148 Respond(response_generator_->Generate206(0)); 157 Respond(response_generator_->Generate206(0));
149 } 158 }
150 159
151 // Helper to initialize tests with a valid file:// response. 160 // Helper to initialize tests with a valid file:// response.
152 void InitializeWithFileResponse() { 161 void InitializeWithFileResponse(Preload preload = AUTO) {
153 Initialize(kFileUrl, true); 162 Initialize(kFileUrl, true, preload);
154 163
155 EXPECT_CALL(host_, SetTotalBytes(kFileSize)); 164 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
156 EXPECT_CALL(host_, AddBufferedByteRange(0, kFileSize)); 165 EXPECT_CALL(host_, AddBufferedByteRange(0, kFileSize));
157 Respond(response_generator_->GenerateFileResponse(0)); 166 Respond(response_generator_->GenerateFileResponse(0));
158 } 167 }
159 168
160 // Stops any active loaders and shuts down the data source. 169 // Stops any active loaders and shuts down the data source.
161 // 170 //
162 // This typically happens when the page is closed and for our purposes is 171 // This typically happens when the page is closed and for our purposes is
163 // appropriate to do when tearing down a test. 172 // appropriate to do when tearing down a test.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 224 }
216 225
217 Preload preload() { return data_source_->preload_; } 226 Preload preload() { return data_source_->preload_; }
218 BufferedResourceLoader::DeferStrategy defer_strategy() { 227 BufferedResourceLoader::DeferStrategy defer_strategy() {
219 return loader()->defer_strategy_; 228 return loader()->defer_strategy_;
220 } 229 }
221 int data_source_bitrate() { return data_source_->bitrate_; } 230 int data_source_bitrate() { return data_source_->bitrate_; }
222 int data_source_playback_rate() { return data_source_->playback_rate_; } 231 int data_source_playback_rate() { return data_source_->playback_rate_; }
223 int loader_bitrate() { return loader()->bitrate_; } 232 int loader_bitrate() { return loader()->bitrate_; }
224 int loader_playback_rate() { return loader()->playback_rate_; } 233 int loader_playback_rate() { return loader()->playback_rate_; }
234 bool is_local_source() { return data_source_->assume_fully_buffered(); }
235 void set_might_be_reused_from_cache_in_future(bool value) {
236 loader()->might_be_reused_from_cache_in_future_ = value;
237 }
225 238
226 scoped_ptr<MockBufferedDataSource> data_source_; 239 scoped_ptr<MockBufferedDataSource> data_source_;
227 240
228 scoped_ptr<TestResponseGenerator> response_generator_; 241 scoped_ptr<TestResponseGenerator> response_generator_;
229 MockWebFrameClient client_; 242 MockWebFrameClient client_;
230 WebView* view_; 243 WebView* view_;
231 WebLocalFrame* frame_; 244 WebLocalFrame* frame_;
232 245
233 StrictMock<MockBufferedDataSourceHost> host_; 246 StrictMock<MockBufferedDataSourceHost> host_;
234 base::MessageLoop message_loop_; 247 base::MessageLoop message_loop_;
235 248
236 private: 249 private:
237 // Used for calling BufferedDataSource::Read(). 250 // Used for calling BufferedDataSource::Read().
238 uint8 buffer_[kDataSize]; 251 uint8 buffer_[kDataSize];
239 252
240 DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceTest); 253 DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceTest);
241 }; 254 };
242 255
243 TEST_F(BufferedDataSourceTest, Range_Supported) { 256 TEST_F(BufferedDataSourceTest, Range_Supported) {
244 Initialize(kHttpUrl, true); 257 InitializeWith206Response();
245
246 EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length()));
247 Respond(response_generator_->Generate206(0));
248 258
249 EXPECT_TRUE(data_source_->loading()); 259 EXPECT_TRUE(data_source_->loading());
250 EXPECT_FALSE(data_source_->IsStreaming()); 260 EXPECT_FALSE(data_source_->IsStreaming());
251 Stop(); 261 Stop();
252 } 262 }
253 263
254 TEST_F(BufferedDataSourceTest, Range_InstanceSizeUnknown) { 264 TEST_F(BufferedDataSourceTest, Range_InstanceSizeUnknown) {
255 Initialize(kHttpUrl, true); 265 Initialize(kHttpUrl, true);
256 266
257 Respond(response_generator_->Generate206( 267 Respond(response_generator_->Generate206(
258 0, TestResponseGenerator::kNoContentRangeInstanceSize)); 268 0, TestResponseGenerator::kNoContentRangeInstanceSize));
259 269
260 EXPECT_TRUE(data_source_->loading()); 270 EXPECT_TRUE(data_source_->loading());
261 EXPECT_TRUE(data_source_->IsStreaming()); 271 EXPECT_TRUE(data_source_->IsStreaming());
262 Stop(); 272 Stop();
263 } 273 }
264 274
265 TEST_F(BufferedDataSourceTest, Range_NotFound) { 275 TEST_F(BufferedDataSourceTest, Range_NotFound) {
266 Initialize(kHttpUrl, false); 276 Initialize(kHttpUrl, false);
267 Respond(response_generator_->Generate404()); 277 Respond(response_generator_->Generate404());
268 278
269 EXPECT_FALSE(data_source_->loading()); 279 EXPECT_FALSE(data_source_->loading());
270 Stop(); 280 Stop();
271 } 281 }
272 282
273 TEST_F(BufferedDataSourceTest, Range_NotSupported) { 283 TEST_F(BufferedDataSourceTest, Range_NotSupported) {
274 Initialize(kHttpUrl, true); 284 InitializeWith200Response();
275 EXPECT_CALL(host_, SetTotalBytes(response_generator_->content_length()));
276 Respond(response_generator_->Generate200());
277 285
278 EXPECT_TRUE(data_source_->loading()); 286 EXPECT_TRUE(data_source_->loading());
279 EXPECT_TRUE(data_source_->IsStreaming()); 287 EXPECT_TRUE(data_source_->IsStreaming());
280 Stop(); 288 Stop();
281 } 289 }
282 290
283 // Special carve-out for Apache versions that choose to return a 200 for 291 // Special carve-out for Apache versions that choose to return a 200 for
284 // Range:0- ("because it's more efficient" than a 206) 292 // Range:0- ("because it's more efficient" than a 206)
285 TEST_F(BufferedDataSourceTest, Range_SupportedButReturned200) { 293 TEST_F(BufferedDataSourceTest, Range_SupportedButReturned200) {
286 Initialize(kHttpUrl, true); 294 Initialize(kHttpUrl, true);
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 TEST_F(BufferedDataSourceTest, File_FinishLoading) { 673 TEST_F(BufferedDataSourceTest, File_FinishLoading) {
666 InitializeWithFileResponse(); 674 InitializeWithFileResponse();
667 675
668 EXPECT_FALSE(data_source_->downloading()); 676 EXPECT_FALSE(data_source_->downloading());
669 FinishLoading(); 677 FinishLoading();
670 EXPECT_FALSE(data_source_->downloading()); 678 EXPECT_FALSE(data_source_->downloading());
671 679
672 Stop(); 680 Stop();
673 } 681 }
674 682
683 TEST_F(BufferedDataSourceTest, LocalResource_DeferStrategy) {
684 InitializeWithFileResponse();
685
686 EXPECT_EQ(AUTO, preload());
687 EXPECT_TRUE(is_local_source());
688 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
689
690 data_source_->MediaIsPlaying();
691 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
692
693 data_source_->MediaIsPaused();
694 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
695
696 Stop();
697 }
698
699 TEST_F(BufferedDataSourceTest, LocalResource_PreloadMetadata_DeferStrategy) {
700 InitializeWithFileResponse(METADATA);
701
702 EXPECT_EQ(METADATA, preload());
703 EXPECT_TRUE(is_local_source());
704 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy());
705
706 data_source_->MediaIsPlaying();
707 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
708
709 data_source_->MediaIsPaused();
710 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
711
712 Stop();
713 }
714
715 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse200_DeferStrategy) {
716 InitializeWith200Response();
717
718 EXPECT_EQ(AUTO, preload());
719 EXPECT_FALSE(is_local_source());
720 EXPECT_FALSE(loader()->range_supported());
721 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
722
723 data_source_->MediaIsPlaying();
724 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
725
726 data_source_->MediaIsPaused();
727 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
728
729 Stop();
730 }
731
732 TEST_F(BufferedDataSourceTest,
733 ExternalResource_Response200_PreloadMetadata_DeferStrategy) {
734 InitializeWith200Response(METADATA);
735
736 EXPECT_EQ(METADATA, preload());
737 EXPECT_FALSE(is_local_source());
738 EXPECT_FALSE(loader()->range_supported());
739 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy());
740
741 data_source_->MediaIsPlaying();
742 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
743
744 data_source_->MediaIsPaused();
745 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
746
747 Stop();
748 }
749
750 TEST_F(BufferedDataSourceTest, ExternalResource_Reponse206_DeferStrategy) {
751 InitializeWith206Response();
752
753 EXPECT_EQ(AUTO, preload());
754 EXPECT_FALSE(is_local_source());
755 EXPECT_TRUE(loader()->range_supported());
756 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
757
758 data_source_->MediaIsPlaying();
759 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
760 set_might_be_reused_from_cache_in_future(true);
761 data_source_->MediaIsPaused();
762 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy());
763
764 data_source_->MediaIsPlaying();
765 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
766 set_might_be_reused_from_cache_in_future(false);
767 data_source_->MediaIsPaused();
768 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
769
770 Stop();
771 }
772
773 TEST_F(BufferedDataSourceTest,
774 ExternalResource_Response206_PreloadMetadata_DeferStrategy) {
775 InitializeWith206Response(METADATA);
776
777 EXPECT_EQ(METADATA, preload());
778 EXPECT_FALSE(is_local_source());
779 EXPECT_TRUE(loader()->range_supported());
780 EXPECT_EQ(BufferedResourceLoader::kReadThenDefer, defer_strategy());
781
782 data_source_->MediaIsPlaying();
783 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
784 set_might_be_reused_from_cache_in_future(true);
785 data_source_->MediaIsPaused();
786 EXPECT_EQ(BufferedResourceLoader::kNeverDefer, defer_strategy());
787
788 data_source_->MediaIsPlaying();
789 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
790 set_might_be_reused_from_cache_in_future(false);
791 data_source_->MediaIsPaused();
792 EXPECT_EQ(BufferedResourceLoader::kCapacityDefer, defer_strategy());
793
794 Stop();
795 }
796
675 } // namespace content 797 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/buffered_data_source.cc ('k') | content/renderer/media/buffered_resource_loader.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698