| Index: net/spdy/spdy_network_transaction_unittest.cc
|
| diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
|
| index d6b2f2a76c32878b3fd60d4dc25cb889d97ba52a..2138f08c8cdac5be820a9f05ca1872cedf3cf86d 100644
|
| --- a/net/spdy/spdy_network_transaction_unittest.cc
|
| +++ b/net/spdy/spdy_network_transaction_unittest.cc
|
| @@ -2105,6 +2105,128 @@ TEST_F(SpdyNetworkTransactionTest, DeleteSessionOnReadCallback) {
|
| helper.VerifyDataConsumed();
|
| }
|
|
|
| +TEST_F(SpdyNetworkTransactionTest, TestRawHeaderSizeSuccessfullRequest) {
|
| + SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
|
| + headers["user-agent"] = "";
|
| + headers["accept-encoding"] = "gzip, deflate";
|
| +
|
| + SpdySerializedFrame req(
|
| + spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
|
| + MockWrite writes[] = {
|
| + CreateMockWrite(req, 0),
|
| + };
|
| +
|
| + SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
|
| +
|
| + SpdySerializedFrame response_body_frame(
|
| + spdy_util_.ConstructSpdyDataFrame(1, "should not include", 18, true));
|
| +
|
| + MockRead response_headers(CreateMockRead(resp, 1));
|
| + MockRead reads[] = {
|
| + response_headers, CreateMockRead(response_body_frame, 2),
|
| + MockRead(ASYNC, 0, 0, 3) // EOF
|
| + };
|
| + SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
|
| +
|
| + TestDelegate delegate;
|
| + SpdyURLRequestContext spdy_url_request_context;
|
| + TestNetworkDelegate network_delegate;
|
| + spdy_url_request_context.set_network_delegate(&network_delegate);
|
| + SSLSocketDataProvider ssl_data(ASYNC, OK);
|
| + ssl_data.next_proto = kProtoHTTP2;
|
| +
|
| + std::unique_ptr<URLRequest> request(spdy_url_request_context.CreateRequest(
|
| + GURL(kDefaultUrl), DEFAULT_PRIORITY, &delegate));
|
| + spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data);
|
| + spdy_url_request_context.socket_factory().AddSocketDataProvider(&data);
|
| +
|
| + request->Start();
|
| + base::RunLoop().Run();
|
| +
|
| + EXPECT_LT(0, request->GetTotalSentBytes());
|
| + EXPECT_LT(0, request->GetTotalReceivedBytes());
|
| + EXPECT_EQ(network_delegate.total_network_bytes_sent(),
|
| + request->GetTotalSentBytes());
|
| + EXPECT_EQ(network_delegate.total_network_bytes_received(),
|
| + request->GetTotalReceivedBytes());
|
| + EXPECT_EQ(response_headers.data_len, request->raw_header_size());
|
| + EXPECT_TRUE(data.AllReadDataConsumed());
|
| + EXPECT_TRUE(data.AllWriteDataConsumed());
|
| +}
|
| +
|
| +TEST_F(SpdyNetworkTransactionTest,
|
| + TestRawHeaderSizeSuccessfullPushHeadersFirst) {
|
| + SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
|
| + headers["user-agent"] = "";
|
| + headers["accept-encoding"] = "gzip, deflate";
|
| +
|
| + SpdySerializedFrame req(
|
| + spdy_util_.ConstructSpdyHeaders(1, std::move(headers), LOWEST, true));
|
| + MockWrite writes[] = {
|
| + CreateMockWrite(req, 0),
|
| + };
|
| +
|
| + SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1));
|
| + SpdySerializedFrame response_body_frame(
|
| + spdy_util_.ConstructSpdyDataFrame(1, "should not include", 18, true));
|
| +
|
| + SpdyHeaderBlock push_headers;
|
| + spdy_util_.AddUrlToHeaderBlock(std::string(kDefaultUrl) + "b.dat",
|
| + &push_headers);
|
| +
|
| + SpdySerializedFrame push_init_frame(
|
| + spdy_util_.ConstructInitialSpdyPushFrame(std::move(push_headers), 2, 1));
|
| +
|
| + SpdySerializedFrame push_headers_frame(
|
| + spdy_util_.ConstructSpdyPushHeaders(2, nullptr, 0));
|
| +
|
| + SpdySerializedFrame push_body_frame(spdy_util_.ConstructSpdyDataFrame(
|
| + 2, "should not include either", 25, false));
|
| +
|
| + MockRead push_init_read(CreateMockRead(push_init_frame, 1));
|
| + MockRead response_headers(CreateMockRead(resp, 4));
|
| + // raw_header_size() will contain the size of the push promise frame
|
| + // initialization.
|
| + int expected_response_headers_size =
|
| + response_headers.data_len + push_init_read.data_len;
|
| +
|
| + MockRead reads[] = {
|
| + push_init_read,
|
| + CreateMockRead(push_headers_frame, 2),
|
| + CreateMockRead(push_body_frame, 3),
|
| + response_headers,
|
| + CreateMockRead(response_body_frame, 5),
|
| + MockRead(ASYNC, 0, 6) // EOF
|
| + };
|
| +
|
| + SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
|
| +
|
| + TestDelegate delegate;
|
| + SpdyURLRequestContext spdy_url_request_context;
|
| + TestNetworkDelegate network_delegate;
|
| + spdy_url_request_context.set_network_delegate(&network_delegate);
|
| + SSLSocketDataProvider ssl_data(ASYNC, OK);
|
| + ssl_data.next_proto = kProtoHTTP2;
|
| +
|
| + std::unique_ptr<URLRequest> request(spdy_url_request_context.CreateRequest(
|
| + GURL(kDefaultUrl), DEFAULT_PRIORITY, &delegate));
|
| + spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data);
|
| + spdy_url_request_context.socket_factory().AddSocketDataProvider(&data);
|
| +
|
| + request->Start();
|
| + base::RunLoop().Run();
|
| +
|
| + EXPECT_LT(0, request->GetTotalSentBytes());
|
| + EXPECT_LT(0, request->GetTotalReceivedBytes());
|
| + EXPECT_EQ(network_delegate.total_network_bytes_sent(),
|
| + request->GetTotalSentBytes());
|
| + EXPECT_EQ(network_delegate.total_network_bytes_received(),
|
| + request->GetTotalReceivedBytes());
|
| + EXPECT_EQ(expected_response_headers_size, request->raw_header_size());
|
| + EXPECT_TRUE(data.AllReadDataConsumed());
|
| + EXPECT_TRUE(data.AllWriteDataConsumed());
|
| +}
|
| +
|
| // Send a spdy request to www.example.org that gets redirected to www.foo.com.
|
| TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectGetRequest) {
|
| SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl));
|
| @@ -2165,7 +2287,7 @@ TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectGetRequest) {
|
| base::RunLoop().Run();
|
| EXPECT_EQ(1, d.response_started_count());
|
| EXPECT_FALSE(d.received_data_before_response());
|
| - EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status());
|
| + EXPECT_EQ(OK, r->status().error());
|
| std::string contents("hello!");
|
| EXPECT_EQ(contents, d.data_received());
|
| }
|
| @@ -2251,7 +2373,7 @@ TEST_F(SpdyNetworkTransactionTest, DISABLED_RedirectServerPush) {
|
| base::RunLoop().Run();
|
| EXPECT_EQ(1, d2.response_started_count());
|
| EXPECT_FALSE(d2.received_data_before_response());
|
| - EXPECT_EQ(URLRequestStatus::SUCCESS, r2->status().status());
|
| + EXPECT_EQ(OK, r2->status().error());
|
| std::string contents2("hello!");
|
| EXPECT_EQ(contents2, d2.data_received());
|
| }
|
|
|