| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
| 6 | 6 |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "net/base/test_data_directory.h" | 9 #include "net/base/test_data_directory.h" |
| 10 #include "net/cert/cert_verifier.h" | 10 #include "net/cert/cert_verifier.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 91 }; | 91 }; |
| 92 | 92 |
| 93 class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> { | 93 class QuicStreamFactoryTest : public ::testing::TestWithParam<QuicVersion> { |
| 94 protected: | 94 protected: |
| 95 QuicStreamFactoryTest() | 95 QuicStreamFactoryTest() |
| 96 : random_generator_(0), | 96 : random_generator_(0), |
| 97 clock_(new MockClock()), | 97 clock_(new MockClock()), |
| 98 maker_(GetParam(), 0, clock_), | 98 maker_(GetParam(), 0, clock_), |
| 99 cert_verifier_(CertVerifier::CreateDefault()), | 99 cert_verifier_(CertVerifier::CreateDefault()), |
| 100 channel_id_service_( | 100 channel_id_service_( |
| 101 new ChannelIDService(new DefaultChannelIDStore(NULL), | 101 new ChannelIDService(new DefaultChannelIDStore(nullptr), |
| 102 base::MessageLoopProxy::current())), | 102 base::MessageLoopProxy::current())), |
| 103 factory_(&host_resolver_, | 103 factory_(&host_resolver_, |
| 104 &socket_factory_, | 104 &socket_factory_, |
| 105 base::WeakPtr<HttpServerProperties>(), | 105 base::WeakPtr<HttpServerProperties>(), |
| 106 cert_verifier_.get(), | 106 cert_verifier_.get(), |
| 107 channel_id_service_.get(), | 107 channel_id_service_.get(), |
| 108 &transport_security_state_, | 108 &transport_security_state_, |
| 109 &crypto_client_stream_factory_, | 109 &crypto_client_stream_factory_, |
| 110 &random_generator_, | 110 &random_generator_, |
| 111 clock_, | 111 clock_, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 135 } | 135 } |
| 136 | 136 |
| 137 int GetSourcePortForNewSessionAndGoAway( | 137 int GetSourcePortForNewSessionAndGoAway( |
| 138 const HostPortPair& destination) { | 138 const HostPortPair& destination) { |
| 139 return GetSourcePortForNewSessionInner(destination, true); | 139 return GetSourcePortForNewSessionInner(destination, true); |
| 140 } | 140 } |
| 141 | 141 |
| 142 int GetSourcePortForNewSessionInner(const HostPortPair& destination, | 142 int GetSourcePortForNewSessionInner(const HostPortPair& destination, |
| 143 bool goaway_received) { | 143 bool goaway_received) { |
| 144 // Should only be called if there is no active session for this destination. | 144 // Should only be called if there is no active session for this destination. |
| 145 EXPECT_EQ(NULL, CreateIfSessionExists(destination, net_log_).get()); | 145 EXPECT_EQ(nullptr, CreateIfSessionExists(destination, net_log_).get()); |
| 146 size_t socket_count = socket_factory_.udp_client_sockets().size(); | 146 size_t socket_count = socket_factory_.udp_client_sockets().size(); |
| 147 | 147 |
| 148 MockRead reads[] = { | 148 MockRead reads[] = { |
| 149 MockRead(ASYNC, OK, 0) // EOF | 149 MockRead(ASYNC, OK, 0) // EOF |
| 150 }; | 150 }; |
| 151 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 151 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 152 socket_data.StopAfter(1); | 152 socket_data.StopAfter(1); |
| 153 socket_factory_.AddSocketDataProvider(&socket_data); | 153 socket_factory_.AddSocketDataProvider(&socket_data); |
| 154 | 154 |
| 155 QuicStreamRequest request(&factory_); | 155 QuicStreamRequest request(&factory_); |
| 156 EXPECT_EQ(ERR_IO_PENDING, | 156 EXPECT_EQ(ERR_IO_PENDING, |
| 157 request.Request(destination, | 157 request.Request(destination, |
| 158 is_https_, | 158 is_https_, |
| 159 privacy_mode_, | 159 privacy_mode_, |
| 160 "GET", | 160 "GET", |
| 161 net_log_, | 161 net_log_, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 177 IPEndPoint endpoint; | 177 IPEndPoint endpoint; |
| 178 socket_factory_. | 178 socket_factory_. |
| 179 udp_client_sockets()[socket_count]->GetLocalAddress(&endpoint); | 179 udp_client_sockets()[socket_count]->GetLocalAddress(&endpoint); |
| 180 int port = endpoint.port(); | 180 int port = endpoint.port(); |
| 181 if (goaway_received) { | 181 if (goaway_received) { |
| 182 QuicGoAwayFrame goaway(QUIC_NO_ERROR, 1, ""); | 182 QuicGoAwayFrame goaway(QUIC_NO_ERROR, 1, ""); |
| 183 session->OnGoAway(goaway); | 183 session->OnGoAway(goaway); |
| 184 } | 184 } |
| 185 | 185 |
| 186 factory_.OnSessionClosed(session); | 186 factory_.OnSessionClosed(session); |
| 187 EXPECT_EQ(NULL, CreateIfSessionExists(destination, net_log_).get()); | 187 EXPECT_EQ(nullptr, CreateIfSessionExists(destination, net_log_).get()); |
| 188 EXPECT_TRUE(socket_data.at_read_eof()); | 188 EXPECT_TRUE(socket_data.at_read_eof()); |
| 189 EXPECT_TRUE(socket_data.at_write_eof()); | 189 EXPECT_TRUE(socket_data.at_write_eof()); |
| 190 return port; | 190 return port; |
| 191 } | 191 } |
| 192 | 192 |
| 193 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() { | 193 scoped_ptr<QuicEncryptedPacket> ConstructRstPacket() { |
| 194 QuicStreamId stream_id = kClientDataStreamId1; | 194 QuicStreamId stream_id = kClientDataStreamId1; |
| 195 return maker_.MakeRstPacket( | 195 return maker_.MakeRstPacket( |
| 196 1, true, stream_id, | 196 1, true, stream_id, |
| 197 AdjustErrorForVersion(QUIC_RST_FLOW_CONTROL_ACCOUNTING, GetParam())); | 197 AdjustErrorForVersion(QUIC_RST_FLOW_CONTROL_ACCOUNTING, GetParam())); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 211 bool is_https_; | 211 bool is_https_; |
| 212 PrivacyMode privacy_mode_; | 212 PrivacyMode privacy_mode_; |
| 213 BoundNetLog net_log_; | 213 BoundNetLog net_log_; |
| 214 TestCompletionCallback callback_; | 214 TestCompletionCallback callback_; |
| 215 }; | 215 }; |
| 216 | 216 |
| 217 INSTANTIATE_TEST_CASE_P(Version, QuicStreamFactoryTest, | 217 INSTANTIATE_TEST_CASE_P(Version, QuicStreamFactoryTest, |
| 218 ::testing::ValuesIn(QuicSupportedVersions())); | 218 ::testing::ValuesIn(QuicSupportedVersions())); |
| 219 | 219 |
| 220 TEST_P(QuicStreamFactoryTest, CreateIfSessionExists) { | 220 TEST_P(QuicStreamFactoryTest, CreateIfSessionExists) { |
| 221 EXPECT_EQ(NULL, CreateIfSessionExists(host_port_pair_, net_log_).get()); | 221 EXPECT_EQ(nullptr, CreateIfSessionExists(host_port_pair_, net_log_).get()); |
| 222 } | 222 } |
| 223 | 223 |
| 224 TEST_P(QuicStreamFactoryTest, Create) { | 224 TEST_P(QuicStreamFactoryTest, Create) { |
| 225 MockRead reads[] = { | 225 MockRead reads[] = { |
| 226 MockRead(ASYNC, OK, 0) // EOF | 226 MockRead(ASYNC, OK, 0) // EOF |
| 227 }; | 227 }; |
| 228 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 228 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 229 socket_factory_.AddSocketDataProvider(&socket_data); | 229 socket_factory_.AddSocketDataProvider(&socket_data); |
| 230 socket_data.StopAfter(1); | 230 socket_data.StopAfter(1); |
| 231 | 231 |
| 232 QuicStreamRequest request(&factory_); | 232 QuicStreamRequest request(&factory_); |
| 233 EXPECT_EQ(ERR_IO_PENDING, | 233 EXPECT_EQ(ERR_IO_PENDING, |
| 234 request.Request(host_port_pair_, | 234 request.Request(host_port_pair_, |
| 235 is_https_, | 235 is_https_, |
| 236 privacy_mode_, | 236 privacy_mode_, |
| 237 "GET", | 237 "GET", |
| 238 net_log_, | 238 net_log_, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 260 stream.reset(); // Will reset stream 7. | 260 stream.reset(); // Will reset stream 7. |
| 261 | 261 |
| 262 EXPECT_TRUE(socket_data.at_read_eof()); | 262 EXPECT_TRUE(socket_data.at_read_eof()); |
| 263 EXPECT_TRUE(socket_data.at_write_eof()); | 263 EXPECT_TRUE(socket_data.at_write_eof()); |
| 264 } | 264 } |
| 265 | 265 |
| 266 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { | 266 TEST_P(QuicStreamFactoryTest, CreateZeroRtt) { |
| 267 MockRead reads[] = { | 267 MockRead reads[] = { |
| 268 MockRead(ASYNC, OK, 0) // EOF | 268 MockRead(ASYNC, OK, 0) // EOF |
| 269 }; | 269 }; |
| 270 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 270 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 271 socket_factory_.AddSocketDataProvider(&socket_data); | 271 socket_factory_.AddSocketDataProvider(&socket_data); |
| 272 socket_data.StopAfter(1); | 272 socket_data.StopAfter(1); |
| 273 | 273 |
| 274 crypto_client_stream_factory_.set_handshake_mode( | 274 crypto_client_stream_factory_.set_handshake_mode( |
| 275 MockCryptoClientStream::ZERO_RTT); | 275 MockCryptoClientStream::ZERO_RTT); |
| 276 host_resolver_.set_synchronous_mode(true); | 276 host_resolver_.set_synchronous_mode(true); |
| 277 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), | 277 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), |
| 278 "192.168.0.1", ""); | 278 "192.168.0.1", ""); |
| 279 | 279 |
| 280 QuicStreamRequest request(&factory_); | 280 QuicStreamRequest request(&factory_); |
| 281 EXPECT_EQ(OK, | 281 EXPECT_EQ(OK, |
| 282 request.Request(host_port_pair_, | 282 request.Request(host_port_pair_, |
| 283 is_https_, | 283 is_https_, |
| 284 privacy_mode_, | 284 privacy_mode_, |
| 285 "GET", | 285 "GET", |
| 286 net_log_, | 286 net_log_, |
| 287 callback_.callback())); | 287 callback_.callback())); |
| 288 | 288 |
| 289 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 289 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 290 EXPECT_TRUE(stream.get()); | 290 EXPECT_TRUE(stream.get()); |
| 291 EXPECT_TRUE(socket_data.at_read_eof()); | 291 EXPECT_TRUE(socket_data.at_read_eof()); |
| 292 EXPECT_TRUE(socket_data.at_write_eof()); | 292 EXPECT_TRUE(socket_data.at_write_eof()); |
| 293 } | 293 } |
| 294 | 294 |
| 295 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { | 295 TEST_P(QuicStreamFactoryTest, CreateZeroRttPost) { |
| 296 MockRead reads[] = { | 296 MockRead reads[] = { |
| 297 MockRead(ASYNC, OK, 0) // EOF | 297 MockRead(ASYNC, OK, 0) // EOF |
| 298 }; | 298 }; |
| 299 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 299 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 300 socket_factory_.AddSocketDataProvider(&socket_data); | 300 socket_factory_.AddSocketDataProvider(&socket_data); |
| 301 socket_data.StopAfter(1); | 301 socket_data.StopAfter(1); |
| 302 | 302 |
| 303 crypto_client_stream_factory_.set_handshake_mode( | 303 crypto_client_stream_factory_.set_handshake_mode( |
| 304 MockCryptoClientStream::ZERO_RTT); | 304 MockCryptoClientStream::ZERO_RTT); |
| 305 host_resolver_.set_synchronous_mode(true); | 305 host_resolver_.set_synchronous_mode(true); |
| 306 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), | 306 host_resolver_.rules()->AddIPLiteralRule(host_port_pair_.host(), |
| 307 "192.168.0.1", ""); | 307 "192.168.0.1", ""); |
| 308 | 308 |
| 309 QuicStreamRequest request(&factory_); | 309 QuicStreamRequest request(&factory_); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 324 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 324 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 325 EXPECT_TRUE(stream.get()); | 325 EXPECT_TRUE(stream.get()); |
| 326 EXPECT_TRUE(socket_data.at_read_eof()); | 326 EXPECT_TRUE(socket_data.at_read_eof()); |
| 327 EXPECT_TRUE(socket_data.at_write_eof()); | 327 EXPECT_TRUE(socket_data.at_write_eof()); |
| 328 } | 328 } |
| 329 | 329 |
| 330 TEST_P(QuicStreamFactoryTest, CreateHttpVsHttps) { | 330 TEST_P(QuicStreamFactoryTest, CreateHttpVsHttps) { |
| 331 MockRead reads[] = { | 331 MockRead reads[] = { |
| 332 MockRead(ASYNC, OK, 0) // EOF | 332 MockRead(ASYNC, OK, 0) // EOF |
| 333 }; | 333 }; |
| 334 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 334 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 335 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 335 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 336 socket_factory_.AddSocketDataProvider(&socket_data1); | 336 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 337 socket_factory_.AddSocketDataProvider(&socket_data2); | 337 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 338 socket_data1.StopAfter(1); | 338 socket_data1.StopAfter(1); |
| 339 socket_data2.StopAfter(1); | 339 socket_data2.StopAfter(1); |
| 340 | 340 |
| 341 QuicStreamRequest request(&factory_); | 341 QuicStreamRequest request(&factory_); |
| 342 EXPECT_EQ(ERR_IO_PENDING, | 342 EXPECT_EQ(ERR_IO_PENDING, |
| 343 request.Request(host_port_pair_, | 343 request.Request(host_port_pair_, |
| 344 is_https_, | 344 is_https_, |
| 345 privacy_mode_, | 345 privacy_mode_, |
| (...skipping 26 matching lines...) Expand all Loading... |
| 372 EXPECT_TRUE(socket_data1.at_read_eof()); | 372 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 373 EXPECT_TRUE(socket_data1.at_write_eof()); | 373 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 374 EXPECT_TRUE(socket_data2.at_read_eof()); | 374 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 375 EXPECT_TRUE(socket_data2.at_write_eof()); | 375 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 376 } | 376 } |
| 377 | 377 |
| 378 TEST_P(QuicStreamFactoryTest, Pooling) { | 378 TEST_P(QuicStreamFactoryTest, Pooling) { |
| 379 MockRead reads[] = { | 379 MockRead reads[] = { |
| 380 MockRead(ASYNC, OK, 0) // EOF | 380 MockRead(ASYNC, OK, 0) // EOF |
| 381 }; | 381 }; |
| 382 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 382 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 383 socket_factory_.AddSocketDataProvider(&socket_data); | 383 socket_factory_.AddSocketDataProvider(&socket_data); |
| 384 socket_data.StopAfter(1); | 384 socket_data.StopAfter(1); |
| 385 | 385 |
| 386 HostPortPair server2("mail.google.com", kDefaultServerPort); | 386 HostPortPair server2("mail.google.com", kDefaultServerPort); |
| 387 host_resolver_.set_synchronous_mode(true); | 387 host_resolver_.set_synchronous_mode(true); |
| 388 host_resolver_.rules()->AddIPLiteralRule( | 388 host_resolver_.rules()->AddIPLiteralRule( |
| 389 kDefaultServerHostName, "192.168.0.1", ""); | 389 kDefaultServerHostName, "192.168.0.1", ""); |
| 390 host_resolver_.rules()->AddIPLiteralRule( | 390 host_resolver_.rules()->AddIPLiteralRule( |
| 391 "mail.google.com", "192.168.0.1", ""); | 391 "mail.google.com", "192.168.0.1", ""); |
| 392 | 392 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 419 QuicStreamFactoryPeer::GetActiveSession(&factory_, server2, is_https_)); | 419 QuicStreamFactoryPeer::GetActiveSession(&factory_, server2, is_https_)); |
| 420 | 420 |
| 421 EXPECT_TRUE(socket_data.at_read_eof()); | 421 EXPECT_TRUE(socket_data.at_read_eof()); |
| 422 EXPECT_TRUE(socket_data.at_write_eof()); | 422 EXPECT_TRUE(socket_data.at_write_eof()); |
| 423 } | 423 } |
| 424 | 424 |
| 425 TEST_P(QuicStreamFactoryTest, NoPoolingIfDisabled) { | 425 TEST_P(QuicStreamFactoryTest, NoPoolingIfDisabled) { |
| 426 MockRead reads[] = { | 426 MockRead reads[] = { |
| 427 MockRead(ASYNC, OK, 0) // EOF | 427 MockRead(ASYNC, OK, 0) // EOF |
| 428 }; | 428 }; |
| 429 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 429 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 430 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 430 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 431 socket_factory_.AddSocketDataProvider(&socket_data1); | 431 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 432 socket_factory_.AddSocketDataProvider(&socket_data2); | 432 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 433 socket_data1.StopAfter(1); | 433 socket_data1.StopAfter(1); |
| 434 socket_data2.StopAfter(1); | 434 socket_data2.StopAfter(1); |
| 435 | 435 |
| 436 HostPortPair server2("mail.google.com", kDefaultServerPort); | 436 HostPortPair server2("mail.google.com", kDefaultServerPort); |
| 437 host_resolver_.set_synchronous_mode(true); | 437 host_resolver_.set_synchronous_mode(true); |
| 438 host_resolver_.rules()->AddIPLiteralRule( | 438 host_resolver_.rules()->AddIPLiteralRule( |
| 439 kDefaultServerHostName, "192.168.0.1", ""); | 439 kDefaultServerHostName, "192.168.0.1", ""); |
| 440 host_resolver_.rules()->AddIPLiteralRule( | 440 host_resolver_.rules()->AddIPLiteralRule( |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 EXPECT_TRUE(socket_data1.at_read_eof()); | 474 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 475 EXPECT_TRUE(socket_data1.at_write_eof()); | 475 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 476 EXPECT_TRUE(socket_data2.at_read_eof()); | 476 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 477 EXPECT_TRUE(socket_data2.at_write_eof()); | 477 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 478 } | 478 } |
| 479 | 479 |
| 480 TEST_P(QuicStreamFactoryTest, NoPoolingAfterGoAway) { | 480 TEST_P(QuicStreamFactoryTest, NoPoolingAfterGoAway) { |
| 481 MockRead reads[] = { | 481 MockRead reads[] = { |
| 482 MockRead(ASYNC, OK, 0) // EOF | 482 MockRead(ASYNC, OK, 0) // EOF |
| 483 }; | 483 }; |
| 484 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 484 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 485 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 485 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 486 socket_factory_.AddSocketDataProvider(&socket_data1); | 486 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 487 socket_factory_.AddSocketDataProvider(&socket_data2); | 487 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 488 socket_data1.StopAfter(1); | 488 socket_data1.StopAfter(1); |
| 489 socket_data2.StopAfter(1); | 489 socket_data2.StopAfter(1); |
| 490 | 490 |
| 491 HostPortPair server2("mail.google.com", kDefaultServerPort); | 491 HostPortPair server2("mail.google.com", kDefaultServerPort); |
| 492 host_resolver_.set_synchronous_mode(true); | 492 host_resolver_.set_synchronous_mode(true); |
| 493 host_resolver_.rules()->AddIPLiteralRule( | 493 host_resolver_.rules()->AddIPLiteralRule( |
| 494 kDefaultServerHostName, "192.168.0.1", ""); | 494 kDefaultServerHostName, "192.168.0.1", ""); |
| 495 host_resolver_.rules()->AddIPLiteralRule( | 495 host_resolver_.rules()->AddIPLiteralRule( |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 EXPECT_TRUE(socket_data1.at_read_eof()); | 543 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 544 EXPECT_TRUE(socket_data1.at_write_eof()); | 544 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 545 EXPECT_TRUE(socket_data2.at_read_eof()); | 545 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 546 EXPECT_TRUE(socket_data2.at_write_eof()); | 546 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 547 } | 547 } |
| 548 | 548 |
| 549 TEST_P(QuicStreamFactoryTest, HttpsPooling) { | 549 TEST_P(QuicStreamFactoryTest, HttpsPooling) { |
| 550 MockRead reads[] = { | 550 MockRead reads[] = { |
| 551 MockRead(ASYNC, OK, 0) // EOF | 551 MockRead(ASYNC, OK, 0) // EOF |
| 552 }; | 552 }; |
| 553 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 553 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 554 socket_factory_.AddSocketDataProvider(&socket_data); | 554 socket_factory_.AddSocketDataProvider(&socket_data); |
| 555 socket_data.StopAfter(1); | 555 socket_data.StopAfter(1); |
| 556 | 556 |
| 557 HostPortPair server1("www.example.org", 443); | 557 HostPortPair server1("www.example.org", 443); |
| 558 HostPortPair server2("mail.example.org", 443); | 558 HostPortPair server2("mail.example.org", 443); |
| 559 | 559 |
| 560 // Load a cert that is valid for: | 560 // Load a cert that is valid for: |
| 561 // www.example.org (server1) | 561 // www.example.org (server1) |
| 562 // mail.example.org (server2) | 562 // mail.example.org (server2) |
| 563 // www.example.com | 563 // www.example.com |
| 564 base::FilePath certs_dir = GetTestCertsDirectory(); | 564 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 565 scoped_refptr<X509Certificate> test_cert( | 565 scoped_refptr<X509Certificate> test_cert( |
| 566 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 566 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 567 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 567 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 568 ProofVerifyDetailsChromium verify_details; | 568 ProofVerifyDetailsChromium verify_details; |
| 569 verify_details.cert_verify_result.verified_cert = test_cert; | 569 verify_details.cert_verify_result.verified_cert = test_cert; |
| 570 verify_details.cert_verify_result.is_issued_by_known_root = true; | 570 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 571 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 571 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 572 | 572 |
| 573 host_resolver_.set_synchronous_mode(true); | 573 host_resolver_.set_synchronous_mode(true); |
| 574 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 574 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| 575 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); | 575 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); |
| 576 | 576 |
| 577 QuicStreamRequest request(&factory_); | 577 QuicStreamRequest request(&factory_); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 604 &factory_, server2, is_https_)); | 604 &factory_, server2, is_https_)); |
| 605 | 605 |
| 606 EXPECT_TRUE(socket_data.at_read_eof()); | 606 EXPECT_TRUE(socket_data.at_read_eof()); |
| 607 EXPECT_TRUE(socket_data.at_write_eof()); | 607 EXPECT_TRUE(socket_data.at_write_eof()); |
| 608 } | 608 } |
| 609 | 609 |
| 610 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) { | 610 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingIfDisabled) { |
| 611 MockRead reads[] = { | 611 MockRead reads[] = { |
| 612 MockRead(ASYNC, OK, 0) // EOF | 612 MockRead(ASYNC, OK, 0) // EOF |
| 613 }; | 613 }; |
| 614 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 614 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 615 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 615 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 616 socket_factory_.AddSocketDataProvider(&socket_data1); | 616 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 617 socket_factory_.AddSocketDataProvider(&socket_data2); | 617 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 618 socket_data1.StopAfter(1); | 618 socket_data1.StopAfter(1); |
| 619 socket_data2.StopAfter(1); | 619 socket_data2.StopAfter(1); |
| 620 | 620 |
| 621 HostPortPair server1("www.example.org", 443); | 621 HostPortPair server1("www.example.org", 443); |
| 622 HostPortPair server2("mail.example.org", 443); | 622 HostPortPair server2("mail.example.org", 443); |
| 623 | 623 |
| 624 // Load a cert that is valid for: | 624 // Load a cert that is valid for: |
| 625 // www.example.org (server1) | 625 // www.example.org (server1) |
| 626 // mail.example.org (server2) | 626 // mail.example.org (server2) |
| 627 // www.example.com | 627 // www.example.com |
| 628 base::FilePath certs_dir = GetTestCertsDirectory(); | 628 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 629 scoped_refptr<X509Certificate> test_cert( | 629 scoped_refptr<X509Certificate> test_cert( |
| 630 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 630 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 631 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 631 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 632 ProofVerifyDetailsChromium verify_details; | 632 ProofVerifyDetailsChromium verify_details; |
| 633 verify_details.cert_verify_result.verified_cert = test_cert; | 633 verify_details.cert_verify_result.verified_cert = test_cert; |
| 634 verify_details.cert_verify_result.is_issued_by_known_root = true; | 634 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 635 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 635 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 636 | 636 |
| 637 host_resolver_.set_synchronous_mode(true); | 637 host_resolver_.set_synchronous_mode(true); |
| 638 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 638 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| 639 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); | 639 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); |
| 640 | 640 |
| 641 // Disable connection pooling. | 641 // Disable connection pooling. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 EXPECT_TRUE(socket_data1.at_read_eof()); | 673 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 674 EXPECT_TRUE(socket_data1.at_write_eof()); | 674 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 675 EXPECT_TRUE(socket_data2.at_read_eof()); | 675 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 676 EXPECT_TRUE(socket_data2.at_write_eof()); | 676 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 677 } | 677 } |
| 678 | 678 |
| 679 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithCertMismatch) { | 679 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithCertMismatch) { |
| 680 MockRead reads[] = { | 680 MockRead reads[] = { |
| 681 MockRead(ASYNC, OK, 0) // EOF | 681 MockRead(ASYNC, OK, 0) // EOF |
| 682 }; | 682 }; |
| 683 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 683 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 684 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 684 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 685 socket_factory_.AddSocketDataProvider(&socket_data1); | 685 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 686 socket_factory_.AddSocketDataProvider(&socket_data2); | 686 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 687 socket_data1.StopAfter(1); | 687 socket_data1.StopAfter(1); |
| 688 socket_data2.StopAfter(1); | 688 socket_data2.StopAfter(1); |
| 689 | 689 |
| 690 HostPortPair server1("www.example.org", 443); | 690 HostPortPair server1("www.example.org", 443); |
| 691 HostPortPair server2("mail.google.com", 443); | 691 HostPortPair server2("mail.google.com", 443); |
| 692 | 692 |
| 693 // Load a cert that is valid for: | 693 // Load a cert that is valid for: |
| 694 // www.example.org (server1) | 694 // www.example.org (server1) |
| 695 // mail.example.org | 695 // mail.example.org |
| 696 // www.example.com | 696 // www.example.com |
| 697 // But is not valid for mail.google.com (server2). | 697 // But is not valid for mail.google.com (server2). |
| 698 base::FilePath certs_dir = GetTestCertsDirectory(); | 698 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 699 scoped_refptr<X509Certificate> test_cert( | 699 scoped_refptr<X509Certificate> test_cert( |
| 700 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 700 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 701 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 701 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 702 ProofVerifyDetailsChromium verify_details; | 702 ProofVerifyDetailsChromium verify_details; |
| 703 verify_details.cert_verify_result.verified_cert = test_cert; | 703 verify_details.cert_verify_result.verified_cert = test_cert; |
| 704 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 704 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 705 | 705 |
| 706 | 706 |
| 707 host_resolver_.set_synchronous_mode(true); | 707 host_resolver_.set_synchronous_mode(true); |
| 708 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 708 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| 709 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); | 709 host_resolver_.rules()->AddIPLiteralRule(server2.host(), "192.168.0.1", ""); |
| 710 | 710 |
| 711 QuicStreamRequest request(&factory_); | 711 QuicStreamRequest request(&factory_); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 740 EXPECT_TRUE(socket_data1.at_read_eof()); | 740 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 741 EXPECT_TRUE(socket_data1.at_write_eof()); | 741 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 742 EXPECT_TRUE(socket_data2.at_read_eof()); | 742 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 743 EXPECT_TRUE(socket_data2.at_write_eof()); | 743 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 744 } | 744 } |
| 745 | 745 |
| 746 TEST_P(QuicStreamFactoryTest, HttpsPoolingWithMatchingPins) { | 746 TEST_P(QuicStreamFactoryTest, HttpsPoolingWithMatchingPins) { |
| 747 MockRead reads[] = { | 747 MockRead reads[] = { |
| 748 MockRead(ASYNC, OK, 0) // EOF | 748 MockRead(ASYNC, OK, 0) // EOF |
| 749 }; | 749 }; |
| 750 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 750 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 751 socket_factory_.AddSocketDataProvider(&socket_data); | 751 socket_factory_.AddSocketDataProvider(&socket_data); |
| 752 socket_data.StopAfter(1); | 752 socket_data.StopAfter(1); |
| 753 | 753 |
| 754 HostPortPair server1("www.example.org", 443); | 754 HostPortPair server1("www.example.org", 443); |
| 755 HostPortPair server2("mail.example.org", 443); | 755 HostPortPair server2("mail.example.org", 443); |
| 756 uint8 primary_pin = 1; | 756 uint8 primary_pin = 1; |
| 757 uint8 backup_pin = 2; | 757 uint8 backup_pin = 2; |
| 758 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, | 758 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, |
| 759 backup_pin); | 759 backup_pin); |
| 760 | 760 |
| 761 // Load a cert that is valid for: | 761 // Load a cert that is valid for: |
| 762 // www.example.org (server1) | 762 // www.example.org (server1) |
| 763 // mail.example.org (server2) | 763 // mail.example.org (server2) |
| 764 base::FilePath certs_dir = GetTestCertsDirectory(); | 764 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 765 scoped_refptr<X509Certificate> test_cert( | 765 scoped_refptr<X509Certificate> test_cert( |
| 766 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 766 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 767 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 767 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 768 ProofVerifyDetailsChromium verify_details; | 768 ProofVerifyDetailsChromium verify_details; |
| 769 verify_details.cert_verify_result.verified_cert = test_cert; | 769 verify_details.cert_verify_result.verified_cert = test_cert; |
| 770 verify_details.cert_verify_result.is_issued_by_known_root = true; | 770 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 771 verify_details.cert_verify_result.public_key_hashes.push_back( | 771 verify_details.cert_verify_result.public_key_hashes.push_back( |
| 772 test::GetTestHashValue(primary_pin)); | 772 test::GetTestHashValue(primary_pin)); |
| 773 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 773 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 774 | 774 |
| 775 | 775 |
| 776 host_resolver_.set_synchronous_mode(true); | 776 host_resolver_.set_synchronous_mode(true); |
| 777 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 777 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 807 &factory_, server2, is_https_)); | 807 &factory_, server2, is_https_)); |
| 808 | 808 |
| 809 EXPECT_TRUE(socket_data.at_read_eof()); | 809 EXPECT_TRUE(socket_data.at_read_eof()); |
| 810 EXPECT_TRUE(socket_data.at_write_eof()); | 810 EXPECT_TRUE(socket_data.at_write_eof()); |
| 811 } | 811 } |
| 812 | 812 |
| 813 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) { | 813 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithMatchingPinsIfDisabled) { |
| 814 MockRead reads[] = { | 814 MockRead reads[] = { |
| 815 MockRead(ASYNC, OK, 0) // EOF | 815 MockRead(ASYNC, OK, 0) // EOF |
| 816 }; | 816 }; |
| 817 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 817 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 818 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 818 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 819 socket_factory_.AddSocketDataProvider(&socket_data1); | 819 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 820 socket_factory_.AddSocketDataProvider(&socket_data2); | 820 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 821 socket_data1.StopAfter(1); | 821 socket_data1.StopAfter(1); |
| 822 socket_data2.StopAfter(1); | 822 socket_data2.StopAfter(1); |
| 823 | 823 |
| 824 HostPortPair server1("www.example.org", 443); | 824 HostPortPair server1("www.example.org", 443); |
| 825 HostPortPair server2("mail.example.org", 443); | 825 HostPortPair server2("mail.example.org", 443); |
| 826 uint8 primary_pin = 1; | 826 uint8 primary_pin = 1; |
| 827 uint8 backup_pin = 2; | 827 uint8 backup_pin = 2; |
| 828 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, | 828 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, |
| 829 backup_pin); | 829 backup_pin); |
| 830 | 830 |
| 831 // Load a cert that is valid for: | 831 // Load a cert that is valid for: |
| 832 // www.example.org (server1) | 832 // www.example.org (server1) |
| 833 // mail.example.org (server2) | 833 // mail.example.org (server2) |
| 834 base::FilePath certs_dir = GetTestCertsDirectory(); | 834 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 835 scoped_refptr<X509Certificate> test_cert( | 835 scoped_refptr<X509Certificate> test_cert( |
| 836 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 836 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 837 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 837 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 838 ProofVerifyDetailsChromium verify_details; | 838 ProofVerifyDetailsChromium verify_details; |
| 839 verify_details.cert_verify_result.verified_cert = test_cert; | 839 verify_details.cert_verify_result.verified_cert = test_cert; |
| 840 verify_details.cert_verify_result.is_issued_by_known_root = true; | 840 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 841 verify_details.cert_verify_result.public_key_hashes.push_back( | 841 verify_details.cert_verify_result.public_key_hashes.push_back( |
| 842 test::GetTestHashValue(primary_pin)); | 842 test::GetTestHashValue(primary_pin)); |
| 843 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 843 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 844 | 844 |
| 845 | 845 |
| 846 host_resolver_.set_synchronous_mode(true); | 846 host_resolver_.set_synchronous_mode(true); |
| 847 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 847 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 882 EXPECT_TRUE(socket_data1.at_read_eof()); | 882 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 883 EXPECT_TRUE(socket_data1.at_write_eof()); | 883 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 884 EXPECT_TRUE(socket_data2.at_read_eof()); | 884 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 885 EXPECT_TRUE(socket_data2.at_write_eof()); | 885 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 886 } | 886 } |
| 887 | 887 |
| 888 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithDifferentPins) { | 888 TEST_P(QuicStreamFactoryTest, NoHttpsPoolingWithDifferentPins) { |
| 889 MockRead reads[] = { | 889 MockRead reads[] = { |
| 890 MockRead(ASYNC, OK, 0) // EOF | 890 MockRead(ASYNC, OK, 0) // EOF |
| 891 }; | 891 }; |
| 892 DeterministicSocketData socket_data1(reads, arraysize(reads), NULL, 0); | 892 DeterministicSocketData socket_data1(reads, arraysize(reads), nullptr, 0); |
| 893 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 893 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 894 socket_factory_.AddSocketDataProvider(&socket_data1); | 894 socket_factory_.AddSocketDataProvider(&socket_data1); |
| 895 socket_factory_.AddSocketDataProvider(&socket_data2); | 895 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 896 socket_data1.StopAfter(1); | 896 socket_data1.StopAfter(1); |
| 897 socket_data2.StopAfter(1); | 897 socket_data2.StopAfter(1); |
| 898 | 898 |
| 899 HostPortPair server1("www.example.org", 443); | 899 HostPortPair server1("www.example.org", 443); |
| 900 HostPortPair server2("mail.example.org", 443); | 900 HostPortPair server2("mail.example.org", 443); |
| 901 uint8 primary_pin = 1; | 901 uint8 primary_pin = 1; |
| 902 uint8 backup_pin = 2; | 902 uint8 backup_pin = 2; |
| 903 uint8 bad_pin = 3; | 903 uint8 bad_pin = 3; |
| 904 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, | 904 test::AddPin(&transport_security_state_, "mail.example.org", primary_pin, |
| 905 backup_pin); | 905 backup_pin); |
| 906 | 906 |
| 907 // Load a cert that is valid for: | 907 // Load a cert that is valid for: |
| 908 // www.example.org (server1) | 908 // www.example.org (server1) |
| 909 // mail.example.org (server2) | 909 // mail.example.org (server2) |
| 910 base::FilePath certs_dir = GetTestCertsDirectory(); | 910 base::FilePath certs_dir = GetTestCertsDirectory(); |
| 911 scoped_refptr<X509Certificate> test_cert( | 911 scoped_refptr<X509Certificate> test_cert( |
| 912 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | 912 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); |
| 913 ASSERT_NE(static_cast<X509Certificate*>(NULL), test_cert.get()); | 913 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); |
| 914 ProofVerifyDetailsChromium verify_details; | 914 ProofVerifyDetailsChromium verify_details; |
| 915 verify_details.cert_verify_result.verified_cert = test_cert; | 915 verify_details.cert_verify_result.verified_cert = test_cert; |
| 916 verify_details.cert_verify_result.is_issued_by_known_root = true; | 916 verify_details.cert_verify_result.is_issued_by_known_root = true; |
| 917 verify_details.cert_verify_result.public_key_hashes.push_back( | 917 verify_details.cert_verify_result.public_key_hashes.push_back( |
| 918 test::GetTestHashValue(bad_pin)); | 918 test::GetTestHashValue(bad_pin)); |
| 919 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); | 919 crypto_client_stream_factory_.set_proof_verify_details(&verify_details); |
| 920 | 920 |
| 921 | 921 |
| 922 host_resolver_.set_synchronous_mode(true); | 922 host_resolver_.set_synchronous_mode(true); |
| 923 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); | 923 host_resolver_.rules()->AddIPLiteralRule(server1.host(), "192.168.0.1", ""); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 955 EXPECT_TRUE(socket_data1.at_read_eof()); | 955 EXPECT_TRUE(socket_data1.at_read_eof()); |
| 956 EXPECT_TRUE(socket_data1.at_write_eof()); | 956 EXPECT_TRUE(socket_data1.at_write_eof()); |
| 957 EXPECT_TRUE(socket_data2.at_read_eof()); | 957 EXPECT_TRUE(socket_data2.at_read_eof()); |
| 958 EXPECT_TRUE(socket_data2.at_write_eof()); | 958 EXPECT_TRUE(socket_data2.at_write_eof()); |
| 959 } | 959 } |
| 960 | 960 |
| 961 TEST_P(QuicStreamFactoryTest, Goaway) { | 961 TEST_P(QuicStreamFactoryTest, Goaway) { |
| 962 MockRead reads[] = { | 962 MockRead reads[] = { |
| 963 MockRead(ASYNC, OK, 0) // EOF | 963 MockRead(ASYNC, OK, 0) // EOF |
| 964 }; | 964 }; |
| 965 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 965 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 966 socket_data.StopAfter(1); | 966 socket_data.StopAfter(1); |
| 967 socket_factory_.AddSocketDataProvider(&socket_data); | 967 socket_factory_.AddSocketDataProvider(&socket_data); |
| 968 DeterministicSocketData socket_data2(reads, arraysize(reads), NULL, 0); | 968 DeterministicSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
| 969 socket_data2.StopAfter(1); | 969 socket_data2.StopAfter(1); |
| 970 socket_factory_.AddSocketDataProvider(&socket_data2); | 970 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 971 | 971 |
| 972 QuicStreamRequest request(&factory_); | 972 QuicStreamRequest request(&factory_); |
| 973 EXPECT_EQ(ERR_IO_PENDING, | 973 EXPECT_EQ(ERR_IO_PENDING, |
| 974 request.Request(host_port_pair_, | 974 request.Request(host_port_pair_, |
| 975 is_https_, | 975 is_https_, |
| 976 privacy_mode_, | 976 privacy_mode_, |
| 977 "GET", | 977 "GET", |
| 978 net_log_, | 978 net_log_, |
| 979 callback_.callback())); | 979 callback_.callback())); |
| 980 | 980 |
| 981 EXPECT_EQ(OK, callback_.WaitForResult()); | 981 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 982 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 982 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 983 EXPECT_TRUE(stream.get()); | 983 EXPECT_TRUE(stream.get()); |
| 984 | 984 |
| 985 // Mark the session as going away. Ensure that while it is still alive | 985 // Mark the session as going away. Ensure that while it is still alive |
| 986 // that it is no longer active. | 986 // that it is no longer active. |
| 987 QuicClientSession* session = QuicStreamFactoryPeer::GetActiveSession( | 987 QuicClientSession* session = QuicStreamFactoryPeer::GetActiveSession( |
| 988 &factory_, host_port_pair_, is_https_); | 988 &factory_, host_port_pair_, is_https_); |
| 989 factory_.OnSessionGoingAway(session); | 989 factory_.OnSessionGoingAway(session); |
| 990 EXPECT_EQ(true, QuicStreamFactoryPeer::IsLiveSession(&factory_, session)); | 990 EXPECT_EQ(true, QuicStreamFactoryPeer::IsLiveSession(&factory_, session)); |
| 991 EXPECT_FALSE(QuicStreamFactoryPeer::HasActiveSession( | 991 EXPECT_FALSE(QuicStreamFactoryPeer::HasActiveSession( |
| 992 &factory_, host_port_pair_, is_https_)); | 992 &factory_, host_port_pair_, is_https_)); |
| 993 EXPECT_EQ(NULL, CreateIfSessionExists(host_port_pair_, net_log_).get()); | 993 EXPECT_EQ(nullptr, CreateIfSessionExists(host_port_pair_, net_log_).get()); |
| 994 | 994 |
| 995 // Create a new request for the same destination and verify that a | 995 // Create a new request for the same destination and verify that a |
| 996 // new session is created. | 996 // new session is created. |
| 997 QuicStreamRequest request2(&factory_); | 997 QuicStreamRequest request2(&factory_); |
| 998 EXPECT_EQ(ERR_IO_PENDING, | 998 EXPECT_EQ(ERR_IO_PENDING, |
| 999 request2.Request(host_port_pair_, | 999 request2.Request(host_port_pair_, |
| 1000 is_https_, | 1000 is_https_, |
| 1001 privacy_mode_, | 1001 privacy_mode_, |
| 1002 "GET", | 1002 "GET", |
| 1003 net_log_, | 1003 net_log_, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1082 ASSERT_TRUE(callback_.have_result()); | 1082 ASSERT_TRUE(callback_.have_result()); |
| 1083 | 1083 |
| 1084 EXPECT_EQ(OK, callback_.WaitForResult()); | 1084 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 1085 | 1085 |
| 1086 EXPECT_TRUE(socket_data.at_read_eof()); | 1086 EXPECT_TRUE(socket_data.at_read_eof()); |
| 1087 EXPECT_TRUE(socket_data.at_write_eof()); | 1087 EXPECT_TRUE(socket_data.at_write_eof()); |
| 1088 STLDeleteElements(&streams); | 1088 STLDeleteElements(&streams); |
| 1089 } | 1089 } |
| 1090 | 1090 |
| 1091 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { | 1091 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { |
| 1092 DeterministicSocketData socket_data(NULL, 0, NULL, 0); | 1092 DeterministicSocketData socket_data(nullptr, 0, nullptr, 0); |
| 1093 socket_factory_.AddSocketDataProvider(&socket_data); | 1093 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1094 | 1094 |
| 1095 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); | 1095 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); |
| 1096 | 1096 |
| 1097 QuicStreamRequest request(&factory_); | 1097 QuicStreamRequest request(&factory_); |
| 1098 EXPECT_EQ(ERR_IO_PENDING, | 1098 EXPECT_EQ(ERR_IO_PENDING, |
| 1099 request.Request(host_port_pair_, | 1099 request.Request(host_port_pair_, |
| 1100 is_https_, | 1100 is_https_, |
| 1101 privacy_mode_, | 1101 privacy_mode_, |
| 1102 "GET", | 1102 "GET", |
| 1103 net_log_, | 1103 net_log_, |
| 1104 callback_.callback())); | 1104 callback_.callback())); |
| 1105 | 1105 |
| 1106 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); | 1106 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); |
| 1107 | 1107 |
| 1108 EXPECT_TRUE(socket_data.at_read_eof()); | 1108 EXPECT_TRUE(socket_data.at_read_eof()); |
| 1109 EXPECT_TRUE(socket_data.at_write_eof()); | 1109 EXPECT_TRUE(socket_data.at_write_eof()); |
| 1110 } | 1110 } |
| 1111 | 1111 |
| 1112 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { | 1112 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { |
| 1113 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); | 1113 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); |
| 1114 DeterministicSocketData socket_data(NULL, 0, NULL, 0); | 1114 DeterministicSocketData socket_data(nullptr, 0, nullptr, 0); |
| 1115 socket_data.set_connect_data(connect); | 1115 socket_data.set_connect_data(connect); |
| 1116 socket_factory_.AddSocketDataProvider(&socket_data); | 1116 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1117 socket_data.StopAfter(1); | 1117 socket_data.StopAfter(1); |
| 1118 | 1118 |
| 1119 QuicStreamRequest request(&factory_); | 1119 QuicStreamRequest request(&factory_); |
| 1120 EXPECT_EQ(ERR_IO_PENDING, | 1120 EXPECT_EQ(ERR_IO_PENDING, |
| 1121 request.Request(host_port_pair_, | 1121 request.Request(host_port_pair_, |
| 1122 is_https_, | 1122 is_https_, |
| 1123 privacy_mode_, | 1123 privacy_mode_, |
| 1124 "GET", | 1124 "GET", |
| 1125 net_log_, | 1125 net_log_, |
| 1126 callback_.callback())); | 1126 callback_.callback())); |
| 1127 | 1127 |
| 1128 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); | 1128 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); |
| 1129 | 1129 |
| 1130 EXPECT_TRUE(socket_data.at_read_eof()); | 1130 EXPECT_TRUE(socket_data.at_read_eof()); |
| 1131 EXPECT_TRUE(socket_data.at_write_eof()); | 1131 EXPECT_TRUE(socket_data.at_write_eof()); |
| 1132 } | 1132 } |
| 1133 | 1133 |
| 1134 TEST_P(QuicStreamFactoryTest, CancelCreate) { | 1134 TEST_P(QuicStreamFactoryTest, CancelCreate) { |
| 1135 MockRead reads[] = { | 1135 MockRead reads[] = { |
| 1136 MockRead(ASYNC, OK, 0) // EOF | 1136 MockRead(ASYNC, OK, 0) // EOF |
| 1137 }; | 1137 }; |
| 1138 DeterministicSocketData socket_data(reads, arraysize(reads), NULL, 0); | 1138 DeterministicSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
| 1139 socket_factory_.AddSocketDataProvider(&socket_data); | 1139 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1140 { | 1140 { |
| 1141 QuicStreamRequest request(&factory_); | 1141 QuicStreamRequest request(&factory_); |
| 1142 EXPECT_EQ(ERR_IO_PENDING, | 1142 EXPECT_EQ(ERR_IO_PENDING, |
| 1143 request.Request(host_port_pair_, | 1143 request.Request(host_port_pair_, |
| 1144 is_https_, | 1144 is_https_, |
| 1145 privacy_mode_, | 1145 privacy_mode_, |
| 1146 "GET", | 1146 "GET", |
| 1147 net_log_, | 1147 net_log_, |
| 1148 callback_.callback())); | 1148 callback_.callback())); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1186 } | 1186 } |
| 1187 | 1187 |
| 1188 TEST_P(QuicStreamFactoryTest, CloseAllSessions) { | 1188 TEST_P(QuicStreamFactoryTest, CloseAllSessions) { |
| 1189 MockRead reads[] = { | 1189 MockRead reads[] = { |
| 1190 MockRead(ASYNC, 0, 0) // EOF | 1190 MockRead(ASYNC, 0, 0) // EOF |
| 1191 }; | 1191 }; |
| 1192 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); | 1192 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); |
| 1193 std::vector<MockWrite> writes; | 1193 std::vector<MockWrite> writes; |
| 1194 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); | 1194 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); |
| 1195 DeterministicSocketData socket_data(reads, arraysize(reads), | 1195 DeterministicSocketData socket_data(reads, arraysize(reads), |
| 1196 writes.empty() ? NULL : &writes[0], | 1196 writes.empty() ? nullptr : &writes[0], |
| 1197 writes.size()); | 1197 writes.size()); |
| 1198 socket_factory_.AddSocketDataProvider(&socket_data); | 1198 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1199 socket_data.StopAfter(1); | 1199 socket_data.StopAfter(1); |
| 1200 | 1200 |
| 1201 MockRead reads2[] = { | 1201 MockRead reads2[] = { |
| 1202 MockRead(ASYNC, 0, 0) // EOF | 1202 MockRead(ASYNC, 0, 0) // EOF |
| 1203 }; | 1203 }; |
| 1204 DeterministicSocketData socket_data2(reads2, arraysize(reads2), NULL, 0); | 1204 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1205 socket_factory_.AddSocketDataProvider(&socket_data2); | 1205 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1206 socket_data2.StopAfter(1); | 1206 socket_data2.StopAfter(1); |
| 1207 | 1207 |
| 1208 QuicStreamRequest request(&factory_); | 1208 QuicStreamRequest request(&factory_); |
| 1209 EXPECT_EQ(ERR_IO_PENDING, | 1209 EXPECT_EQ(ERR_IO_PENDING, |
| 1210 request.Request(host_port_pair_, | 1210 request.Request(host_port_pair_, |
| 1211 is_https_, | 1211 is_https_, |
| 1212 privacy_mode_, | 1212 privacy_mode_, |
| 1213 "GET", | 1213 "GET", |
| 1214 net_log_, | 1214 net_log_, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1249 } | 1249 } |
| 1250 | 1250 |
| 1251 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { | 1251 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { |
| 1252 MockRead reads[] = { | 1252 MockRead reads[] = { |
| 1253 MockRead(ASYNC, 0, 0) // EOF | 1253 MockRead(ASYNC, 0, 0) // EOF |
| 1254 }; | 1254 }; |
| 1255 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); | 1255 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); |
| 1256 std::vector<MockWrite> writes; | 1256 std::vector<MockWrite> writes; |
| 1257 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); | 1257 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); |
| 1258 DeterministicSocketData socket_data(reads, arraysize(reads), | 1258 DeterministicSocketData socket_data(reads, arraysize(reads), |
| 1259 writes.empty() ? NULL : &writes[0], | 1259 writes.empty() ? nullptr : &writes[0], |
| 1260 writes.size()); | 1260 writes.size()); |
| 1261 socket_factory_.AddSocketDataProvider(&socket_data); | 1261 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1262 socket_data.StopAfter(1); | 1262 socket_data.StopAfter(1); |
| 1263 | 1263 |
| 1264 MockRead reads2[] = { | 1264 MockRead reads2[] = { |
| 1265 MockRead(ASYNC, 0, 0) // EOF | 1265 MockRead(ASYNC, 0, 0) // EOF |
| 1266 }; | 1266 }; |
| 1267 DeterministicSocketData socket_data2(reads2, arraysize(reads2), NULL, 0); | 1267 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1268 socket_factory_.AddSocketDataProvider(&socket_data2); | 1268 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1269 socket_data2.StopAfter(1); | 1269 socket_data2.StopAfter(1); |
| 1270 | 1270 |
| 1271 QuicStreamRequest request(&factory_); | 1271 QuicStreamRequest request(&factory_); |
| 1272 EXPECT_EQ(ERR_IO_PENDING, | 1272 EXPECT_EQ(ERR_IO_PENDING, |
| 1273 request.Request(host_port_pair_, | 1273 request.Request(host_port_pair_, |
| 1274 is_https_, | 1274 is_https_, |
| 1275 privacy_mode_, | 1275 privacy_mode_, |
| 1276 "GET", | 1276 "GET", |
| 1277 net_log_, | 1277 net_log_, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 } | 1313 } |
| 1314 | 1314 |
| 1315 TEST_P(QuicStreamFactoryTest, OnCertAdded) { | 1315 TEST_P(QuicStreamFactoryTest, OnCertAdded) { |
| 1316 MockRead reads[] = { | 1316 MockRead reads[] = { |
| 1317 MockRead(ASYNC, 0, 0) // EOF | 1317 MockRead(ASYNC, 0, 0) // EOF |
| 1318 }; | 1318 }; |
| 1319 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); | 1319 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); |
| 1320 std::vector<MockWrite> writes; | 1320 std::vector<MockWrite> writes; |
| 1321 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); | 1321 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); |
| 1322 DeterministicSocketData socket_data(reads, arraysize(reads), | 1322 DeterministicSocketData socket_data(reads, arraysize(reads), |
| 1323 writes.empty() ? NULL : &writes[0], | 1323 writes.empty() ? nullptr : &writes[0], |
| 1324 writes.size()); | 1324 writes.size()); |
| 1325 socket_factory_.AddSocketDataProvider(&socket_data); | 1325 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1326 socket_data.StopAfter(1); | 1326 socket_data.StopAfter(1); |
| 1327 | 1327 |
| 1328 MockRead reads2[] = { | 1328 MockRead reads2[] = { |
| 1329 MockRead(ASYNC, 0, 0) // EOF | 1329 MockRead(ASYNC, 0, 0) // EOF |
| 1330 }; | 1330 }; |
| 1331 DeterministicSocketData socket_data2(reads2, arraysize(reads2), NULL, 0); | 1331 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1332 socket_factory_.AddSocketDataProvider(&socket_data2); | 1332 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1333 socket_data2.StopAfter(1); | 1333 socket_data2.StopAfter(1); |
| 1334 | 1334 |
| 1335 QuicStreamRequest request(&factory_); | 1335 QuicStreamRequest request(&factory_); |
| 1336 EXPECT_EQ(ERR_IO_PENDING, | 1336 EXPECT_EQ(ERR_IO_PENDING, |
| 1337 request.Request(host_port_pair_, | 1337 request.Request(host_port_pair_, |
| 1338 is_https_, | 1338 is_https_, |
| 1339 privacy_mode_, | 1339 privacy_mode_, |
| 1340 "GET", | 1340 "GET", |
| 1341 net_log_, | 1341 net_log_, |
| 1342 callback_.callback())); | 1342 callback_.callback())); |
| 1343 | 1343 |
| 1344 EXPECT_EQ(OK, callback_.WaitForResult()); | 1344 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 1345 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 1345 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 1346 HttpRequestInfo request_info; | 1346 HttpRequestInfo request_info; |
| 1347 EXPECT_EQ(OK, stream->InitializeStream(&request_info, | 1347 EXPECT_EQ(OK, stream->InitializeStream(&request_info, |
| 1348 DEFAULT_PRIORITY, | 1348 DEFAULT_PRIORITY, |
| 1349 net_log_, CompletionCallback())); | 1349 net_log_, CompletionCallback())); |
| 1350 | 1350 |
| 1351 // Add a cert and verify that stream saw the event. | 1351 // Add a cert and verify that stream saw the event. |
| 1352 factory_.OnCertAdded(NULL); | 1352 factory_.OnCertAdded(nullptr); |
| 1353 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 1353 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 1354 stream->ReadResponseHeaders(callback_.callback())); | 1354 stream->ReadResponseHeaders(callback_.callback())); |
| 1355 EXPECT_FALSE(factory_.require_confirmation()); | 1355 EXPECT_FALSE(factory_.require_confirmation()); |
| 1356 | 1356 |
| 1357 // Now attempting to request a stream to the same origin should create | 1357 // Now attempting to request a stream to the same origin should create |
| 1358 // a new session. | 1358 // a new session. |
| 1359 | 1359 |
| 1360 QuicStreamRequest request2(&factory_); | 1360 QuicStreamRequest request2(&factory_); |
| 1361 EXPECT_EQ(ERR_IO_PENDING, | 1361 EXPECT_EQ(ERR_IO_PENDING, |
| 1362 request2.Request(host_port_pair_, | 1362 request2.Request(host_port_pair_, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1377 } | 1377 } |
| 1378 | 1378 |
| 1379 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { | 1379 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { |
| 1380 MockRead reads[] = { | 1380 MockRead reads[] = { |
| 1381 MockRead(ASYNC, 0, 0) // EOF | 1381 MockRead(ASYNC, 0, 0) // EOF |
| 1382 }; | 1382 }; |
| 1383 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); | 1383 scoped_ptr<QuicEncryptedPacket> rst(ConstructRstPacket()); |
| 1384 std::vector<MockWrite> writes; | 1384 std::vector<MockWrite> writes; |
| 1385 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); | 1385 writes.push_back(MockWrite(ASYNC, rst->data(), rst->length(), 1)); |
| 1386 DeterministicSocketData socket_data(reads, arraysize(reads), | 1386 DeterministicSocketData socket_data(reads, arraysize(reads), |
| 1387 writes.empty() ? NULL : &writes[0], | 1387 writes.empty() ? nullptr : &writes[0], |
| 1388 writes.size()); | 1388 writes.size()); |
| 1389 socket_factory_.AddSocketDataProvider(&socket_data); | 1389 socket_factory_.AddSocketDataProvider(&socket_data); |
| 1390 socket_data.StopAfter(1); | 1390 socket_data.StopAfter(1); |
| 1391 | 1391 |
| 1392 MockRead reads2[] = { | 1392 MockRead reads2[] = { |
| 1393 MockRead(ASYNC, 0, 0) // EOF | 1393 MockRead(ASYNC, 0, 0) // EOF |
| 1394 }; | 1394 }; |
| 1395 DeterministicSocketData socket_data2(reads2, arraysize(reads2), NULL, 0); | 1395 DeterministicSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
| 1396 socket_factory_.AddSocketDataProvider(&socket_data2); | 1396 socket_factory_.AddSocketDataProvider(&socket_data2); |
| 1397 socket_data2.StopAfter(1); | 1397 socket_data2.StopAfter(1); |
| 1398 | 1398 |
| 1399 QuicStreamRequest request(&factory_); | 1399 QuicStreamRequest request(&factory_); |
| 1400 EXPECT_EQ(ERR_IO_PENDING, | 1400 EXPECT_EQ(ERR_IO_PENDING, |
| 1401 request.Request(host_port_pair_, | 1401 request.Request(host_port_pair_, |
| 1402 is_https_, | 1402 is_https_, |
| 1403 privacy_mode_, | 1403 privacy_mode_, |
| 1404 "GET", | 1404 "GET", |
| 1405 net_log_, | 1405 net_log_, |
| 1406 callback_.callback())); | 1406 callback_.callback())); |
| 1407 | 1407 |
| 1408 EXPECT_EQ(OK, callback_.WaitForResult()); | 1408 EXPECT_EQ(OK, callback_.WaitForResult()); |
| 1409 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); | 1409 scoped_ptr<QuicHttpStream> stream = request.ReleaseStream(); |
| 1410 HttpRequestInfo request_info; | 1410 HttpRequestInfo request_info; |
| 1411 EXPECT_EQ(OK, stream->InitializeStream(&request_info, | 1411 EXPECT_EQ(OK, stream->InitializeStream(&request_info, |
| 1412 DEFAULT_PRIORITY, | 1412 DEFAULT_PRIORITY, |
| 1413 net_log_, CompletionCallback())); | 1413 net_log_, CompletionCallback())); |
| 1414 | 1414 |
| 1415 // Change the CA cert and verify that stream saw the event. | 1415 // Change the CA cert and verify that stream saw the event. |
| 1416 factory_.OnCACertChanged(NULL); | 1416 factory_.OnCACertChanged(nullptr); |
| 1417 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 1417 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
| 1418 stream->ReadResponseHeaders(callback_.callback())); | 1418 stream->ReadResponseHeaders(callback_.callback())); |
| 1419 EXPECT_FALSE(factory_.require_confirmation()); | 1419 EXPECT_FALSE(factory_.require_confirmation()); |
| 1420 | 1420 |
| 1421 // Now attempting to request a stream to the same origin should create | 1421 // Now attempting to request a stream to the same origin should create |
| 1422 // a new session. | 1422 // a new session. |
| 1423 | 1423 |
| 1424 QuicStreamRequest request2(&factory_); | 1424 QuicStreamRequest request2(&factory_); |
| 1425 EXPECT_EQ(ERR_IO_PENDING, | 1425 EXPECT_EQ(ERR_IO_PENDING, |
| 1426 request2.Request(host_port_pair_, | 1426 request2.Request(host_port_pair_, |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1504 QuicCryptoClientConfig::CachedState* cached2 = | 1504 QuicCryptoClientConfig::CachedState* cached2 = |
| 1505 crypto_config->LookupOrCreate(server_id2); | 1505 crypto_config->LookupOrCreate(server_id2); |
| 1506 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token()); | 1506 EXPECT_NE(cached1->source_address_token(), cached2->source_address_token()); |
| 1507 EXPECT_TRUE(cached2->source_address_token().empty()); | 1507 EXPECT_TRUE(cached2->source_address_token().empty()); |
| 1508 EXPECT_FALSE(cached2->proof_valid()); | 1508 EXPECT_FALSE(cached2->proof_valid()); |
| 1509 } | 1509 } |
| 1510 } | 1510 } |
| 1511 | 1511 |
| 1512 } // namespace test | 1512 } // namespace test |
| 1513 } // namespace net | 1513 } // namespace net |
| OLD | NEW |