Index: net/http/http_pipelined_network_transaction_unittest.cc |
diff --git a/net/http/http_pipelined_network_transaction_unittest.cc b/net/http/http_pipelined_network_transaction_unittest.cc |
index 8eba31a30497644a3eeb0c37786e9e3ab4f5ab6d..c342b2c84475e4ce578b0f01c51e166bbbf62b2c 100644 |
--- a/net/http/http_pipelined_network_transaction_unittest.cc |
+++ b/net/http/http_pipelined_network_transaction_unittest.cc |
@@ -419,6 +419,49 @@ TEST_F(HttpPipelinedNetworkTransactionTest, SendErrorEvictsToNewPipeline) { |
ExpectResponse("two.html", two_transaction); |
} |
+TEST_F(HttpPipelinedNetworkTransactionTest, RedirectDrained) { |
+ Initialize(); |
+ |
+ MockWrite writes[] = { |
+ MockWrite(false, 0, "GET /redirect.html HTTP/1.1\r\n" |
+ "Host: localhost\r\n" |
+ "Connection: keep-alive\r\n\r\n"), |
+ MockWrite(false, 3, "GET /two.html HTTP/1.1\r\n" |
+ "Host: localhost\r\n" |
+ "Connection: keep-alive\r\n\r\n"), |
+ }; |
+ MockRead reads[] = { |
+ MockRead(false, 1, "HTTP/1.1 302 OK\r\n"), |
+ MockRead(false, 2, "Content-Length: 8\r\n\r\n"), |
+ MockRead(true, 4, "redirect"), |
+ MockRead(false, 5, "HTTP/1.1 200 OK\r\n"), |
+ MockRead(false, 6, "Content-Length: 8\r\n\r\n"), |
+ MockRead(false, 7, "two.html"), |
+ }; |
+ AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes)); |
+ |
+ scoped_ptr<HttpNetworkTransaction> one_transaction( |
+ new HttpNetworkTransaction(session_.get())); |
+ TestOldCompletionCallback one_callback; |
+ EXPECT_EQ(ERR_IO_PENDING, |
+ one_transaction->Start(GetRequestInfo("redirect.html"), |
+ &one_callback, BoundNetLog())); |
+ EXPECT_EQ(OK, one_callback.WaitForResult()); |
+ |
+ HttpNetworkTransaction two_transaction(session_.get()); |
+ TestOldCompletionCallback two_callback; |
+ EXPECT_EQ(ERR_IO_PENDING, |
+ two_transaction.Start(GetRequestInfo("two.html"), &two_callback, |
+ BoundNetLog())); |
+ |
+ one_transaction.reset(); |
+ data_vector_[0]->RunFor(2); |
+ data_vector_[0]->SetStop(10); |
+ |
+ EXPECT_EQ(OK, two_callback.WaitForResult()); |
+ ExpectResponse("two.html", two_transaction); |
+} |
+ |
TEST_F(HttpPipelinedNetworkTransactionTest, BasicHttpAuthentication) { |
Initialize(); |