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()); |