| 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 27ca29569d3af06ffd42a4d894cbcad78b265315..872eb9fc11c62f63a404346194a0b1e95f5e52c4 100644
|
| --- a/net/http/http_pipelined_network_transaction_unittest.cc
|
| +++ b/net/http/http_pipelined_network_transaction_unittest.cc
|
| @@ -113,11 +113,20 @@ class HttpPipelinedNetworkTransactionTest : public testing::Test {
|
| data_vector_.push_back(data);
|
| }
|
|
|
| - HttpRequestInfo* GetRequestInfo(const char* filename) {
|
| + enum RequestInfoOptions {
|
| + REQUEST_DEFAULT,
|
| + REQUEST_MAIN_RESOURCE,
|
| + };
|
| +
|
| + HttpRequestInfo* GetRequestInfo(
|
| + const char* filename, RequestInfoOptions options = REQUEST_DEFAULT) {
|
| std::string url = StringPrintf("http://localhost/%s", filename);
|
| HttpRequestInfo* request_info = new HttpRequestInfo;
|
| request_info->url = GURL(url);
|
| request_info->method = "GET";
|
| + if (options == REQUEST_MAIN_RESOURCE) {
|
| + request_info->load_flags = LOAD_MAIN_FRAME;
|
| + }
|
| request_info_vector_.push_back(request_info);
|
| return request_info;
|
| }
|
| @@ -176,32 +185,32 @@ class HttpPipelinedNetworkTransactionTest : public testing::Test {
|
| ExpectResponse("two.html", two_transaction, SYNCHRONOUS);
|
| }
|
|
|
| - void CompleteFourRequests() {
|
| + void CompleteFourRequests(RequestInfoOptions options) {
|
| scoped_ptr<HttpNetworkTransaction> one_transaction(
|
| new HttpNetworkTransaction(session_.get()));
|
| TestCompletionCallback one_callback;
|
| EXPECT_EQ(ERR_IO_PENDING,
|
| - one_transaction->Start(GetRequestInfo("one.html"),
|
| + one_transaction->Start(GetRequestInfo("one.html", options),
|
| one_callback.callback(), BoundNetLog()));
|
| EXPECT_EQ(OK, one_callback.WaitForResult());
|
|
|
| HttpNetworkTransaction two_transaction(session_.get());
|
| TestCompletionCallback two_callback;
|
| EXPECT_EQ(ERR_IO_PENDING,
|
| - two_transaction.Start(GetRequestInfo("two.html"),
|
| + two_transaction.Start(GetRequestInfo("two.html", options),
|
| two_callback.callback(), BoundNetLog()));
|
|
|
| HttpNetworkTransaction three_transaction(session_.get());
|
| TestCompletionCallback three_callback;
|
| EXPECT_EQ(ERR_IO_PENDING,
|
| - three_transaction.Start(GetRequestInfo("three.html"),
|
| + three_transaction.Start(GetRequestInfo("three.html", options),
|
| three_callback.callback(),
|
| BoundNetLog()));
|
|
|
| HttpNetworkTransaction four_transaction(session_.get());
|
| TestCompletionCallback four_callback;
|
| EXPECT_EQ(ERR_IO_PENDING,
|
| - four_transaction.Start(GetRequestInfo("four.html"),
|
| + four_transaction.Start(GetRequestInfo("four.html", options),
|
| four_callback.callback(), BoundNetLog()));
|
|
|
| ExpectResponse("one.html", *one_transaction.get(), SYNCHRONOUS);
|
| @@ -316,7 +325,50 @@ TEST_F(HttpPipelinedNetworkTransactionTest, ReusesOnSpaceAvailable) {
|
| };
|
| AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes));
|
|
|
| - CompleteFourRequests();
|
| + CompleteFourRequests(REQUEST_DEFAULT);
|
| +
|
| + ClientSocketPoolManager::set_max_sockets_per_group(
|
| + HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_sockets);
|
| +}
|
| +
|
| +TEST_F(HttpPipelinedNetworkTransactionTest, WontPipelineMainResource) {
|
| + int old_max_sockets = ClientSocketPoolManager::max_sockets_per_group(
|
| + HttpNetworkSession::NORMAL_SOCKET_POOL);
|
| + ClientSocketPoolManager::set_max_sockets_per_group(
|
| + HttpNetworkSession::NORMAL_SOCKET_POOL, 1);
|
| + Initialize(false);
|
| +
|
| + MockWrite writes[] = {
|
| + MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"),
|
| + MockWrite(SYNCHRONOUS, 4, "GET /two.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"),
|
| + MockWrite(SYNCHRONOUS, 8, "GET /three.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"),
|
| + MockWrite(SYNCHRONOUS, 12, "GET /four.html HTTP/1.1\r\n"
|
| + "Host: localhost\r\n"
|
| + "Connection: keep-alive\r\n\r\n"),
|
| + };
|
| + MockRead reads[] = {
|
| + MockRead(SYNCHRONOUS, 1, "HTTP/1.1 200 OK\r\n"),
|
| + MockRead(SYNCHRONOUS, 2, "Content-Length: 8\r\n\r\n"),
|
| + MockRead(SYNCHRONOUS, 3, "one.html"),
|
| + MockRead(SYNCHRONOUS, 5, "HTTP/1.1 200 OK\r\n"),
|
| + MockRead(SYNCHRONOUS, 6, "Content-Length: 8\r\n\r\n"),
|
| + MockRead(SYNCHRONOUS, 7, "two.html"),
|
| + MockRead(SYNCHRONOUS, 9, "HTTP/1.1 200 OK\r\n"),
|
| + MockRead(SYNCHRONOUS, 10, "Content-Length: 10\r\n\r\n"),
|
| + MockRead(SYNCHRONOUS, 11, "three.html"),
|
| + MockRead(SYNCHRONOUS, 13, "HTTP/1.1 200 OK\r\n"),
|
| + MockRead(SYNCHRONOUS, 14, "Content-Length: 9\r\n\r\n"),
|
| + MockRead(SYNCHRONOUS, 15, "four.html"),
|
| + };
|
| + AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes));
|
| +
|
| + CompleteFourRequests(REQUEST_MAIN_RESOURCE);
|
|
|
| ClientSocketPoolManager::set_max_sockets_per_group(
|
| HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_sockets);
|
| @@ -669,7 +721,7 @@ TEST_F(HttpPipelinedNetworkTransactionTest, PipelinesImmediatelyIfKnownGood) {
|
| };
|
| AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes));
|
|
|
| - CompleteFourRequests();
|
| + CompleteFourRequests(REQUEST_DEFAULT);
|
|
|
| HttpNetworkTransaction second_one_transaction(session_.get());
|
| TestCompletionCallback second_one_callback;
|
|
|