Make QUIC tests use certs which are valid for the hosts they connect to.

BUG=

Review URL: https://codereview.chromium.org/1680243005

Cr-Commit-Position: refs/heads/master@{#374803}
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
index 275d9d9..6cf98a1 100644
--- a/net/quic/quic_http_stream_test.cc
+++ b/net/quic/quic_http_stream_test.cc
@@ -60,7 +60,7 @@
 namespace {
 
 const char kUploadData[] = "Really nifty data!";
-const char kDefaultServerHostName[] = "www.google.com";
+const char kDefaultServerHostName[] = "www.example.org";
 const uint16_t kDefaultServerPort = 80;
 
 class TestQuicConnection : public QuicConnection {
@@ -379,7 +379,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -428,7 +428,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -478,7 +478,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -498,7 +498,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -525,7 +525,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -555,7 +555,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -589,7 +589,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -623,7 +623,7 @@
       new UploadBytesElementReader(kUploadData, strlen(kUploadData))));
   ElementsUploadDataStream upload_data_stream(std::move(element_readers), 0);
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(CompletionCallback()));
 
@@ -685,7 +685,7 @@
   upload_data_stream.AppendData(kUploadData, chunk_size, false);
 
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(
                     TestCompletionCallback().callback()));
@@ -752,7 +752,7 @@
   upload_data_stream.AppendData(kUploadData, chunk_size, false);
 
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(
                     TestCompletionCallback().callback()));
@@ -814,7 +814,7 @@
   ChunkedUploadDataStream upload_data_stream(0);
 
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(
                     TestCompletionCallback().callback()));
@@ -874,7 +874,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, DEFAULT_PRIORITY, net_log_,
                                           callback_.callback()));
@@ -912,7 +912,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_,
                                           callback_.callback()));
@@ -961,7 +961,7 @@
   Initialize();
 
   request_.method = "GET";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
 
   EXPECT_EQ(OK, stream_->InitializeStream(&request_, MEDIUM, net_log_,
                                           callback_.callback()));
@@ -992,7 +992,7 @@
   ChunkedUploadDataStream upload_data_stream(0);
 
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(
                     TestCompletionCallback().callback()));
@@ -1016,7 +1016,7 @@
   upload_data_stream.AppendData(kUploadData, chunk_size, false);
 
   request_.method = "POST";
-  request_.url = GURL("http://www.google.com/");
+  request_.url = GURL("http://www.example.org/");
   request_.upload_data_stream = &upload_data_stream;
   ASSERT_EQ(OK, request_.upload_data_stream->Init(
                     TestCompletionCallback().callback()));
diff --git a/net/quic/quic_network_transaction_unittest.cc b/net/quic/quic_network_transaction_unittest.cc
index e120c24..3a3b6a10 100644
--- a/net/quic/quic_network_transaction_unittest.cc
+++ b/net/quic/quic_network_transaction_unittest.cc
@@ -72,7 +72,7 @@
 static const char kQuicAlternativeServiceDifferentPortHeader[] =
     "Alt-Svc: quic=\":137\"\r\n\r\n";
 
-const char kDefaultServerHostName[] = "mail.example.com";
+const char kDefaultServerHostName[] = "mail.example.org";
 
 }  // namespace
 
