diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/net/spdy/spdy_stream_unittest.cc | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-chromium-85-based.tar.gz |
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/spdy/spdy_stream_unittest.cc')
-rw-r--r-- | chromium/net/spdy/spdy_stream_unittest.cc | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/chromium/net/spdy/spdy_stream_unittest.cc b/chromium/net/spdy/spdy_stream_unittest.cc index 0f56bcdb5a8..c3fad7a4173 100644 --- a/chromium/net/spdy/spdy_stream_unittest.cc +++ b/chromium/net/spdy/spdy_stream_unittest.cc @@ -1084,6 +1084,69 @@ TEST_F(SpdyStreamTest, InformationalHeaders) { EXPECT_TRUE(data.AllReadDataConsumed()); } +// 103 Early Hints hasn't been implemented yet, but we collect timing +// information for the experiment (https://crbug.com/1093693). This tests it. +TEST_F(SpdyStreamTest, EarlyHints) { + spdy::SpdySerializedFrame req( + spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST)); + AddWrite(req); + + // Serve the early hints. + spdy::SpdyHeaderBlock informational_headers; + informational_headers[":status"] = "103"; + spdy::SpdySerializedFrame informational_response( + spdy_util_.ConstructSpdyResponseHeaders( + 1, std::move(informational_headers), false)); + AddRead(informational_response); + + spdy::SpdySerializedFrame reply( + spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); + AddRead(reply); + + spdy::SpdySerializedFrame body( + spdy_util_.ConstructSpdyDataFrame(1, kPostBodyStringPiece, true)); + AddRead(body); + + AddReadEOF(); + + SequencedSocketData data(GetReads(), GetWrites()); + MockConnect connect_data(SYNCHRONOUS, OK); + data.set_connect_data(connect_data); + session_deps_.socket_factory->AddSocketDataProvider(&data); + + AddSSLSocketData(); + + base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); + + base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( + SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource()); + ASSERT_TRUE(stream); + EXPECT_EQ(kDefaultUrl, stream->url().spec()); + + StreamDelegateDoNothing delegate(stream); + stream->SetDelegate(&delegate); + + spdy::SpdyHeaderBlock headers( + spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); + EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), + NO_MORE_DATA_TO_SEND)); + + EXPECT_THAT(delegate.WaitForClose(), IsOk()); + EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy::kHttp2StatusHeader)); + EXPECT_EQ(std::string(kPostBody, kPostBodyLength), + delegate.TakeReceivedData()); + + // Check if the timing of the early hints response is captured. + const LoadTimingInfo& load_timing_info = delegate.GetLoadTimingInfo(); + EXPECT_FALSE(load_timing_info.first_early_hints_time.is_null()); + + // Finish async network reads and writes. + base::RunLoop().RunUntilIdle(); + + EXPECT_TRUE(data.AllWriteDataConsumed()); + EXPECT_TRUE(data.AllReadDataConsumed()); +} + TEST_F(SpdyStreamTest, StatusMustBeNumber) { spdy::SpdySerializedFrame req( spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST)); |