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

Side by Side Diff: media/blink/buffered_data_source_unittest.cc

Issue 1924383002: BufferedDataSource now caches redirects for subsequent requests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/macros.h" 8 #include "base/macros.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 return loader()->defer_strategy_; 289 return loader()->defer_strategy_;
290 } 290 }
291 int data_source_bitrate() { return data_source_->bitrate_; } 291 int data_source_bitrate() { return data_source_->bitrate_; }
292 double data_source_playback_rate() { return data_source_->playback_rate_; } 292 double data_source_playback_rate() { return data_source_->playback_rate_; }
293 int loader_bitrate() { return loader()->bitrate_; } 293 int loader_bitrate() { return loader()->bitrate_; }
294 double loader_playback_rate() { return loader()->playback_rate_; } 294 double loader_playback_rate() { return loader()->playback_rate_; }
295 bool is_local_source() { return data_source_->assume_fully_buffered(); } 295 bool is_local_source() { return data_source_->assume_fully_buffered(); }
296 void set_might_be_reused_from_cache_in_future(bool value) { 296 void set_might_be_reused_from_cache_in_future(bool value) {
297 loader()->might_be_reused_from_cache_in_future_ = value; 297 loader()->might_be_reused_from_cache_in_future_ = value;
298 } 298 }
299 GURL url() { return data_source_->url_; }
299 300
300 std::unique_ptr<MockBufferedDataSource> data_source_; 301 std::unique_ptr<MockBufferedDataSource> data_source_;
301 302
302 std::unique_ptr<TestResponseGenerator> response_generator_; 303 std::unique_ptr<TestResponseGenerator> response_generator_;
303 MockWebFrameClient client_; 304 MockWebFrameClient client_;
304 WebView* view_; 305 WebView* view_;
305 WebLocalFrame* frame_; 306 WebLocalFrame* frame_;
306 307
307 StrictMock<MockBufferedDataSourceHost> host_; 308 StrictMock<MockBufferedDataSourceHost> host_;
308 base::MessageLoop message_loop_; 309 base::MessageLoop message_loop_;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 bytes_received_ = 0; 493 bytes_received_ = 0;
493 loader()->didFail(url_loader(), response_generator_->GenerateError()); 494 loader()->didFail(url_loader(), response_generator_->GenerateError());
494 run_loop.Run(); 495 run_loop.Run();
495 Respond(response_generator_->Generate206(kDataSize)); 496 Respond(response_generator_->Generate206(kDataSize));
496 ReceiveData(kDataSize); 497 ReceiveData(kDataSize);
497 FinishLoading(); 498 FinishLoading();
498 EXPECT_FALSE(data_source_->loading()); 499 EXPECT_FALSE(data_source_->loading());
499 Stop(); 500 Stop();
500 } 501 }
501 502
503 // If the initial response is a redirect, BDS saves it and uses it for future
504 // requests.
505 TEST_F(BufferedDataSourceTest, Http_InitialReponseRedirectsAreCached) {
506 Initialize(kHttpUrl, true);
507
508 WebURLResponse redirect =
509 response_generator_->GeneratePartial206(0, kDataSize - 1);
510 redirect.setURL(GURL(kHttpDifferentPathUrl));
511
512 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
513 Respond(redirect);
514 ASSERT_TRUE(url() == GURL(kHttpDifferentPathUrl));
515 }
516
517 TEST_F(BufferedDataSourceTest,
518 Http_RedirectsAfterTheInitialReponseAreNotCached) {
519 Initialize(kHttpUrl, true);
520
521 WebURLResponse response =
522 response_generator_->GeneratePartial206(0, kDataSize - 1);
523 response.setURL(GURL(kHttpUrl));
524
525 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
526 EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1));
527 EXPECT_CALL(host_, AddBufferedByteRange(kDataSize, kDataSize * 2 - 1));
528 EXPECT_CALL(*this, ReadCallback(kDataSize)).Times(2);
529
530 Respond(response);
531 ReadAt(0);
532 ReceiveData(kDataSize);
533
534 WebURLResponse redirect =
535 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1);
536 redirect.setURL(GURL(kHttpDifferentPathUrl));
537
538 ExpectCreateResourceLoader();
539 FinishLoading();
540 ReadAt(kDataSize);
541 Respond(redirect);
542 // The redirect isn't cached.
543 ASSERT_TRUE(url() == GURL(kHttpUrl));
544 ReceiveData(kDataSize);
545 FinishLoading();
546 Stop();
547 }
548
549 TEST_F(BufferedDataSourceTest, Http_ServiceWorkerRedirectsAreNotCached) {
550 Initialize(kHttpUrl, true);
551
552 WebURLResponse redirect =
553 response_generator_->GeneratePartial206(0, kDataSize - 1);
554 redirect.setURL(GURL(kHttpDifferentPathUrl));
555 redirect.setWasFetchedViaServiceWorker(true);
556
557 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
558 Respond(redirect);
559 ASSERT_TRUE(url() == GURL(kHttpUrl));
560 }
561
502 TEST_F(BufferedDataSourceTest, Http_PartialResponse) { 562 TEST_F(BufferedDataSourceTest, Http_PartialResponse) {
503 Initialize(kHttpUrl, true); 563 Initialize(kHttpUrl, true);
504 WebURLResponse response1 = 564 WebURLResponse response1 =
505 response_generator_->GeneratePartial206(0, kDataSize - 1); 565 response_generator_->GeneratePartial206(0, kDataSize - 1);
506 WebURLResponse response2 = 566 WebURLResponse response2 =
507 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1); 567 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1);
508 // The origin URL of response1 and response2 are same. So no error should 568 // The origin URL of response1 and response2 are same. So no error should
509 // occur. 569 // occur.
510 ExecuteMixedResponseSuccessTest(response1, response2); 570 ExecuteMixedResponseSuccessTest(response1, response2);
511 } 571 }
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 while (active_loader() && !active_loader()->deferred()) { 1103 while (active_loader() && !active_loader()->deferred()) {
1044 ReceiveData(kDataSize); 1104 ReceiveData(kDataSize);
1045 bytes_received += kDataSize; 1105 bytes_received += kDataSize;
1046 } 1106 }
1047 EXPECT_GT(bytes_received, 0); 1107 EXPECT_GT(bytes_received, 0);
1048 EXPECT_LT(bytes_received + kDataSize, kFileSize); 1108 EXPECT_LT(bytes_received + kDataSize, kFileSize);
1049 EXPECT_FALSE(active_loader()); 1109 EXPECT_FALSE(active_loader());
1050 } 1110 }
1051 1111
1052 } // namespace media 1112 } // namespace media
OLDNEW
« media/blink/buffered_data_source.cc ('K') | « media/blink/buffered_data_source.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698