Chromium Code Reviews| Index: net/url_request/url_request_unittest.cc |
| diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc |
| index c1178fe04dadabfd1d6b46e6cb670bddf5c8a4ab..a7afbde4e566ab5248054c96c339dc33fb73fed2 100644 |
| --- a/net/url_request/url_request_unittest.cc |
| +++ b/net/url_request/url_request_unittest.cc |
| @@ -4297,6 +4297,59 @@ TEST_F(URLRequestTestHTTP, DeferredRedirect_GetFullRequestHeaders) { |
| } |
| } |
| +// Tests that a deferred redirect releases its lock on the cache. |
| +TEST_F(URLRequestTestHTTP, DeferredRedirect_ReleaseCacheEntry) { |
|
rvargas (doing something else)
2013/09/18 18:37:10
Yes, I meant removing this test.
davidben
2013/09/18 19:35:43
Done.
|
| + ASSERT_TRUE(test_server_.Start()); |
| + |
| + // First test the cold cache case. |
| + { |
| + // First, fire a request and (indefinitely) pause its redirect. |
| + TestDelegate pausing_delegate; |
| + pausing_delegate.set_quit_on_redirect(true); |
| + GURL test_url(test_server_.GetURL("files/redirect-test.html")); |
| + URLRequest paused_req(test_url, &pausing_delegate, &default_context_); |
| + paused_req.Start(); |
| + base::RunLoop().Run(); |
| + EXPECT_EQ(1, pausing_delegate.received_redirect_count()); |
| + |
| + // This should test the cold cache case. |
| + EXPECT_FALSE(paused_req.was_cached()); |
| + |
| + // Now, fire a second at the same. It should not get stuck. |
| + TestDelegate delegate; |
| + URLRequest req(test_url, &delegate, &default_context_); |
| + req.Start(); |
| + base::RunLoop().Run(); |
| + EXPECT_EQ(1, delegate.response_started_count()); |
| + EXPECT_FALSE(delegate.received_data_before_response()); |
| + EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); |
| + } |
| + |
| + // Repeat, now with the cache warmed from the last run. |
| + { |
| + // First, fire a request and (indefinitely) pause its redirect. |
| + TestDelegate pausing_delegate; |
| + pausing_delegate.set_quit_on_redirect(true); |
| + GURL test_url(test_server_.GetURL("files/redirect-test.html")); |
| + URLRequest paused_req(test_url, &pausing_delegate, &default_context_); |
| + paused_req.Start(); |
| + base::RunLoop().Run(); |
| + EXPECT_EQ(1, pausing_delegate.received_redirect_count()); |
| + |
| + // This should test the cold cache case. |
| + EXPECT_TRUE(paused_req.was_cached()); |
| + |
| + // Now, fire a second at the same. It should not get stuck. |
| + TestDelegate delegate; |
| + URLRequest req(test_url, &delegate, &default_context_); |
| + req.Start(); |
| + base::RunLoop().Run(); |
| + EXPECT_EQ(1, delegate.response_started_count()); |
| + EXPECT_FALSE(delegate.received_data_before_response()); |
| + EXPECT_EQ(URLRequestStatus::SUCCESS, req.status().status()); |
| + } |
| +} |
| + |
| TEST_F(URLRequestTestHTTP, CancelDeferredRedirect) { |
| ASSERT_TRUE(test_server_.Start()); |