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

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

Issue 1947693003: BufferedDataSource now caches redirects for subsequent requests on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
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
« no previous file with comments | « media/blink/buffered_data_source.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "build/build_config.h"
11 #include "media/base/media_log.h" 12 #include "media/base/media_log.h"
12 #include "media/base/mock_filters.h" 13 #include "media/base/mock_filters.h"
13 #include "media/base/test_helpers.h" 14 #include "media/base/test_helpers.h"
14 #include "media/blink/buffered_data_source.h" 15 #include "media/blink/buffered_data_source.h"
15 #include "media/blink/mock_webframeclient.h" 16 #include "media/blink/mock_webframeclient.h"
16 #include "media/blink/mock_weburlloader.h" 17 #include "media/blink/mock_weburlloader.h"
17 #include "media/blink/test_response_generator.h" 18 #include "media/blink/test_response_generator.h"
18 #include "third_party/WebKit/public/platform/WebURLResponse.h" 19 #include "third_party/WebKit/public/platform/WebURLResponse.h"
19 #include "third_party/WebKit/public/web/WebLocalFrame.h" 20 #include "third_party/WebKit/public/web/WebLocalFrame.h"
20 #include "third_party/WebKit/public/web/WebView.h" 21 #include "third_party/WebKit/public/web/WebView.h"
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 return loader()->defer_strategy_; 290 return loader()->defer_strategy_;
290 } 291 }
291 int data_source_bitrate() { return data_source_->bitrate_; } 292 int data_source_bitrate() { return data_source_->bitrate_; }
292 double data_source_playback_rate() { return data_source_->playback_rate_; } 293 double data_source_playback_rate() { return data_source_->playback_rate_; }
293 int loader_bitrate() { return loader()->bitrate_; } 294 int loader_bitrate() { return loader()->bitrate_; }
294 double loader_playback_rate() { return loader()->playback_rate_; } 295 double loader_playback_rate() { return loader()->playback_rate_; }
295 bool is_local_source() { return data_source_->assume_fully_buffered(); } 296 bool is_local_source() { return data_source_->assume_fully_buffered(); }
296 void set_might_be_reused_from_cache_in_future(bool value) { 297 void set_might_be_reused_from_cache_in_future(bool value) {
297 loader()->might_be_reused_from_cache_in_future_ = value; 298 loader()->might_be_reused_from_cache_in_future_ = value;
298 } 299 }
300 GURL url() { return data_source_->url_; }
299 301
300 scoped_ptr<MockBufferedDataSource> data_source_; 302 scoped_ptr<MockBufferedDataSource> data_source_;
301 303
302 scoped_ptr<TestResponseGenerator> response_generator_; 304 scoped_ptr<TestResponseGenerator> response_generator_;
303 MockWebFrameClient client_; 305 MockWebFrameClient client_;
304 WebView* view_; 306 WebView* view_;
305 WebLocalFrame* frame_; 307 WebLocalFrame* frame_;
306 308
307 StrictMock<MockBufferedDataSourceHost> host_; 309 StrictMock<MockBufferedDataSourceHost> host_;
308 base::MessageLoop message_loop_; 310 base::MessageLoop message_loop_;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 bytes_received_ = 0; 494 bytes_received_ = 0;
493 loader()->didFail(url_loader(), response_generator_->GenerateError()); 495 loader()->didFail(url_loader(), response_generator_->GenerateError());
494 run_loop.Run(); 496 run_loop.Run();
495 Respond(response_generator_->Generate206(kDataSize)); 497 Respond(response_generator_->Generate206(kDataSize));
496 ReceiveData(kDataSize); 498 ReceiveData(kDataSize);
497 FinishLoading(); 499 FinishLoading();
498 EXPECT_FALSE(data_source_->loading()); 500 EXPECT_FALSE(data_source_->loading());
499 Stop(); 501 Stop();
500 } 502 }
501 503
504 #if defined(OS_ANDROID)
505 // If the initial response is a redirect, BDS saves it and uses it for future
506 // requests.
507 TEST_F(BufferedDataSourceTest, Http_InitialReponseRedirectsAreCached) {
508 Initialize(kHttpUrl, true);
509
510 WebURLResponse redirect =
511 response_generator_->GeneratePartial206(0, kDataSize - 1);
512 redirect.setURL(GURL(kHttpDifferentPathUrl));
513
514 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
515 Respond(redirect);
516 ASSERT_TRUE(url() == GURL(kHttpDifferentPathUrl));
517 }
518
519 TEST_F(BufferedDataSourceTest,
520 Http_RedirectsAfterTheInitialReponseAreNotCached) {
521 Initialize(kHttpUrl, true);
522
523 WebURLResponse response =
524 response_generator_->GeneratePartial206(0, kDataSize - 1);
525 response.setURL(GURL(kHttpUrl));
526
527 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
528 EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1));
529 EXPECT_CALL(host_, AddBufferedByteRange(kDataSize, kDataSize * 2 - 1));
530 EXPECT_CALL(*this, ReadCallback(kDataSize)).Times(2);
531
532 Respond(response);
533 ReadAt(0);
534 ReceiveData(kDataSize);
535
536 WebURLResponse redirect =
537 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1);
538 redirect.setURL(GURL(kHttpDifferentPathUrl));
539
540 ExpectCreateResourceLoader();
541 FinishLoading();
542 ReadAt(kDataSize);
543 Respond(redirect);
544 // The redirect isn't cached.
545 ASSERT_TRUE(url() == GURL(kHttpUrl));
546 ReceiveData(kDataSize);
547 FinishLoading();
548 Stop();
549 }
550
551 TEST_F(BufferedDataSourceTest, Http_ServiceWorkerRedirectsAreNotCached) {
552 Initialize(kHttpUrl, true);
553
554 WebURLResponse redirect =
555 response_generator_->GeneratePartial206(0, kDataSize - 1);
556 redirect.setURL(GURL(kHttpDifferentPathUrl));
557 redirect.setWasFetchedViaServiceWorker(true);
558
559 EXPECT_CALL(host_, SetTotalBytes(kFileSize));
560 Respond(redirect);
561 ASSERT_TRUE(url() == GURL(kHttpUrl));
562 }
563 #endif // defined(OS_ANDROID)
564
502 TEST_F(BufferedDataSourceTest, Http_PartialResponse) { 565 TEST_F(BufferedDataSourceTest, Http_PartialResponse) {
503 Initialize(kHttpUrl, true); 566 Initialize(kHttpUrl, true);
504 WebURLResponse response1 = 567 WebURLResponse response1 =
505 response_generator_->GeneratePartial206(0, kDataSize - 1); 568 response_generator_->GeneratePartial206(0, kDataSize - 1);
506 WebURLResponse response2 = 569 WebURLResponse response2 =
507 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1); 570 response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1);
508 // The origin URL of response1 and response2 are same. So no error should 571 // The origin URL of response1 and response2 are same. So no error should
509 // occur. 572 // occur.
510 ExecuteMixedResponseSuccessTest(response1, response2); 573 ExecuteMixedResponseSuccessTest(response1, response2);
511 } 574 }
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1043 while (active_loader() && !active_loader()->deferred()) { 1106 while (active_loader() && !active_loader()->deferred()) {
1044 ReceiveData(kDataSize); 1107 ReceiveData(kDataSize);
1045 bytes_received += kDataSize; 1108 bytes_received += kDataSize;
1046 } 1109 }
1047 EXPECT_GT(bytes_received, 0); 1110 EXPECT_GT(bytes_received, 0);
1048 EXPECT_LT(bytes_received + kDataSize, kFileSize); 1111 EXPECT_LT(bytes_received + kDataSize, kFileSize);
1049 EXPECT_FALSE(active_loader()); 1112 EXPECT_FALSE(active_loader());
1050 } 1113 }
1051 1114
1052 } // namespace media 1115 } // namespace media
OLDNEW
« no previous file with comments | « media/blink/buffered_data_source.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698