| 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 <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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |