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

Side by Side Diff: net/socket/ssl_client_socket_pool_unittest.cc

Issue 2140673002: Remove SPDY/3.1 tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/http/http_stream_factory_impl_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/http/http_proxy_client_socket_pool.h" 5 #include "net/http/http_proxy_client_socket_pool.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 params.host_resolver = &host_resolver_; 171 params.host_resolver = &host_resolver_;
172 params.cert_verifier = cert_verifier_.get(); 172 params.cert_verifier = cert_verifier_.get();
173 params.transport_security_state = transport_security_state_.get(); 173 params.transport_security_state = transport_security_state_.get();
174 params.cert_transparency_verifier = &ct_verifier_; 174 params.cert_transparency_verifier = &ct_verifier_;
175 params.ct_policy_enforcer = &ct_policy_enforcer_; 175 params.ct_policy_enforcer = &ct_policy_enforcer_;
176 params.proxy_service = proxy_service_.get(); 176 params.proxy_service = proxy_service_.get();
177 params.client_socket_factory = &socket_factory_; 177 params.client_socket_factory = &socket_factory_;
178 params.ssl_config_service = ssl_config_service_.get(); 178 params.ssl_config_service = ssl_config_service_.get();
179 params.http_auth_handler_factory = http_auth_handler_factory_.get(); 179 params.http_auth_handler_factory = http_auth_handler_factory_.get();
180 params.http_server_properties = http_server_properties_.get(); 180 params.http_server_properties = http_server_properties_.get();
181 params.spdy_default_protocol = GetParam(); 181 params.spdy_default_protocol = kProtoHTTP2;
182 return new HttpNetworkSession(params); 182 return new HttpNetworkSession(params);
183 } 183 }
184 184
185 void TestIPPoolingDisabled(SSLSocketDataProvider* ssl); 185 void TestIPPoolingDisabled(SSLSocketDataProvider* ssl);
186 186
187 MockClientSocketFactory socket_factory_; 187 MockClientSocketFactory socket_factory_;
188 MockCachingHostResolver host_resolver_; 188 MockCachingHostResolver host_resolver_;
189 std::unique_ptr<CertVerifier> cert_verifier_; 189 std::unique_ptr<CertVerifier> cert_verifier_;
190 std::unique_ptr<TransportSecurityState> transport_security_state_; 190 std::unique_ptr<TransportSecurityState> transport_security_state_;
191 MultiLogCTVerifier ct_verifier_; 191 MultiLogCTVerifier ct_verifier_;
(...skipping 12 matching lines...) Expand all
204 scoped_refptr<SOCKSSocketParams> socks_socket_params_; 204 scoped_refptr<SOCKSSocketParams> socks_socket_params_;
205 MockSOCKSClientSocketPool socks_socket_pool_; 205 MockSOCKSClientSocketPool socks_socket_pool_;
206 206
207 scoped_refptr<HttpProxySocketParams> http_proxy_socket_params_; 207 scoped_refptr<HttpProxySocketParams> http_proxy_socket_params_;
208 HttpProxyClientSocketPool http_proxy_socket_pool_; 208 HttpProxyClientSocketPool http_proxy_socket_pool_;
209 209
210 SSLConfig ssl_config_; 210 SSLConfig ssl_config_;
211 std::unique_ptr<SSLClientSocketPool> pool_; 211 std::unique_ptr<SSLClientSocketPool> pool_;
212 }; 212 };
213 213
214 INSTANTIATE_TEST_CASE_P(NextProto, 214 TEST_F(SSLClientSocketPoolTest, TCPFail) {
215 SSLClientSocketPoolTest,
216 testing::Values(kProtoSPDY31,
217 kProtoHTTP2));
218
219 TEST_P(SSLClientSocketPoolTest, TCPFail) {
220 StaticSocketDataProvider data; 215 StaticSocketDataProvider data;
221 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); 216 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED));
222 socket_factory_.AddSocketDataProvider(&data); 217 socket_factory_.AddSocketDataProvider(&data);
223 218
224 CreatePool(true /* tcp pool */, false, false); 219 CreatePool(true /* tcp pool */, false, false);
225 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 220 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
226 false); 221 false);
227 222
228 ClientSocketHandle handle; 223 ClientSocketHandle handle;
229 int rv = 224 int rv =
230 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 225 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
231 CompletionCallback(), pool_.get(), BoundNetLog()); 226 CompletionCallback(), pool_.get(), BoundNetLog());
232 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED)); 227 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED));
233 EXPECT_FALSE(handle.is_initialized()); 228 EXPECT_FALSE(handle.is_initialized());
234 EXPECT_FALSE(handle.socket()); 229 EXPECT_FALSE(handle.socket());
235 EXPECT_FALSE(handle.is_ssl_error()); 230 EXPECT_FALSE(handle.is_ssl_error());
236 ASSERT_EQ(1u, handle.connection_attempts().size()); 231 ASSERT_EQ(1u, handle.connection_attempts().size());
237 EXPECT_THAT(handle.connection_attempts()[0].result, 232 EXPECT_THAT(handle.connection_attempts()[0].result,
238 IsError(ERR_CONNECTION_FAILED)); 233 IsError(ERR_CONNECTION_FAILED));
239 } 234 }
240 235
241 TEST_P(SSLClientSocketPoolTest, TCPFailAsync) { 236 TEST_F(SSLClientSocketPoolTest, TCPFailAsync) {
242 StaticSocketDataProvider data; 237 StaticSocketDataProvider data;
243 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); 238 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED));
244 socket_factory_.AddSocketDataProvider(&data); 239 socket_factory_.AddSocketDataProvider(&data);
245 240
246 CreatePool(true /* tcp pool */, false, false); 241 CreatePool(true /* tcp pool */, false, false);
247 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 242 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
248 false); 243 false);
249 244
250 ClientSocketHandle handle; 245 ClientSocketHandle handle;
251 TestCompletionCallback callback; 246 TestCompletionCallback callback;
252 int rv = 247 int rv =
253 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 248 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
254 callback.callback(), pool_.get(), BoundNetLog()); 249 callback.callback(), pool_.get(), BoundNetLog());
255 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 250 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
256 EXPECT_FALSE(handle.is_initialized()); 251 EXPECT_FALSE(handle.is_initialized());
257 EXPECT_FALSE(handle.socket()); 252 EXPECT_FALSE(handle.socket());
258 253
259 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED)); 254 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED));
260 EXPECT_FALSE(handle.is_initialized()); 255 EXPECT_FALSE(handle.is_initialized());
261 EXPECT_FALSE(handle.socket()); 256 EXPECT_FALSE(handle.socket());
262 EXPECT_FALSE(handle.is_ssl_error()); 257 EXPECT_FALSE(handle.is_ssl_error());
263 ASSERT_EQ(1u, handle.connection_attempts().size()); 258 ASSERT_EQ(1u, handle.connection_attempts().size());
264 EXPECT_THAT(handle.connection_attempts()[0].result, 259 EXPECT_THAT(handle.connection_attempts()[0].result,
265 IsError(ERR_CONNECTION_FAILED)); 260 IsError(ERR_CONNECTION_FAILED));
266 } 261 }
267 262
268 TEST_P(SSLClientSocketPoolTest, BasicDirect) { 263 TEST_F(SSLClientSocketPoolTest, BasicDirect) {
269 StaticSocketDataProvider data; 264 StaticSocketDataProvider data;
270 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 265 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
271 socket_factory_.AddSocketDataProvider(&data); 266 socket_factory_.AddSocketDataProvider(&data);
272 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 267 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
273 socket_factory_.AddSSLSocketDataProvider(&ssl); 268 socket_factory_.AddSSLSocketDataProvider(&ssl);
274 269
275 CreatePool(true /* tcp pool */, false, false); 270 CreatePool(true /* tcp pool */, false, false);
276 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 271 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
277 false); 272 false);
278 273
279 ClientSocketHandle handle; 274 ClientSocketHandle handle;
280 TestCompletionCallback callback; 275 TestCompletionCallback callback;
281 int rv = 276 int rv =
282 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 277 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
283 callback.callback(), pool_.get(), BoundNetLog()); 278 callback.callback(), pool_.get(), BoundNetLog());
284 EXPECT_THAT(rv, IsOk()); 279 EXPECT_THAT(rv, IsOk());
285 EXPECT_TRUE(handle.is_initialized()); 280 EXPECT_TRUE(handle.is_initialized());
286 EXPECT_TRUE(handle.socket()); 281 EXPECT_TRUE(handle.socket());
287 TestLoadTimingInfo(handle); 282 TestLoadTimingInfo(handle);
288 EXPECT_EQ(0u, handle.connection_attempts().size()); 283 EXPECT_EQ(0u, handle.connection_attempts().size());
289 } 284 }
290 285
291 // Make sure that SSLConnectJob passes on its priority to its 286 // Make sure that SSLConnectJob passes on its priority to its
292 // socket request on Init (for the DIRECT case). 287 // socket request on Init (for the DIRECT case).
293 TEST_P(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) { 288 TEST_F(SSLClientSocketPoolTest, SetSocketRequestPriorityOnInitDirect) {
294 CreatePool(true /* tcp pool */, false, false); 289 CreatePool(true /* tcp pool */, false, false);
295 scoped_refptr<SSLSocketParams> params = 290 scoped_refptr<SSLSocketParams> params =
296 SSLParams(ProxyServer::SCHEME_DIRECT, false); 291 SSLParams(ProxyServer::SCHEME_DIRECT, false);
297 292
298 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) { 293 for (int i = MINIMUM_PRIORITY; i <= MAXIMUM_PRIORITY; ++i) {
299 RequestPriority priority = static_cast<RequestPriority>(i); 294 RequestPriority priority = static_cast<RequestPriority>(i);
300 StaticSocketDataProvider data; 295 StaticSocketDataProvider data;
301 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 296 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
302 socket_factory_.AddSocketDataProvider(&data); 297 socket_factory_.AddSocketDataProvider(&data);
303 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 298 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
304 socket_factory_.AddSSLSocketDataProvider(&ssl); 299 socket_factory_.AddSSLSocketDataProvider(&ssl);
305 300
306 ClientSocketHandle handle; 301 ClientSocketHandle handle;
307 TestCompletionCallback callback; 302 TestCompletionCallback callback;
308 EXPECT_EQ(OK, handle.Init("a", params, priority, 303 EXPECT_EQ(OK, handle.Init("a", params, priority,
309 ClientSocketPool::RespectLimits::ENABLED, 304 ClientSocketPool::RespectLimits::ENABLED,
310 callback.callback(), pool_.get(), BoundNetLog())); 305 callback.callback(), pool_.get(), BoundNetLog()));
311 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority()); 306 EXPECT_EQ(priority, transport_socket_pool_.last_request_priority());
312 handle.socket()->Disconnect(); 307 handle.socket()->Disconnect();
313 } 308 }
314 } 309 }
315 310
316 TEST_P(SSLClientSocketPoolTest, BasicDirectAsync) { 311 TEST_F(SSLClientSocketPoolTest, BasicDirectAsync) {
317 StaticSocketDataProvider data; 312 StaticSocketDataProvider data;
318 socket_factory_.AddSocketDataProvider(&data); 313 socket_factory_.AddSocketDataProvider(&data);
319 SSLSocketDataProvider ssl(ASYNC, OK); 314 SSLSocketDataProvider ssl(ASYNC, OK);
320 socket_factory_.AddSSLSocketDataProvider(&ssl); 315 socket_factory_.AddSSLSocketDataProvider(&ssl);
321 316
322 CreatePool(true /* tcp pool */, false, false); 317 CreatePool(true /* tcp pool */, false, false);
323 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 318 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
324 false); 319 false);
325 320
326 ClientSocketHandle handle; 321 ClientSocketHandle handle;
327 TestCompletionCallback callback; 322 TestCompletionCallback callback;
328 int rv = 323 int rv =
329 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 324 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
330 callback.callback(), pool_.get(), BoundNetLog()); 325 callback.callback(), pool_.get(), BoundNetLog());
331 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 326 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
332 EXPECT_FALSE(handle.is_initialized()); 327 EXPECT_FALSE(handle.is_initialized());
333 EXPECT_FALSE(handle.socket()); 328 EXPECT_FALSE(handle.socket());
334 329
335 EXPECT_THAT(callback.WaitForResult(), IsOk()); 330 EXPECT_THAT(callback.WaitForResult(), IsOk());
336 EXPECT_TRUE(handle.is_initialized()); 331 EXPECT_TRUE(handle.is_initialized());
337 EXPECT_TRUE(handle.socket()); 332 EXPECT_TRUE(handle.socket());
338 TestLoadTimingInfo(handle); 333 TestLoadTimingInfo(handle);
339 } 334 }
340 335
341 TEST_P(SSLClientSocketPoolTest, DirectCertError) { 336 TEST_F(SSLClientSocketPoolTest, DirectCertError) {
342 StaticSocketDataProvider data; 337 StaticSocketDataProvider data;
343 socket_factory_.AddSocketDataProvider(&data); 338 socket_factory_.AddSocketDataProvider(&data);
344 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID); 339 SSLSocketDataProvider ssl(ASYNC, ERR_CERT_COMMON_NAME_INVALID);
345 socket_factory_.AddSSLSocketDataProvider(&ssl); 340 socket_factory_.AddSSLSocketDataProvider(&ssl);
346 341
347 CreatePool(true /* tcp pool */, false, false); 342 CreatePool(true /* tcp pool */, false, false);
348 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 343 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
349 false); 344 false);
350 345
351 ClientSocketHandle handle; 346 ClientSocketHandle handle;
352 TestCompletionCallback callback; 347 TestCompletionCallback callback;
353 int rv = 348 int rv =
354 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 349 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
355 callback.callback(), pool_.get(), BoundNetLog()); 350 callback.callback(), pool_.get(), BoundNetLog());
356 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 351 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
357 EXPECT_FALSE(handle.is_initialized()); 352 EXPECT_FALSE(handle.is_initialized());
358 EXPECT_FALSE(handle.socket()); 353 EXPECT_FALSE(handle.socket());
359 354
360 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CERT_COMMON_NAME_INVALID)); 355 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CERT_COMMON_NAME_INVALID));
361 EXPECT_TRUE(handle.is_initialized()); 356 EXPECT_TRUE(handle.is_initialized());
362 EXPECT_TRUE(handle.socket()); 357 EXPECT_TRUE(handle.socket());
363 TestLoadTimingInfo(handle); 358 TestLoadTimingInfo(handle);
364 } 359 }
365 360
366 TEST_P(SSLClientSocketPoolTest, DirectSSLError) { 361 TEST_F(SSLClientSocketPoolTest, DirectSSLError) {
367 StaticSocketDataProvider data; 362 StaticSocketDataProvider data;
368 socket_factory_.AddSocketDataProvider(&data); 363 socket_factory_.AddSocketDataProvider(&data);
369 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR); 364 SSLSocketDataProvider ssl(ASYNC, ERR_SSL_PROTOCOL_ERROR);
370 socket_factory_.AddSSLSocketDataProvider(&ssl); 365 socket_factory_.AddSSLSocketDataProvider(&ssl);
371 366
372 CreatePool(true /* tcp pool */, false, false); 367 CreatePool(true /* tcp pool */, false, false);
373 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 368 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
374 false); 369 false);
375 370
376 ClientSocketHandle handle; 371 ClientSocketHandle handle;
377 TestCompletionCallback callback; 372 TestCompletionCallback callback;
378 int rv = 373 int rv =
379 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 374 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
380 callback.callback(), pool_.get(), BoundNetLog()); 375 callback.callback(), pool_.get(), BoundNetLog());
381 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 376 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
382 EXPECT_FALSE(handle.is_initialized()); 377 EXPECT_FALSE(handle.is_initialized());
383 EXPECT_FALSE(handle.socket()); 378 EXPECT_FALSE(handle.socket());
384 379
385 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_SSL_PROTOCOL_ERROR)); 380 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_SSL_PROTOCOL_ERROR));
386 EXPECT_FALSE(handle.is_initialized()); 381 EXPECT_FALSE(handle.is_initialized());
387 EXPECT_FALSE(handle.socket()); 382 EXPECT_FALSE(handle.socket());
388 EXPECT_TRUE(handle.is_ssl_error()); 383 EXPECT_TRUE(handle.is_ssl_error());
389 } 384 }
390 385
391 TEST_P(SSLClientSocketPoolTest, DirectWithNPN) { 386 TEST_F(SSLClientSocketPoolTest, DirectWithNPN) {
392 StaticSocketDataProvider data; 387 StaticSocketDataProvider data;
393 socket_factory_.AddSocketDataProvider(&data); 388 socket_factory_.AddSocketDataProvider(&data);
394 SSLSocketDataProvider ssl(ASYNC, OK); 389 SSLSocketDataProvider ssl(ASYNC, OK);
395 ssl.SetNextProto(kProtoHTTP11); 390 ssl.SetNextProto(kProtoHTTP11);
396 socket_factory_.AddSSLSocketDataProvider(&ssl); 391 socket_factory_.AddSSLSocketDataProvider(&ssl);
397 392
398 CreatePool(true /* tcp pool */, false, false); 393 CreatePool(true /* tcp pool */, false, false);
399 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 394 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
400 false); 395 false);
401 396
402 ClientSocketHandle handle; 397 ClientSocketHandle handle;
403 TestCompletionCallback callback; 398 TestCompletionCallback callback;
404 int rv = 399 int rv =
405 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 400 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
406 callback.callback(), pool_.get(), BoundNetLog()); 401 callback.callback(), pool_.get(), BoundNetLog());
407 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 402 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
408 EXPECT_FALSE(handle.is_initialized()); 403 EXPECT_FALSE(handle.is_initialized());
409 EXPECT_FALSE(handle.socket()); 404 EXPECT_FALSE(handle.socket());
410 405
411 EXPECT_THAT(callback.WaitForResult(), IsOk()); 406 EXPECT_THAT(callback.WaitForResult(), IsOk());
412 EXPECT_TRUE(handle.is_initialized()); 407 EXPECT_TRUE(handle.is_initialized());
413 EXPECT_TRUE(handle.socket()); 408 EXPECT_TRUE(handle.socket());
414 TestLoadTimingInfo(handle); 409 TestLoadTimingInfo(handle);
415 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 410 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
416 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 411 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
417 } 412 }
418 413
419 TEST_P(SSLClientSocketPoolTest, DirectNoSPDY) { 414 TEST_F(SSLClientSocketPoolTest, DirectNoSPDY) {
420 StaticSocketDataProvider data; 415 StaticSocketDataProvider data;
421 socket_factory_.AddSocketDataProvider(&data); 416 socket_factory_.AddSocketDataProvider(&data);
422 SSLSocketDataProvider ssl(ASYNC, OK); 417 SSLSocketDataProvider ssl(ASYNC, OK);
423 ssl.SetNextProto(kProtoHTTP11); 418 ssl.SetNextProto(kProtoHTTP11);
424 socket_factory_.AddSSLSocketDataProvider(&ssl); 419 socket_factory_.AddSSLSocketDataProvider(&ssl);
425 420
426 CreatePool(true /* tcp pool */, false, false); 421 CreatePool(true /* tcp pool */, false, false);
427 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 422 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
428 true); 423 true);
429 424
430 ClientSocketHandle handle; 425 ClientSocketHandle handle;
431 TestCompletionCallback callback; 426 TestCompletionCallback callback;
432 int rv = 427 int rv =
433 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 428 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
434 callback.callback(), pool_.get(), BoundNetLog()); 429 callback.callback(), pool_.get(), BoundNetLog());
435 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 430 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
436 EXPECT_FALSE(handle.is_initialized()); 431 EXPECT_FALSE(handle.is_initialized());
437 EXPECT_FALSE(handle.socket()); 432 EXPECT_FALSE(handle.socket());
438 433
439 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NPN_NEGOTIATION_FAILED)); 434 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_NPN_NEGOTIATION_FAILED));
440 EXPECT_FALSE(handle.is_initialized()); 435 EXPECT_FALSE(handle.is_initialized());
441 EXPECT_FALSE(handle.socket()); 436 EXPECT_FALSE(handle.socket());
442 EXPECT_TRUE(handle.is_ssl_error()); 437 EXPECT_TRUE(handle.is_ssl_error());
443 } 438 }
444 439
445 TEST_P(SSLClientSocketPoolTest, DirectGotSPDY) { 440 TEST_F(SSLClientSocketPoolTest, DirectGotSPDY) {
446 StaticSocketDataProvider data; 441 StaticSocketDataProvider data;
447 socket_factory_.AddSocketDataProvider(&data); 442 socket_factory_.AddSocketDataProvider(&data);
448 SSLSocketDataProvider ssl(ASYNC, OK); 443 SSLSocketDataProvider ssl(ASYNC, OK);
449 ssl.SetNextProto(GetParam()); 444 ssl.SetNextProto(kProtoHTTP2);
450 socket_factory_.AddSSLSocketDataProvider(&ssl); 445 socket_factory_.AddSSLSocketDataProvider(&ssl);
451 446
452 CreatePool(true /* tcp pool */, false, false); 447 CreatePool(true /* tcp pool */, false, false);
453 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 448 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
454 true); 449 true);
455 450
456 ClientSocketHandle handle; 451 ClientSocketHandle handle;
457 TestCompletionCallback callback; 452 TestCompletionCallback callback;
458 int rv = 453 int rv =
459 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 454 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
460 callback.callback(), pool_.get(), BoundNetLog()); 455 callback.callback(), pool_.get(), BoundNetLog());
461 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 456 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
462 EXPECT_FALSE(handle.is_initialized()); 457 EXPECT_FALSE(handle.is_initialized());
463 EXPECT_FALSE(handle.socket()); 458 EXPECT_FALSE(handle.socket());
464 459
465 EXPECT_THAT(callback.WaitForResult(), IsOk()); 460 EXPECT_THAT(callback.WaitForResult(), IsOk());
466 EXPECT_TRUE(handle.is_initialized()); 461 EXPECT_TRUE(handle.is_initialized());
467 EXPECT_TRUE(handle.socket()); 462 EXPECT_TRUE(handle.socket());
468 TestLoadTimingInfo(handle); 463 TestLoadTimingInfo(handle);
469 464
470 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 465 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
471 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 466 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
472 std::string proto; 467 std::string proto;
473 ssl_socket->GetNextProto(&proto); 468 ssl_socket->GetNextProto(&proto);
474 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); 469 EXPECT_EQ(kProtoHTTP2, SSLClientSocket::NextProtoFromString(proto));
475 } 470 }
476 471
477 TEST_P(SSLClientSocketPoolTest, DirectGotBonusSPDY) { 472 TEST_F(SSLClientSocketPoolTest, DirectGotBonusSPDY) {
478 StaticSocketDataProvider data; 473 StaticSocketDataProvider data;
479 socket_factory_.AddSocketDataProvider(&data); 474 socket_factory_.AddSocketDataProvider(&data);
480 SSLSocketDataProvider ssl(ASYNC, OK); 475 SSLSocketDataProvider ssl(ASYNC, OK);
481 ssl.SetNextProto(GetParam()); 476 ssl.SetNextProto(kProtoHTTP2);
482 socket_factory_.AddSSLSocketDataProvider(&ssl); 477 socket_factory_.AddSSLSocketDataProvider(&ssl);
483 478
484 CreatePool(true /* tcp pool */, false, false); 479 CreatePool(true /* tcp pool */, false, false);
485 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT, 480 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_DIRECT,
486 true); 481 true);
487 482
488 ClientSocketHandle handle; 483 ClientSocketHandle handle;
489 TestCompletionCallback callback; 484 TestCompletionCallback callback;
490 int rv = 485 int rv =
491 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 486 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
492 callback.callback(), pool_.get(), BoundNetLog()); 487 callback.callback(), pool_.get(), BoundNetLog());
493 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 488 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
494 EXPECT_FALSE(handle.is_initialized()); 489 EXPECT_FALSE(handle.is_initialized());
495 EXPECT_FALSE(handle.socket()); 490 EXPECT_FALSE(handle.socket());
496 491
497 EXPECT_THAT(callback.WaitForResult(), IsOk()); 492 EXPECT_THAT(callback.WaitForResult(), IsOk());
498 EXPECT_TRUE(handle.is_initialized()); 493 EXPECT_TRUE(handle.is_initialized());
499 EXPECT_TRUE(handle.socket()); 494 EXPECT_TRUE(handle.socket());
500 TestLoadTimingInfo(handle); 495 TestLoadTimingInfo(handle);
501 496
502 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket()); 497 SSLClientSocket* ssl_socket = static_cast<SSLClientSocket*>(handle.socket());
503 EXPECT_TRUE(ssl_socket->WasNpnNegotiated()); 498 EXPECT_TRUE(ssl_socket->WasNpnNegotiated());
504 std::string proto; 499 std::string proto;
505 ssl_socket->GetNextProto(&proto); 500 ssl_socket->GetNextProto(&proto);
506 EXPECT_EQ(GetParam(), SSLClientSocket::NextProtoFromString(proto)); 501 EXPECT_EQ(kProtoHTTP2, SSLClientSocket::NextProtoFromString(proto));
507 } 502 }
508 503
509 TEST_P(SSLClientSocketPoolTest, SOCKSFail) { 504 TEST_F(SSLClientSocketPoolTest, SOCKSFail) {
510 StaticSocketDataProvider data; 505 StaticSocketDataProvider data;
511 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); 506 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED));
512 socket_factory_.AddSocketDataProvider(&data); 507 socket_factory_.AddSocketDataProvider(&data);
513 508
514 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 509 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
515 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 510 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
516 false); 511 false);
517 512
518 ClientSocketHandle handle; 513 ClientSocketHandle handle;
519 TestCompletionCallback callback; 514 TestCompletionCallback callback;
520 int rv = 515 int rv =
521 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 516 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
522 callback.callback(), pool_.get(), BoundNetLog()); 517 callback.callback(), pool_.get(), BoundNetLog());
523 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED)); 518 EXPECT_THAT(rv, IsError(ERR_CONNECTION_FAILED));
524 EXPECT_FALSE(handle.is_initialized()); 519 EXPECT_FALSE(handle.is_initialized());
525 EXPECT_FALSE(handle.socket()); 520 EXPECT_FALSE(handle.socket());
526 EXPECT_FALSE(handle.is_ssl_error()); 521 EXPECT_FALSE(handle.is_ssl_error());
527 } 522 }
528 523
529 TEST_P(SSLClientSocketPoolTest, SOCKSFailAsync) { 524 TEST_F(SSLClientSocketPoolTest, SOCKSFailAsync) {
530 StaticSocketDataProvider data; 525 StaticSocketDataProvider data;
531 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); 526 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED));
532 socket_factory_.AddSocketDataProvider(&data); 527 socket_factory_.AddSocketDataProvider(&data);
533 528
534 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 529 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
535 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 530 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
536 false); 531 false);
537 532
538 ClientSocketHandle handle; 533 ClientSocketHandle handle;
539 TestCompletionCallback callback; 534 TestCompletionCallback callback;
540 int rv = 535 int rv =
541 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 536 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
542 callback.callback(), pool_.get(), BoundNetLog()); 537 callback.callback(), pool_.get(), BoundNetLog());
543 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 538 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
544 EXPECT_FALSE(handle.is_initialized()); 539 EXPECT_FALSE(handle.is_initialized());
545 EXPECT_FALSE(handle.socket()); 540 EXPECT_FALSE(handle.socket());
546 541
547 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED)); 542 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_CONNECTION_FAILED));
548 EXPECT_FALSE(handle.is_initialized()); 543 EXPECT_FALSE(handle.is_initialized());
549 EXPECT_FALSE(handle.socket()); 544 EXPECT_FALSE(handle.socket());
550 EXPECT_FALSE(handle.is_ssl_error()); 545 EXPECT_FALSE(handle.is_ssl_error());
551 } 546 }
552 547
553 TEST_P(SSLClientSocketPoolTest, SOCKSBasic) { 548 TEST_F(SSLClientSocketPoolTest, SOCKSBasic) {
554 StaticSocketDataProvider data; 549 StaticSocketDataProvider data;
555 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 550 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
556 socket_factory_.AddSocketDataProvider(&data); 551 socket_factory_.AddSocketDataProvider(&data);
557 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 552 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
558 socket_factory_.AddSSLSocketDataProvider(&ssl); 553 socket_factory_.AddSSLSocketDataProvider(&ssl);
559 554
560 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 555 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
561 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 556 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
562 false); 557 false);
563 558
564 ClientSocketHandle handle; 559 ClientSocketHandle handle;
565 TestCompletionCallback callback; 560 TestCompletionCallback callback;
566 int rv = 561 int rv =
567 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 562 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
568 callback.callback(), pool_.get(), BoundNetLog()); 563 callback.callback(), pool_.get(), BoundNetLog());
569 EXPECT_THAT(rv, IsOk()); 564 EXPECT_THAT(rv, IsOk());
570 EXPECT_TRUE(handle.is_initialized()); 565 EXPECT_TRUE(handle.is_initialized());
571 EXPECT_TRUE(handle.socket()); 566 EXPECT_TRUE(handle.socket());
572 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here 567 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
573 // don't go through the real logic, unlike in the HTTP proxy tests. 568 // don't go through the real logic, unlike in the HTTP proxy tests.
574 TestLoadTimingInfo(handle); 569 TestLoadTimingInfo(handle);
575 } 570 }
576 571
577 // Make sure that SSLConnectJob passes on its priority to its 572 // Make sure that SSLConnectJob passes on its priority to its
578 // transport socket on Init (for the SOCKS_PROXY case). 573 // transport socket on Init (for the SOCKS_PROXY case).
579 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) { 574 TEST_F(SSLClientSocketPoolTest, SetTransportPriorityOnInitSOCKS) {
580 StaticSocketDataProvider data; 575 StaticSocketDataProvider data;
581 data.set_connect_data(MockConnect(SYNCHRONOUS, OK)); 576 data.set_connect_data(MockConnect(SYNCHRONOUS, OK));
582 socket_factory_.AddSocketDataProvider(&data); 577 socket_factory_.AddSocketDataProvider(&data);
583 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); 578 SSLSocketDataProvider ssl(SYNCHRONOUS, OK);
584 socket_factory_.AddSSLSocketDataProvider(&ssl); 579 socket_factory_.AddSSLSocketDataProvider(&ssl);
585 580
586 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 581 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
587 scoped_refptr<SSLSocketParams> params = 582 scoped_refptr<SSLSocketParams> params =
588 SSLParams(ProxyServer::SCHEME_SOCKS5, false); 583 SSLParams(ProxyServer::SCHEME_SOCKS5, false);
589 584
590 ClientSocketHandle handle; 585 ClientSocketHandle handle;
591 TestCompletionCallback callback; 586 TestCompletionCallback callback;
592 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, 587 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST,
593 ClientSocketPool::RespectLimits::ENABLED, 588 ClientSocketPool::RespectLimits::ENABLED,
594 callback.callback(), pool_.get(), BoundNetLog())); 589 callback.callback(), pool_.get(), BoundNetLog()));
595 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); 590 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority());
596 } 591 }
597 592
598 TEST_P(SSLClientSocketPoolTest, SOCKSBasicAsync) { 593 TEST_F(SSLClientSocketPoolTest, SOCKSBasicAsync) {
599 StaticSocketDataProvider data; 594 StaticSocketDataProvider data;
600 socket_factory_.AddSocketDataProvider(&data); 595 socket_factory_.AddSocketDataProvider(&data);
601 SSLSocketDataProvider ssl(ASYNC, OK); 596 SSLSocketDataProvider ssl(ASYNC, OK);
602 socket_factory_.AddSSLSocketDataProvider(&ssl); 597 socket_factory_.AddSSLSocketDataProvider(&ssl);
603 598
604 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 599 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
605 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5, 600 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_SOCKS5,
606 false); 601 false);
607 602
608 ClientSocketHandle handle; 603 ClientSocketHandle handle;
609 TestCompletionCallback callback; 604 TestCompletionCallback callback;
610 int rv = 605 int rv =
611 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 606 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
612 callback.callback(), pool_.get(), BoundNetLog()); 607 callback.callback(), pool_.get(), BoundNetLog());
613 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 608 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
614 EXPECT_FALSE(handle.is_initialized()); 609 EXPECT_FALSE(handle.is_initialized());
615 EXPECT_FALSE(handle.socket()); 610 EXPECT_FALSE(handle.socket());
616 611
617 EXPECT_THAT(callback.WaitForResult(), IsOk()); 612 EXPECT_THAT(callback.WaitForResult(), IsOk());
618 EXPECT_TRUE(handle.is_initialized()); 613 EXPECT_TRUE(handle.is_initialized());
619 EXPECT_TRUE(handle.socket()); 614 EXPECT_TRUE(handle.socket());
620 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here 615 // SOCKS5 generally has no DNS times, but the mock SOCKS5 sockets used here
621 // don't go through the real logic, unlike in the HTTP proxy tests. 616 // don't go through the real logic, unlike in the HTTP proxy tests.
622 TestLoadTimingInfo(handle); 617 TestLoadTimingInfo(handle);
623 } 618 }
624 619
625 TEST_P(SSLClientSocketPoolTest, HttpProxyFail) { 620 TEST_F(SSLClientSocketPoolTest, HttpProxyFail) {
626 StaticSocketDataProvider data; 621 StaticSocketDataProvider data;
627 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED)); 622 data.set_connect_data(MockConnect(SYNCHRONOUS, ERR_CONNECTION_FAILED));
628 socket_factory_.AddSocketDataProvider(&data); 623 socket_factory_.AddSocketDataProvider(&data);
629 624
630 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 625 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
631 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 626 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
632 false); 627 false);
633 628
634 ClientSocketHandle handle; 629 ClientSocketHandle handle;
635 TestCompletionCallback callback; 630 TestCompletionCallback callback;
636 int rv = 631 int rv =
637 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 632 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
638 callback.callback(), pool_.get(), BoundNetLog()); 633 callback.callback(), pool_.get(), BoundNetLog());
639 EXPECT_THAT(rv, IsError(ERR_PROXY_CONNECTION_FAILED)); 634 EXPECT_THAT(rv, IsError(ERR_PROXY_CONNECTION_FAILED));
640 EXPECT_FALSE(handle.is_initialized()); 635 EXPECT_FALSE(handle.is_initialized());
641 EXPECT_FALSE(handle.socket()); 636 EXPECT_FALSE(handle.socket());
642 EXPECT_FALSE(handle.is_ssl_error()); 637 EXPECT_FALSE(handle.is_ssl_error());
643 } 638 }
644 639
645 TEST_P(SSLClientSocketPoolTest, HttpProxyFailAsync) { 640 TEST_F(SSLClientSocketPoolTest, HttpProxyFailAsync) {
646 StaticSocketDataProvider data; 641 StaticSocketDataProvider data;
647 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED)); 642 data.set_connect_data(MockConnect(ASYNC, ERR_CONNECTION_FAILED));
648 socket_factory_.AddSocketDataProvider(&data); 643 socket_factory_.AddSocketDataProvider(&data);
649 644
650 CreatePool(false, true /* http proxy pool */, true /* socks pool */); 645 CreatePool(false, true /* http proxy pool */, true /* socks pool */);
651 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP, 646 scoped_refptr<SSLSocketParams> params = SSLParams(ProxyServer::SCHEME_HTTP,
652 false); 647 false);
653 648
654 ClientSocketHandle handle; 649 ClientSocketHandle handle;
655 TestCompletionCallback callback; 650 TestCompletionCallback callback;
656 int rv = 651 int rv =
657 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 652 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
658 callback.callback(), pool_.get(), BoundNetLog()); 653 callback.callback(), pool_.get(), BoundNetLog());
659 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 654 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
660 EXPECT_FALSE(handle.is_initialized()); 655 EXPECT_FALSE(handle.is_initialized());
661 EXPECT_FALSE(handle.socket()); 656 EXPECT_FALSE(handle.socket());
662 657
663 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PROXY_CONNECTION_FAILED)); 658 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_PROXY_CONNECTION_FAILED));
664 EXPECT_FALSE(handle.is_initialized()); 659 EXPECT_FALSE(handle.is_initialized());
665 EXPECT_FALSE(handle.socket()); 660 EXPECT_FALSE(handle.socket());
666 EXPECT_FALSE(handle.is_ssl_error()); 661 EXPECT_FALSE(handle.is_ssl_error());
667 } 662 }
668 663
669 TEST_P(SSLClientSocketPoolTest, HttpProxyBasic) { 664 TEST_F(SSLClientSocketPoolTest, HttpProxyBasic) {
670 MockWrite writes[] = { 665 MockWrite writes[] = {
671 MockWrite(SYNCHRONOUS, 666 MockWrite(SYNCHRONOUS,
672 "CONNECT host:80 HTTP/1.1\r\n" 667 "CONNECT host:80 HTTP/1.1\r\n"
673 "Host: host:80\r\n" 668 "Host: host:80\r\n"
674 "Proxy-Connection: keep-alive\r\n" 669 "Proxy-Connection: keep-alive\r\n"
675 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 670 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
676 }; 671 };
677 MockRead reads[] = { 672 MockRead reads[] = {
678 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), 673 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"),
679 }; 674 };
(...skipping 15 matching lines...) Expand all
695 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED, 690 handle.Init("a", params, MEDIUM, ClientSocketPool::RespectLimits::ENABLED,
696 callback.callback(), pool_.get(), BoundNetLog()); 691 callback.callback(), pool_.get(), BoundNetLog());
697 EXPECT_THAT(rv, IsOk()); 692 EXPECT_THAT(rv, IsOk());
698 EXPECT_TRUE(handle.is_initialized()); 693 EXPECT_TRUE(handle.is_initialized());
699 EXPECT_TRUE(handle.socket()); 694 EXPECT_TRUE(handle.socket());
700 TestLoadTimingInfoNoDns(handle); 695 TestLoadTimingInfoNoDns(handle);
701 } 696 }
702 697
703 // Make sure that SSLConnectJob passes on its priority to its 698 // Make sure that SSLConnectJob passes on its priority to its
704 // transport socket on Init (for the HTTP_PROXY case). 699 // transport socket on Init (for the HTTP_PROXY case).
705 TEST_P(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) { 700 TEST_F(SSLClientSocketPoolTest, SetTransportPriorityOnInitHTTP) {
706 MockWrite writes[] = { 701 MockWrite writes[] = {
707 MockWrite(SYNCHRONOUS, 702 MockWrite(SYNCHRONOUS,
708 "CONNECT host:80 HTTP/1.1\r\n" 703 "CONNECT host:80 HTTP/1.1\r\n"
709 "Host: host:80\r\n" 704 "Host: host:80\r\n"
710 "Proxy-Connection: keep-alive\r\n" 705 "Proxy-Connection: keep-alive\r\n"
711 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 706 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
712 }; 707 };
713 MockRead reads[] = { 708 MockRead reads[] = {
714 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"), 709 MockRead(SYNCHRONOUS, "HTTP/1.1 200 Connection Established\r\n\r\n"),
715 }; 710 };
(...skipping 10 matching lines...) Expand all
726 SSLParams(ProxyServer::SCHEME_HTTP, false); 721 SSLParams(ProxyServer::SCHEME_HTTP, false);
727 722
728 ClientSocketHandle handle; 723 ClientSocketHandle handle;
729 TestCompletionCallback callback; 724 TestCompletionCallback callback;
730 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST, 725 EXPECT_EQ(OK, handle.Init("a", params, HIGHEST,
731 ClientSocketPool::RespectLimits::ENABLED, 726 ClientSocketPool::RespectLimits::ENABLED,
732 callback.callback(), pool_.get(), BoundNetLog())); 727 callback.callback(), pool_.get(), BoundNetLog()));
733 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority()); 728 EXPECT_EQ(HIGHEST, transport_socket_pool_.last_request_priority());
734 } 729 }
735 730
736 TEST_P(SSLClientSocketPoolTest, HttpProxyBasicAsync) { 731 TEST_F(SSLClientSocketPoolTest, HttpProxyBasicAsync) {
737 MockWrite writes[] = { 732 MockWrite writes[] = {
738 MockWrite( 733 MockWrite(
739 "CONNECT host:80 HTTP/1.1\r\n" 734 "CONNECT host:80 HTTP/1.1\r\n"
740 "Host: host:80\r\n" 735 "Host: host:80\r\n"
741 "Proxy-Connection: keep-alive\r\n" 736 "Proxy-Connection: keep-alive\r\n"
742 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"), 737 "Proxy-Authorization: Basic Zm9vOmJhcg==\r\n\r\n"),
743 }; 738 };
744 MockRead reads[] = { 739 MockRead reads[] = {
745 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"), 740 MockRead("HTTP/1.1 200 Connection Established\r\n\r\n"),
746 }; 741 };
(...skipping 16 matching lines...) Expand all
763 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); 758 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
764 EXPECT_FALSE(handle.is_initialized()); 759 EXPECT_FALSE(handle.is_initialized());
765 EXPECT_FALSE(handle.socket()); 760 EXPECT_FALSE(handle.socket());
766 761
767 EXPECT_THAT(callback.WaitForResult(), IsOk()); 762 EXPECT_THAT(callback.WaitForResult(), IsOk());
768 EXPECT_TRUE(handle.is_initialized()); 763 EXPECT_TRUE(handle.is_initialized());
769 EXPECT_TRUE(handle.socket()); 764 EXPECT_TRUE(handle.socket());
770 TestLoadTimingInfoNoDns(handle); 765 TestLoadTimingInfoNoDns(handle);
771 } 766 }
772 767
773 TEST_P(SSLClientSocketPoolTest, NeedProxyAuth) { 768 TEST_F(SSLClientSocketPoolTest, NeedProxyAuth) {
774 MockWrite writes[] = { 769 MockWrite writes[] = {
775 MockWrite( 770 MockWrite(
776 "CONNECT host:80 HTTP/1.1\r\n" 771 "CONNECT host:80 HTTP/1.1\r\n"
777 "Host: host:80\r\n" 772 "Host: host:80\r\n"
778 "Proxy-Connection: keep-alive\r\n\r\n"), 773 "Proxy-Connection: keep-alive\r\n\r\n"),
779 }; 774 };
780 MockRead reads[] = { 775 MockRead reads[] = {
781 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"), 776 MockRead("HTTP/1.1 407 Proxy Authentication Required\r\n"),
782 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"), 777 MockRead("Proxy-Authenticate: Basic realm=\"MyRealm1\"\r\n"),
783 MockRead("Content-Length: 10\r\n\r\n"), 778 MockRead("Content-Length: 10\r\n\r\n"),
(...skipping 23 matching lines...) Expand all
807 EXPECT_FALSE(handle.socket()); 802 EXPECT_FALSE(handle.socket());
808 EXPECT_FALSE(handle.is_ssl_error()); 803 EXPECT_FALSE(handle.is_ssl_error());
809 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info(); 804 const HttpResponseInfo& tunnel_info = handle.ssl_error_response_info();
810 EXPECT_EQ(tunnel_info.headers->response_code(), 407); 805 EXPECT_EQ(tunnel_info.headers->response_code(), 407);
811 std::unique_ptr<ClientSocketHandle> tunnel_handle( 806 std::unique_ptr<ClientSocketHandle> tunnel_handle(
812 handle.release_pending_http_proxy_connection()); 807 handle.release_pending_http_proxy_connection());
813 EXPECT_TRUE(tunnel_handle->socket()); 808 EXPECT_TRUE(tunnel_handle->socket());
814 EXPECT_FALSE(tunnel_handle->socket()->IsConnected()); 809 EXPECT_FALSE(tunnel_handle->socket()->IsConnected());
815 } 810 }
816 811
817 TEST_P(SSLClientSocketPoolTest, IPPooling) { 812 TEST_F(SSLClientSocketPoolTest, IPPooling) {
818 const int kTestPort = 80; 813 const int kTestPort = 80;
819 struct TestHosts { 814 struct TestHosts {
820 std::string name; 815 std::string name;
821 std::string iplist; 816 std::string iplist;
822 SpdySessionKey key; 817 SpdySessionKey key;
823 AddressList addresses; 818 AddressList addresses;
824 } test_hosts[] = { 819 } test_hosts[] = {
825 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" }, 820 { "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" },
826 { "code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5" }, 821 { "code.google.com", "192.168.0.2,192.168.0.3,192.168.0.5" },
827 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" }, 822 { "js.webkit.org", "192.168.0.4,192.168.0.1,192.0.2.33" },
(...skipping 21 matching lines...) Expand all
849 } 844 }
850 845
851 MockRead reads[] = { 846 MockRead reads[] = {
852 MockRead(ASYNC, ERR_IO_PENDING), 847 MockRead(ASYNC, ERR_IO_PENDING),
853 }; 848 };
854 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0); 849 StaticSocketDataProvider data(reads, arraysize(reads), NULL, 0);
855 socket_factory_.AddSocketDataProvider(&data); 850 socket_factory_.AddSocketDataProvider(&data);
856 SSLSocketDataProvider ssl(ASYNC, OK); 851 SSLSocketDataProvider ssl(ASYNC, OK);
857 ssl.cert = X509Certificate::CreateFromBytes( 852 ssl.cert = X509Certificate::CreateFromBytes(
858 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); 853 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der));
859 ssl.SetNextProto(GetParam()); 854 ssl.SetNextProto(kProtoHTTP2);
860 socket_factory_.AddSSLSocketDataProvider(&ssl); 855 socket_factory_.AddSSLSocketDataProvider(&ssl);
861 856
862 CreatePool(true /* tcp pool */, false, false); 857 CreatePool(true /* tcp pool */, false, false);
863 base::WeakPtr<SpdySession> spdy_session = 858 base::WeakPtr<SpdySession> spdy_session =
864 CreateSecureSpdySession(session_.get(), test_hosts[0].key, BoundNetLog()); 859 CreateSecureSpdySession(session_.get(), test_hosts[0].key, BoundNetLog());
865 860
866 EXPECT_TRUE( 861 EXPECT_TRUE(
867 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); 862 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key));
868 EXPECT_FALSE( 863 EXPECT_FALSE(
869 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); 864 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key));
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
923 EXPECT_TRUE( 918 EXPECT_TRUE(
924 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key)); 919 HasSpdySession(session_->spdy_session_pool(), test_hosts[0].key));
925 EXPECT_FALSE( 920 EXPECT_FALSE(
926 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key)); 921 HasSpdySession(session_->spdy_session_pool(), test_hosts[1].key));
927 922
928 session_->spdy_session_pool()->CloseAllSessions(); 923 session_->spdy_session_pool()->CloseAllSessions();
929 } 924 }
930 925
931 // Verifies that an SSL connection with client authentication disables SPDY IP 926 // Verifies that an SSL connection with client authentication disables SPDY IP
932 // pooling. 927 // pooling.
933 TEST_P(SSLClientSocketPoolTest, IPPoolingClientCert) { 928 TEST_F(SSLClientSocketPoolTest, IPPoolingClientCert) {
934 SSLSocketDataProvider ssl(ASYNC, OK); 929 SSLSocketDataProvider ssl(ASYNC, OK);
935 ssl.cert = X509Certificate::CreateFromBytes( 930 ssl.cert = X509Certificate::CreateFromBytes(
936 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der)); 931 reinterpret_cast<const char*>(webkit_der), sizeof(webkit_der));
937 ssl.client_cert_sent = true; 932 ssl.client_cert_sent = true;
938 ssl.SetNextProto(GetParam()); 933 ssl.SetNextProto(kProtoHTTP2);
939 TestIPPoolingDisabled(&ssl); 934 TestIPPoolingDisabled(&ssl);
940 } 935 }
941 936
942 // Verifies that an SSL connection with channel ID disables SPDY IP pooling. 937 // Verifies that an SSL connection with channel ID disables SPDY IP pooling.
943 TEST_P(SSLClientSocketPoolTest, IPPoolingChannelID) { 938 TEST_F(SSLClientSocketPoolTest, IPPoolingChannelID) {
944 SSLSocketDataProvider ssl(ASYNC, OK); 939 SSLSocketDataProvider ssl(ASYNC, OK);
945 ssl.channel_id_sent = true; 940 ssl.channel_id_sent = true;
946 ssl.SetNextProto(GetParam()); 941 ssl.SetNextProto(kProtoHTTP2);
947 TestIPPoolingDisabled(&ssl); 942 TestIPPoolingDisabled(&ssl);
948 } 943 }
949 944
950 // It would be nice to also test the timeouts in SSLClientSocketPool. 945 // It would be nice to also test the timeouts in SSLClientSocketPool.
951 946
952 } // namespace 947 } // namespace
953 948
954 } // namespace net 949 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_unittest.cc ('k') | net/socket/ssl_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698