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

Unified Diff: net/quic/quic_stream_factory_test.cc

Issue 2113873002: Add PrivacyMode QUIC pooling unittest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 106882003805807dc8a2d858e94b68d71403716c..c8da53ce761c46ee916fa88bd5dfb89cdd6bf715 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -4277,6 +4277,74 @@ TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) {
EXPECT_TRUE(AllDataConsumed());
}
+// QuicStreamRequest is not pooled if PrivacyMode differs.
+TEST_P(QuicStreamFactoryWithDestinationTest, DifferentPrivacyMode) {
+ Initialize();
+
+ GURL url1("https://www.example.org/");
+ GURL url2("https://mail.example.org/");
+ origin1_ = HostPortPair::FromURL(url1);
+ origin2_ = HostPortPair::FromURL(url2);
+
+ HostPortPair destination = GetDestination();
+
+ scoped_refptr<X509Certificate> cert(
+ ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
+ bool unused;
+ ASSERT_TRUE(cert->VerifyNameMatch(origin1_.host(), &unused));
+ ASSERT_TRUE(cert->VerifyNameMatch(origin2_.host(), &unused));
+ ASSERT_FALSE(cert->VerifyNameMatch(kDifferentHostname, &unused));
+
+ ProofVerifyDetailsChromium verify_details1;
+ verify_details1.cert_verify_result.verified_cert = cert;
+ verify_details1.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details1);
+
+ ProofVerifyDetailsChromium verify_details2;
+ verify_details2.cert_verify_result.verified_cert = cert;
+ verify_details2.cert_verify_result.is_issued_by_known_root = true;
+ crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2);
+
+ AddHangingSocketData();
+ AddHangingSocketData();
+
+ QuicStreamRequest request1(factory_.get());
+ EXPECT_EQ(ERR_IO_PENDING,
+ request1.Request(destination, PRIVACY_MODE_DISABLED,
+ /*cert_verify_flags=*/0, url1, "GET", net_log_,
+ callback_.callback()));
+ EXPECT_EQ(OK, callback_.WaitForResult());
+ std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream();
+ EXPECT_TRUE(stream1.get());
+ EXPECT_TRUE(HasActiveSession(origin1_));
+
+ TestCompletionCallback callback2;
+ QuicStreamRequest request2(factory_.get());
+ EXPECT_EQ(ERR_IO_PENDING,
+ request2.Request(destination, PRIVACY_MODE_ENABLED,
+ /*cert_verify_flags=*/0, url2, "GET", net_log_,
+ callback2.callback()));
+ EXPECT_EQ(OK, callback2.WaitForResult());
+ std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream();
+ EXPECT_TRUE(stream2.get());
+
+ // |request2| does not pool to the first session, because PrivacyMode does not
+ // match. Instead, another session is opened to the same destination, but
+ // with a different QuicServerId.
+ QuicChromiumClientSession* session1 =
+ QuicHttpStreamPeer::GetSession(stream1.get());
+ QuicChromiumClientSession* session2 =
+ QuicHttpStreamPeer::GetSession(stream2.get());
+ EXPECT_NE(session1, session2);
+
+ EXPECT_EQ(QuicServerId(origin1_, PRIVACY_MODE_DISABLED),
+ session1->server_id());
+ EXPECT_EQ(QuicServerId(origin2_, PRIVACY_MODE_ENABLED),
+ session2->server_id());
+
+ EXPECT_TRUE(AllDataConsumed());
+}
+
// QuicStreamRequest is not pooled if certificate does not match its origin.
TEST_P(QuicStreamFactoryWithDestinationTest, DisjointCertificate) {
Initialize();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698