| Index: media/blink/buffered_data_source_unittest.cc
|
| diff --git a/media/blink/buffered_data_source_unittest.cc b/media/blink/buffered_data_source_unittest.cc
|
| index 79445c178ea5d92d2445726e6af7bdd35a78f0b9..75f9aad31ec8d42496a9e74cdcc94903a393bbce 100644
|
| --- a/media/blink/buffered_data_source_unittest.cc
|
| +++ b/media/blink/buffered_data_source_unittest.cc
|
| @@ -296,6 +296,7 @@ class BufferedDataSourceTest : public testing::Test {
|
| void set_might_be_reused_from_cache_in_future(bool value) {
|
| loader()->might_be_reused_from_cache_in_future_ = value;
|
| }
|
| + GURL url() { return data_source_->url_; }
|
|
|
| std::unique_ptr<MockBufferedDataSource> data_source_;
|
|
|
| @@ -499,6 +500,65 @@ TEST_F(BufferedDataSourceTest, Http_RetryOnError) {
|
| Stop();
|
| }
|
|
|
| +// If the initial response is a redirect, BDS saves it and uses it for future
|
| +// requests.
|
| +TEST_F(BufferedDataSourceTest, Http_InitialReponseRedirectsAreCached) {
|
| + Initialize(kHttpUrl, true);
|
| +
|
| + WebURLResponse redirect =
|
| + response_generator_->GeneratePartial206(0, kDataSize - 1);
|
| + redirect.setURL(GURL(kHttpDifferentPathUrl));
|
| +
|
| + EXPECT_CALL(host_, SetTotalBytes(kFileSize));
|
| + Respond(redirect);
|
| + ASSERT_TRUE(url() == GURL(kHttpDifferentPathUrl));
|
| +}
|
| +
|
| +TEST_F(BufferedDataSourceTest,
|
| + Http_RedirectsAfterTheInitialReponseAreNotCached) {
|
| + Initialize(kHttpUrl, true);
|
| +
|
| + WebURLResponse response =
|
| + response_generator_->GeneratePartial206(0, kDataSize - 1);
|
| + response.setURL(GURL(kHttpUrl));
|
| +
|
| + EXPECT_CALL(host_, SetTotalBytes(kFileSize));
|
| + EXPECT_CALL(host_, AddBufferedByteRange(0, kDataSize - 1));
|
| + EXPECT_CALL(host_, AddBufferedByteRange(kDataSize, kDataSize * 2 - 1));
|
| + EXPECT_CALL(*this, ReadCallback(kDataSize)).Times(2);
|
| +
|
| + Respond(response);
|
| + ReadAt(0);
|
| + ReceiveData(kDataSize);
|
| +
|
| + WebURLResponse redirect =
|
| + response_generator_->GeneratePartial206(kDataSize, kDataSize * 2 - 1);
|
| + redirect.setURL(GURL(kHttpDifferentPathUrl));
|
| +
|
| + ExpectCreateResourceLoader();
|
| + FinishLoading();
|
| + ReadAt(kDataSize);
|
| + Respond(redirect);
|
| + // The redirect isn't cached.
|
| + ASSERT_TRUE(url() == GURL(kHttpUrl));
|
| + ReceiveData(kDataSize);
|
| + FinishLoading();
|
| + Stop();
|
| +}
|
| +
|
| +TEST_F(BufferedDataSourceTest, Http_ServiceWorkerRedirectsAreNotCached) {
|
| + Initialize(kHttpUrl, true);
|
| +
|
| + WebURLResponse redirect =
|
| + response_generator_->GeneratePartial206(0, kDataSize - 1);
|
| + redirect.setURL(GURL(kHttpDifferentPathUrl));
|
| + redirect.setWasFetchedViaServiceWorker(true);
|
| +
|
| + EXPECT_CALL(host_, SetTotalBytes(kFileSize));
|
| + Respond(redirect);
|
| + ASSERT_TRUE(url() == GURL(kHttpUrl));
|
| +}
|
| +
|
| TEST_F(BufferedDataSourceTest, Http_PartialResponse) {
|
| Initialize(kHttpUrl, true);
|
| WebURLResponse response1 =
|
|
|