Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(646)

Unified Diff: net/spdy/spdy_network_transaction_unittest.cc

Issue 2167853003: [DevTools] Always report encodedDataLength in Network.ResponseReceived. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 56cf0ca9ce5dc7e9c6c6258cdd773b2361e5b22e..6fd12eba584dddaa5a638c6b000d2656b2554956 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 d;
Ryan Hamilton 2016/09/07 16:54:50 ditto
allada 2016/09/07 18:14:57 Done.
+ 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, &d));
+ spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data);
+ spdy_url_request_context.socket_factory().AddSocketDataProvider(&data);
+
+ request->Start();
+ base::RunLoop().Run();
+
+ EXPECT_GT(request->GetTotalSentBytes(), 0);
Ryan Hamilton 2016/09/07 16:54:50 ditto
allada 2016/09/07 18:14:57 Done.
+ EXPECT_GT(request->GetTotalReceivedBytes(), 0);
+ 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 d;
Ryan Hamilton 2016/09/07 16:54:50 ditto
allada 2016/09/07 18:14:57 Done.
+ 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, &d));
+ spdy_url_request_context.socket_factory().AddSSLSocketDataProvider(&ssl_data);
+ spdy_url_request_context.socket_factory().AddSocketDataProvider(&data);
+
+ request->Start();
+ base::RunLoop().Run();
+
+ EXPECT_GT(request->GetTotalSentBytes(), 0);
Ryan Hamilton 2016/09/07 16:54:50 ditto
allada 2016/09/07 18:14:57 Done.
+ EXPECT_GT(request->GetTotalReceivedBytes(), 0);
+ 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));

Powered by Google App Engine
This is Rietveld 408576698