@@ -205,7 +205,7 @@
     clock_->AdvanceTime(QuicTime::Delta::FromMilliseconds(20));
 
     scoped_refptr<X509Certificate> cert(
-        ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
+        ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
     verify_details_.cert_verify_result.verified_cert = cert;
     verify_details_.cert_verify_result.is_issued_by_known_root = true;
     crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
@@ -433,9 +433,9 @@
     params_.http_server_properties = http_server_properties_.GetWeakPtr();
     params_.quic_supported_versions = SupportedVersions(GetParam());
     for (const char* host :
-         {kDefaultServerHostName, "www.example.com", "news.example.com",
-          "bar.example.com", "foo.example.com", "www.example.org",
-          "invalid.example.org", "docs.example.org"}) {
+         {kDefaultServerHostName, "www.example.org", "news.example.org",
+          "bar.example.org", "foo.example.org", "invalid.example.org",
+          "mail.example.com"}) {
       params_.quic_host_whitelist.insert(host);
     }
 
@@ -603,7 +603,7 @@
 
 TEST_P(QuicNetworkTransactionTest, ForceQuic) {
   params_.origin_to_force_quic_on =
-      HostPortPair::FromString("mail.example.com:443");
+      HostPortPair::FromString("mail.example.org:443");
 
   MockQuicData mock_quic_data;
   mock_quic_data.AddWrite(
@@ -670,7 +670,7 @@
 TEST_P(QuicNetworkTransactionTest, QuicProxy) {
   params_.enable_quic_for_proxies = true;
   proxy_service_ =
-      ProxyService::CreateFixedFromPacResult("QUIC mail.example.com:70");
+      ProxyService::CreateFixedFromPacResult("QUIC mail.example.org:70");
 
   MockQuicData mock_quic_data;
   mock_quic_data.AddWrite(
@@ -690,7 +690,7 @@
   // There is no need to set up an alternate protocol job, because
   // no attempt will be made to speak to the proxy over TCP.
 
-  request_.url = GURL("http://mail.example.com/");
+  request_.url = GURL("http://mail.example.org/");
   CreateSession();
 
   SendRequestAndExpectQuicResponseFromProxyOnPort("hello!", 70);
@@ -701,7 +701,7 @@
 // connection through a QUIC proxy, the certificate exhibited by the proxy is
 // checked against the proxy hostname, not the origin hostname.
 TEST_P(QuicNetworkTransactionTest, QuicProxyWithCert) {
-  const std::string origin_host = "news.example.com";
+  const std::string origin_host = "mail.example.com";
   const std::string proxy_host = "www.example.org";
 
   params_.enable_quic_for_proxies = true;
@@ -723,7 +723,7 @@
   mock_quic_data.AddSocketDataToFactory(&socket_factory_);
 
   scoped_refptr<X509Certificate> cert(
-      ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
+      ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
   ASSERT_TRUE(cert.get());
   // This certificate is valid for the proxy, but not for the origin.
   bool common_name_fallback_used;
@@ -745,7 +745,7 @@
 
 TEST_P(QuicNetworkTransactionTest, ForceQuicWithErrorConnecting) {
   params_.origin_to_force_quic_on =
-      HostPortPair::FromString("mail.example.com:443");
+      HostPortPair::FromString("mail.example.org:443");
 
   MockQuicData mock_quic_data1;
   mock_quic_data1.AddRead(ASYNC, ERR_SOCKET_NOT_CONNECTED);
@@ -891,7 +891,7 @@
 TEST_P(QuicNetworkTransactionTest, UseExistingAlternativeServiceForQuic) {
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
-      MockRead("Alt-Svc: quic=\"foo.example.com:443\", quic=\":444\"\r\n\r\n"),
+      MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":444\"\r\n\r\n"),
       MockRead("hello world"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
@@ -904,7 +904,7 @@
   QuicStreamOffset request_header_offset = 0;
   QuicStreamOffset response_header_offset = 0;
   // First QUIC request data.
-  // Open a session to foo.example.com:443 using the first entry of the
+  // Open a session to foo.example.org:443 using the first entry of the
   // alternative service list.
   MockQuicData mock_quic_data;
   mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
@@ -912,8 +912,8 @@
       GetRequestHeaders("GET", "https", "/"), &request_header_offset));
 
   std::string alt_svc_list =
-      "quic=\"mail.example.com:444\", quic=\"foo.example.com:443\", "
-      "quic=\"bar.example.com:445\"";
+      "quic=\"mail.example.org:444\", quic=\"foo.example.org:443\", "
+      "quic=\"bar.example.org:445\"";
   mock_quic_data.AddRead(ConstructResponseHeadersPacket(
       1, kClientDataStreamId1, false, false,
       GetResponseHeaders("200 OK", alt_svc_list), &response_header_offset));
@@ -953,7 +953,7 @@
 TEST_P(QuicNetworkTransactionTest, UseFirstExistingAlternativeServiceForQuic) {
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
-      MockRead("Alt-Svc: quic=\"foo.example.com:443\", quic=\":446\"\r\n\r\n"),
+      MockRead("Alt-Svc: quic=\"foo.example.org:443\", quic=\":446\"\r\n\r\n"),
       MockRead("hello world"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
@@ -972,14 +972,14 @@
   MockQuicData mock_quic_data2;
   crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details_);
   // First QUIC request data.
-  // Open a QUIC session to foo.example.com:443.
+  // Open a QUIC session to foo.example.org:443.
   mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
       1, kClientDataStreamId1, true, true,
       GetRequestHeaders("GET", "https", "/"), &request_header_offset));
 
   std::string alt_svc_list =
-      "quic=\"bar.example.com:444\", quic=\"frog.example.com:445\", "
-      "quic=\"mail.example.com:446\"";
+      "quic=\"bar.example.org:444\", quic=\"frog.example.org:445\", "
+      "quic=\"mail.example.org:446\"";
   // Response header from the server resets the alt_svc list for the origin.
   mock_quic_data.AddRead(ConstructResponseHeadersPacket(
       1, kClientDataStreamId1, false, false,
@@ -989,15 +989,15 @@
   mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
 
   // Second QUIC request data.
-  // Existing QUIC session to foo.example.com is not viable from the updated
+  // Existing QUIC session to foo.example.org is not viable from the updated
   // alt_svc. Unable to pool the existing QUIC session.
-  // Open a new QUIC session to bar.example.com:443.
+  // Open a new QUIC session to bar.example.org:443.
   mock_quic_data2.AddWrite(ConstructRequestHeadersPacket(
       1, kClientDataStreamId1, true, true,
       GetRequestHeaders("GET", "https", "/"), &maker));
   alt_svc_list =
-      "quic=\"foo.example.com:443\", quic=\"mail.example.com:446\", "
-      "quic=\"bar.example.com:444\"";
+      "quic=\"foo.example.org:443\", quic=\"mail.example.org:446\", "
+      "quic=\"bar.example.org:444\"";
   // Response header from the server resets the alt_svc list for the origin.
   mock_quic_data2.AddRead(ConstructResponseHeadersPacket(
       1, kClientDataStreamId1, false, false,
@@ -1009,7 +1009,7 @@
   mock_quic_data2.AddRead(ASYNC, 0);               // EOF
 
   // Third QUIC request data.
-  // Connection pooling, using the first existing session to foo.example.com
+  // Connection pooling, using the first existing session to foo.example.org
   mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
       3, kClientDataStreamId2, false, true,
       GetRequestHeaders("GET", "https", "/"), &request_header_offset));
@@ -1043,14 +1043,13 @@
 // if this is also the first existing QUIC session.
 TEST_P(QuicNetworkTransactionTest,
        UseSharedExistingAlternativeServiceForQuicWithValidCert) {
-  // Default cert is valid for the following origins:
-  // mail.example.com, mail.example.org, and www.example.org.
+  // Default cert is valid for *.example.org
 
-  // HTTP data for request to mail.example.com.
+  // HTTP data for request to www.example.org.
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
       MockRead("Alt-Svc: quic=\":443\"\r\n\r\n"),
-      MockRead("hello world from mail.example.com"),
+      MockRead("hello world from www.example.org"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
 
@@ -1062,7 +1061,7 @@
   // HTTP data for request to mail.example.org.
   MockRead http_reads2[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
-      MockRead("Alt-Svc: quic=\":444\", quic=\"mail.example.com:443\"\r\n\r\n"),
+      MockRead("Alt-Svc: quic=\":444\", quic=\"www.example.org:443\"\r\n\r\n"),
       MockRead("hello world from mail.example.org"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
@@ -1075,8 +1074,8 @@
   QuicStreamOffset request_header_offset = 0;
   QuicStreamOffset response_header_offset = 0;
 
-  QuicTestPacketMaker maker(GetParam(), 0, clock_, kDefaultServerHostName);
-  maker.set_hostname("mail.example.org");
+  QuicTestPacketMaker maker(GetParam(), 0, clock_, "mail.example.org");
+  maker_.set_hostname("www.example.org");
   MockQuicData mock_quic_data;
 
   // First QUIC request data.
@@ -1090,7 +1089,6 @@
   mock_quic_data.AddRead(ConstructDataPacket(2, kClientDataStreamId1, false,
                                              true, 0, "hello from mail QUIC!"));
   mock_quic_data.AddWrite(ConstructAckPacket(2, 1));
-
   // Second QUIC request data.
   mock_quic_data.AddWrite(ConstructRequestHeadersPacket(
       3, kClientDataStreamId2, false, true,
@@ -1111,16 +1109,17 @@
   CreateSessionWithNextProtos();
 
   // Send two HTTP requests, responses set up alt-svc lists for the origins.
-  SendRequestAndExpectHttpResponse("hello world from mail.example.com");
+  request_.url = GURL("https://www.example.org/");
+  SendRequestAndExpectHttpResponse("hello world from www.example.org");
   request_.url = GURL("https://mail.example.org/");
   SendRequestAndExpectHttpResponse("hello world from mail.example.org");
 
-  // Open a QUIC session to mail.example.com:443 when making request
-  // to mail.example.com.
-  request_.url = GURL("https://mail.example.com/");
+  // Open a QUIC session to mail.example.org:443 when making request
+  // to mail.example.org.
+  request_.url = GURL("https://www.example.org/");
   SendRequestAndExpectQuicResponseOnPort("hello from mail QUIC!", 443);
 
-  // Uses the existing QUIC session when making request to mail.example.org.
+  // Uses the existing QUIC session when making request to www.example.org.
   request_.url = GURL("https://mail.example.org/");
   SendRequestAndExpectQuicResponseOnPort("hello from mail QUIC!", 443);
 }
@@ -1130,15 +1129,14 @@
 // if the cert is NOT valid, should ignore this QUIC session.
 TEST_P(QuicNetworkTransactionTest,
        DoNotUseSharedExistingAlternativeServiceForQuicWithInvalidCert) {
-  // Default cert is only valid for the following origins:
-  // mail.example.com, mail.example.org, and www.example.org.
-  // NOT valid for docs.example.org.
+  // Default cert is valid *.example.org
+  // NOT valid for mail.example.com.
 
-  // HTTP data for request to mail.example.com.
+  // HTTP data for request to mail.example.org.
   MockRead http_reads[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
       MockRead("Alt-Svc: quic=\":443\"\r\n\r\n"),
-      MockRead("hello world from mail.example.com"),
+      MockRead("hello world from mail.example.org"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
 
@@ -1147,11 +1145,11 @@
   socket_factory_.AddSocketDataProvider(&http_data);
   socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
 
-  // HTTP data for request to docs.example.org.
+  // HTTP data for request to mail.example.com.
   MockRead http_reads2[] = {
       MockRead("HTTP/1.1 200 OK\r\n"),
-      MockRead("Alt-Svc: quic=\":444\", quic=\"mail.example.com:443\"\r\n\r\n"),
-      MockRead("hello world from docs.example.org"),
+      MockRead("Alt-Svc: quic=\":444\", quic=\"mail.example.org:443\"\r\n\r\n"),
+      MockRead("hello world from mail.example.com"),
       MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ),
       MockRead(ASYNC, OK)};
 
@@ -1160,15 +1158,15 @@
   socket_factory_.AddSocketDataProvider(&http_data2);
   socket_factory_.AddSSLSocketDataProvider(&ssl_data_);
 
-  QuicTestPacketMaker maker(GetParam(), 0, clock_, kDefaultServerHostName);
-  maker.set_hostname("docs.example.org");
+  QuicTestPacketMaker maker(GetParam(), 0, clock_, "mail.example.org");
+  maker.set_hostname("mail.example.com");
   MockQuicData mock_quic_data;
   MockQuicData mock_quic_data2;
 
   // Adding a valid cert for *.example.org but not mail.example.com.
   ProofVerifyDetailsChromium verify_details;
   scoped_refptr<X509Certificate> cert(
-      ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
+      ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
   verify_details.cert_verify_result.verified_cert = cert;
   verify_details.cert_verify_result.is_issued_by_known_root = true;
   crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details);
@@ -1207,17 +1205,17 @@
   CreateSessionWithNextProtos();
 
   // Send HTTP requests, responses set up the alt-svc lists for the origins.
-  SendRequestAndExpectHttpResponse("hello world from mail.example.com");
-  request_.url = GURL("https://docs.example.org/");
-  SendRequestAndExpectHttpResponse("hello world from docs.example.org");
-
-  // Open a QUIC session to mail.example.com:443 when making request
-  // to mail.example.com.
+  SendRequestAndExpectHttpResponse("hello world from mail.example.org");
   request_.url = GURL("https://mail.example.com/");
+  SendRequestAndExpectHttpResponse("hello world from mail.example.com");
+
+  // Open a QUIC session to mail.example.org:443 when making request
+  // to mail.example.org.
+  request_.url = GURL("https://mail.example.org/");
   SendRequestAndExpectQuicResponseOnPort("hello from mail QUIC!", 443);
 
-  // Open another new QUIC session to docs.example.org:444.
-  request_.url = GURL("https://docs.example.org/");
+  // Open another new QUIC session to mail.example.com:444.
+  request_.url = GURL("https://mail.example.com/");
   SendRequestAndExpectQuicResponseOnPort("hello from docs QUIC!", 444);
 }
 
@@ -1650,8 +1648,7 @@
     : public QuicNetworkTransactionTest {
  public:
   void Run(bool valid) {
-    HostPortPair origin(valid ? "mail.example.org" : "invalid.example.org",
-                        443);
+    HostPortPair origin(valid ? "mail.example.org" : "mail.example.com", 443);
     HostPortPair alternative("www.example.org", 443);
     std::string url("https://");
     url.append(origin.host());
@@ -1672,7 +1669,7 @@
     mock_quic_data.AddSocketDataToFactory(&socket_factory_);
 
     scoped_refptr<X509Certificate> cert(
-        ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"));
+        ImportCertFromFile(GetTestCertsDirectory(), "wildcard.pem"));
     ASSERT_TRUE(cert.get());
     bool common_name_fallback_used;
     EXPECT_EQ(valid,
@@ -1735,7 +1732,7 @@
 
   MockWrite http_writes[] = {
       MockWrite(SYNCHRONOUS, 0, "GET / HTTP/1.1\r\n"),
-      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.com\r\n"),
+      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.org\r\n"),
       MockWrite(SYNCHRONOUS, 2, "Connection: keep-alive\r\n\r\n")};
 
   MockRead http_reads[] = {
@@ -1824,9 +1821,9 @@
   // without racing an HTTP connection, we need the host resolution to happen
   // synchronously.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
@@ -1841,8 +1838,8 @@
 
   // Since we are using a proxy, the QUIC job will not succeed.
   MockWrite http_writes[] = {
-      MockWrite(SYNCHRONOUS, 0, "GET http://mail.example.com/ HTTP/1.1\r\n"),
-      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.com\r\n"),
+      MockWrite(SYNCHRONOUS, 0, "GET http://mail.example.org/ HTTP/1.1\r\n"),
+      MockWrite(SYNCHRONOUS, 1, "Host: mail.example.org\r\n"),
       MockWrite(SYNCHRONOUS, 2, "Proxy-Connection: keep-alive\r\n\r\n")};
 
   MockRead http_reads[] = {
@@ -1858,14 +1855,14 @@
   // without racing an HTTP connection, we need the host resolution to happen
   // synchronously.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
 
-  request_.url = GURL("http://mail.example.com/");
+  request_.url = GURL("http://mail.example.org/");
   CreateSessionWithNextProtos();
   AddQuicAlternateProtocolMapping(MockCryptoClientStream::ZERO_RTT);
   SendRequestAndExpectHttpResponse("hello world");
@@ -1894,9 +1891,9 @@
   // connection to the the server, in this test we require confirmation
   // before encrypting so the HTTP job will still start.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
@@ -1940,9 +1937,9 @@
   // connection to the the server, in this test we require confirmation
   // before encrypting so the HTTP job will still start.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
@@ -1995,9 +1992,9 @@
   // connection to the the server, in this test we require confirmation
   // before encrypting so the HTTP job will still start.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
@@ -2225,9 +2222,9 @@
   // without racing an HTTP connection, we need the host resolution to happen
   // synchronously.
   host_resolver_.set_synchronous_mode(true);
-  host_resolver_.rules()->AddIPLiteralRule("mail.example.com", "192.168.0.1",
+  host_resolver_.rules()->AddIPLiteralRule("mail.example.org", "192.168.0.1",
                                            "");
-  HostResolver::RequestInfo info(HostPortPair("mail.example.com", 443));
+  HostResolver::RequestInfo info(HostPortPair("mail.example.org", 443));
   AddressList address;
   host_resolver_.Resolve(info, DEFAULT_PRIORITY, &address, CompletionCallback(),
                          nullptr, net_log_.bound());
@@ -2262,7 +2259,7 @@
 
 TEST_P(QuicNetworkTransactionTest, QuicUpload) {
   params_.origin_to_force_quic_on =
-      HostPortPair::FromString("mail.example.com:443");
+      HostPortPair::FromString("mail.example.org:443");
 
   MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)};
   MockWrite writes[] = {MockWrite(SYNCHRONOUS, ERR_FAILED, 1)};
diff --git a/net/quic/test_tools/mock_crypto_client_stream.cc b/net/quic/test_tools/mock_crypto_client_stream.cc
index 580beb6..aba39e9 100644
--- a/net/quic/test_tools/mock_crypto_client_stream.cc
+++ b/net/quic/test_tools/mock_crypto_client_stream.cc
@@ -20,13 +20,14 @@
     ProofVerifyContext* verify_context,
     QuicCryptoClientConfig* crypto_config,
     HandshakeMode handshake_mode,
-    const ProofVerifyDetails* proof_verify_details)
+    const ProofVerifyDetailsChromium* proof_verify_details)
     : QuicCryptoClientStream(server_id,
                              session,
                              verify_context,
                              crypto_config,
                              session),
       handshake_mode_(handshake_mode),
+      server_id_(server_id),
       proof_verify_details_(proof_verify_details) {}
 
 MockCryptoClientStream::~MockCryptoClientStream() {}
@@ -38,6 +39,17 @@
 }
 
 void MockCryptoClientStream::CryptoConnect() {
+  if (proof_verify_details_) {
+    bool unused = false;
+    if (!proof_verify_details_->cert_verify_result.verified_cert
+             ->VerifyNameMatch(server_id_.host(), &unused)) {
+      handshake_confirmed_ = false;
+      encryption_established_ = false;
+      session()->connection()->CloseConnection(QUIC_PROOF_INVALID, false);
+      return;
+    }
+  }
+
   switch (handshake_mode_) {
     case ZERO_RTT: {
       encryption_established_ = true;
diff --git a/net/quic/test_tools/mock_crypto_client_stream.h b/net/quic/test_tools/mock_crypto_client_stream.h
index 4aefb7c..b9bb57ff 100644
--- a/net/quic/test_tools/mock_crypto_client_stream.h
+++ b/net/quic/test_tools/mock_crypto_client_stream.h
@@ -10,6 +10,7 @@
 #include "base/macros.h"
 #include "net/quic/crypto/crypto_handshake.h"
 #include "net/quic/crypto/crypto_protocol.h"
+#include "net/quic/crypto/proof_verifier_chromium.h"
 #include "net/quic/quic_client_session_base.h"
 #include "net/quic/quic_crypto_client_stream.h"
 #include "net/quic/quic_session.h"
@@ -37,12 +38,13 @@
     COLD_START,
   };
 
-  MockCryptoClientStream(const QuicServerId& server_id,
-                         QuicClientSessionBase* session,
-                         ProofVerifyContext* verify_context,
-                         QuicCryptoClientConfig* crypto_config,
-                         HandshakeMode handshake_mode,
-                         const ProofVerifyDetails* proof_verify_details_);
+  MockCryptoClientStream(
+      const QuicServerId& server_id,
+      QuicClientSessionBase* session,
+      ProofVerifyContext* verify_context,
+      QuicCryptoClientConfig* crypto_config,
+      HandshakeMode handshake_mode,
+      const ProofVerifyDetailsChromium* proof_verify_details_);
   ~MockCryptoClientStream() override;
 
   // CryptoFramerVisitorInterface implementation.
@@ -60,7 +62,8 @@
  private:
   void SetConfigNegotiated();
 
-  const ProofVerifyDetails* proof_verify_details_;
+  const QuicServerId server_id_;
+  const ProofVerifyDetailsChromium* proof_verify_details_;
 
   DISALLOW_COPY_AND_ASSIGN(MockCryptoClientStream);
 };
diff --git a/net/quic/test_tools/mock_crypto_client_stream_factory.cc b/net/quic/test_tools/mock_crypto_client_stream_factory.cc
index 1773059..52501788b 100644
--- a/net/quic/test_tools/mock_crypto_client_stream_factory.cc
+++ b/net/quic/test_tools/mock_crypto_client_stream_factory.cc
@@ -25,7 +25,7 @@
     QuicChromiumClientSession* session,
     scoped_ptr<ProofVerifyContext> /*proof_verify_context*/,
     QuicCryptoClientConfig* crypto_config) {
-  const ProofVerifyDetails* proof_verify_details = nullptr;
+  const ProofVerifyDetailsChromium* proof_verify_details = nullptr;
   if (!proof_verify_details_queue_.empty()) {
     proof_verify_details = proof_verify_details_queue_.front();
     proof_verify_details_queue_.pop();
diff --git a/net/quic/test_tools/mock_crypto_client_stream_factory.h b/net/quic/test_tools/mock_crypto_client_stream_factory.h
index 5ca04bf..1a12a39 100644
--- a/net/quic/test_tools/mock_crypto_client_stream_factory.h
+++ b/net/quic/test_tools/mock_crypto_client_stream_factory.h
@@ -9,6 +9,7 @@
 #include <string>
 
 #include "base/macros.h"
+#include "net/quic/crypto/proof_verifier_chromium.h"
 #include "net/quic/quic_crypto_client_stream.h"
 #include "net/quic/quic_crypto_client_stream_factory.h"
 #include "net/quic/test_tools/mock_crypto_client_stream.h"
@@ -34,7 +35,8 @@
   }
 
   // The caller keeps ownership of |proof_verify_details|.
-  void AddProofVerifyDetails(const ProofVerifyDetails* proof_verify_details) {
+  void AddProofVerifyDetails(
+      const ProofVerifyDetailsChromium* proof_verify_details) {
     proof_verify_details_queue_.push(proof_verify_details);
   }
 
@@ -43,7 +45,7 @@
  private:
   MockCryptoClientStream::HandshakeMode handshake_mode_;
   MockCryptoClientStream* last_stream_;
-  std::queue<const ProofVerifyDetails*> proof_verify_details_queue_;
+  std::queue<const ProofVerifyDetailsChromium*> proof_verify_details_queue_;
 
   DISALLOW_COPY_AND_ASSIGN(MockCryptoClientStreamFactory);
 };