Index: net/quic/quic_stream_factory_test.cc |
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc |
index 43a22967b05314b949fe7afb1b02092c0e3d653d..6a1779aebfb0bca8d68c03a2c56390bafd32ac73 100644 |
--- a/net/quic/quic_stream_factory_test.cc |
+++ b/net/quic/quic_stream_factory_test.cc |
@@ -1334,6 +1334,62 @@ TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { |
EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
} |
+TEST_P(QuicStreamFactoryTest, OnSSLConfigChanged) { |
+ MockRead reads[] = { |
+ MockRead(ASYNC, 0, 0) // EOF |
+ }; |
+ scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); |
+ std::vector<MockWrite> writes; |
+ writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); |
+ DeterministicSocketData socket_data(reads, arraysize(reads), |
+ writes.empty() ? nullptr : &writes[0], |
+ writes.size()); |
+ socket_factory_.AddSocketDataProvider(&socket_data); |
+ socket_data.StopAfter(1); |
+ |
+ MockRead reads2[] = { |
+ MockRead(ASYNC, 0, 0) // EOF |
+ }; |
+ DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
+ socket_factory_.AddSocketDataProvider(&socket_data2); |
+ socket_data2.StopAfter(1); |
+ |
+ QuicStreamRequest request(&factory_); |
+ EXPECT_EQ(ERR_IO_PENDING, |
+ request.Request(host_port_pair_, is_https_, privacy_mode_, |
+ /*cert_verify_flags=*/0, host_port_pair_.host(), |
+ "GET", net_log_, callback_.callback())); |
+ |
+ EXPECT_EQ(OK, callback_.WaitForResult()); |
+ scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
+ HttpRequestInfo request_info; |
+ EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
+ net_log_, CompletionCallback())); |
+ |
+ factory_.OnSSLConfigChanged(); |
+ EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
+ stream->ReadResponseHeaders(callback_.callback())); |
+ EXPECT_FALSE(factory_.require_confirmation()); |
+ |
+ // Now attempting to request a stream to the same origin should create |
+ // a new session. |
+ |
+ QuicStreamRequest request2(&factory_); |
+ EXPECT_EQ(ERR_IO_PENDING, |
+ request2.Request(host_port_pair_, is_https_, privacy_mode_, |
+ /*cert_verify_flags=*/0, host_port_pair_.host(), |
+ "GET", net_log_, callback_.callback())); |
+ |
+ EXPECT_EQ(OK, callback_.WaitForResult()); |
+ stream = request2.ReleaseStream(); |
+ stream.reset(); // Will reset stream 3. |
+ |
+ EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
+ EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
+ EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
+ EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
+} |
+ |
TEST_P(QuicStreamFactoryTest, OnCertAdded) { |
MockRead reads[] = { |
MockRead(ASYNC, 0, 0) // EOF |