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

Side by Side Diff: net/http/http_stream_factory_impl_job_controller_unittest.cc

Issue 2496953002: Revert of Unify enum NextProto and enum AlternateProtocol. (Closed)
Patch Set: Created 4 years, 1 month 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
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 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_stream_factory_impl_job_controller.h" 5 #include "net/http/http_stream_factory_impl_job_controller.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 session_deps_.proxy_service.reset(new ProxyService( 254 session_deps_.proxy_service.reset(new ProxyService(
255 base::WrapUnique(new ProxyConfigServiceFixed(proxy_config)), 255 base::WrapUnique(new ProxyConfigServiceFixed(proxy_config)),
256 base::WrapUnique(proxy_resolver_factory), nullptr)); 256 base::WrapUnique(proxy_resolver_factory), nullptr));
257 Initialize(false); 257 Initialize(false);
258 258
259 HttpRequestInfo request_info; 259 HttpRequestInfo request_info;
260 request_info.method = "GET"; 260 request_info.method = "GET";
261 request_info.url = GURL("https://www.google.com"); 261 request_info.url = GURL("https://www.google.com");
262 262
263 url::SchemeHostPort server(request_info.url); 263 url::SchemeHostPort server(request_info.url);
264 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 264 AlternativeService alternative_service(QUIC, server.host(), 443);
265 SetAlternativeService(request_info, alternative_service); 265 SetAlternativeService(request_info, alternative_service);
266 266
267 request_.reset( 267 request_.reset(
268 job_controller_->Start(request_info, &request_delegate_, nullptr, 268 job_controller_->Start(request_info, &request_delegate_, nullptr,
269 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 269 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
270 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 270 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
271 EXPECT_TRUE(job_controller_->main_job()); 271 EXPECT_TRUE(job_controller_->main_job());
272 EXPECT_TRUE(job_controller_->alternative_job()); 272 EXPECT_TRUE(job_controller_->alternative_job());
273 273
274 // Reset the Request will cancel all the Jobs since there's no Job determined 274 // Reset the Request will cancel all the Jobs since there's no Job determined
(...skipping 13 matching lines...) Expand all
288 session_deps_.proxy_service.reset( 288 session_deps_.proxy_service.reset(
289 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 289 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
290 base::WrapUnique(proxy_resolver_factory), nullptr)); 290 base::WrapUnique(proxy_resolver_factory), nullptr));
291 Initialize(false); 291 Initialize(false);
292 292
293 HttpRequestInfo request_info; 293 HttpRequestInfo request_info;
294 request_info.method = "GET"; 294 request_info.method = "GET";
295 request_info.url = GURL("https://www.google.com"); 295 request_info.url = GURL("https://www.google.com");
296 296
297 url::SchemeHostPort server(request_info.url); 297 url::SchemeHostPort server(request_info.url);
298 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 298 AlternativeService alternative_service(QUIC, server.host(), 443);
299 SetAlternativeService(request_info, alternative_service); 299 SetAlternativeService(request_info, alternative_service);
300 300
301 request_.reset( 301 request_.reset(
302 job_controller_->Start(request_info, &request_delegate_, nullptr, 302 job_controller_->Start(request_info, &request_delegate_, nullptr,
303 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 303 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
304 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 304 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
305 EXPECT_TRUE(job_controller_->main_job()); 305 EXPECT_TRUE(job_controller_->main_job());
306 EXPECT_TRUE(job_controller_->alternative_job()); 306 EXPECT_TRUE(job_controller_->alternative_job());
307 307
308 // We have the main job with unknown status when the alternative job is failed 308 // We have the main job with unknown status when the alternative job is failed
(...skipping 23 matching lines...) Expand all
332 session_deps_.proxy_service.reset( 332 session_deps_.proxy_service.reset(
333 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 333 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
334 base::WrapUnique(proxy_resolver_factory), nullptr)); 334 base::WrapUnique(proxy_resolver_factory), nullptr));
335 Initialize(false); 335 Initialize(false);
336 336
337 HttpRequestInfo request_info; 337 HttpRequestInfo request_info;
338 request_info.method = "GET"; 338 request_info.method = "GET";
339 request_info.url = GURL("https://www.google.com"); 339 request_info.url = GURL("https://www.google.com");
340 340
341 url::SchemeHostPort server(request_info.url); 341 url::SchemeHostPort server(request_info.url);
342 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 342 AlternativeService alternative_service(QUIC, server.host(), 443);
343 SetAlternativeService(request_info, alternative_service); 343 SetAlternativeService(request_info, alternative_service);
344 344
345 request_.reset( 345 request_.reset(
346 job_controller_->Start(request_info, &request_delegate_, nullptr, 346 job_controller_->Start(request_info, &request_delegate_, nullptr,
347 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 347 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
348 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 348 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
349 EXPECT_TRUE(job_controller_->main_job()); 349 EXPECT_TRUE(job_controller_->main_job());
350 EXPECT_TRUE(job_controller_->alternative_job()); 350 EXPECT_TRUE(job_controller_->alternative_job());
351 351
352 // Main job succeeds, starts serving Request and it should report status 352 // Main job succeeds, starts serving Request and it should report status
(...skipping 30 matching lines...) Expand all
383 session_deps_.proxy_service.reset( 383 session_deps_.proxy_service.reset(
384 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 384 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
385 base::WrapUnique(proxy_resolver_factory), nullptr)); 385 base::WrapUnique(proxy_resolver_factory), nullptr));
386 Initialize(false); 386 Initialize(false);
387 387
388 HttpRequestInfo request_info; 388 HttpRequestInfo request_info;
389 request_info.method = "GET"; 389 request_info.method = "GET";
390 request_info.url = GURL("https://www.google.com"); 390 request_info.url = GURL("https://www.google.com");
391 391
392 url::SchemeHostPort server(request_info.url); 392 url::SchemeHostPort server(request_info.url);
393 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 393 AlternativeService alternative_service(QUIC, server.host(), 443);
394 SetAlternativeService(request_info, alternative_service); 394 SetAlternativeService(request_info, alternative_service);
395 395
396 request_.reset( 396 request_.reset(
397 job_controller_->Start(request_info, &request_delegate_, nullptr, 397 job_controller_->Start(request_info, &request_delegate_, nullptr,
398 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 398 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
399 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 399 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
400 EXPECT_TRUE(job_controller_->main_job()); 400 EXPECT_TRUE(job_controller_->main_job());
401 EXPECT_TRUE(job_controller_->alternative_job()); 401 EXPECT_TRUE(job_controller_->alternative_job());
402 402
403 // |main_job| fails but should not report status to Request. 403 // |main_job| fails but should not report status to Request.
(...skipping 24 matching lines...) Expand all
428 session_deps_.proxy_service.reset( 428 session_deps_.proxy_service.reset(
429 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 429 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
430 base::WrapUnique(proxy_resolver_factory), nullptr)); 430 base::WrapUnique(proxy_resolver_factory), nullptr));
431 Initialize(false); 431 Initialize(false);
432 432
433 HttpRequestInfo request_info; 433 HttpRequestInfo request_info;
434 request_info.method = "GET"; 434 request_info.method = "GET";
435 request_info.url = GURL("https://www.google.com"); 435 request_info.url = GURL("https://www.google.com");
436 436
437 url::SchemeHostPort server(request_info.url); 437 url::SchemeHostPort server(request_info.url);
438 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 438 AlternativeService alternative_service(QUIC, server.host(), 443);
439 SetAlternativeService(request_info, alternative_service); 439 SetAlternativeService(request_info, alternative_service);
440 440
441 request_.reset( 441 request_.reset(
442 job_controller_->Start(request_info, &request_delegate_, nullptr, 442 job_controller_->Start(request_info, &request_delegate_, nullptr,
443 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 443 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
444 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 444 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
445 EXPECT_TRUE(job_controller_->main_job()); 445 EXPECT_TRUE(job_controller_->main_job());
446 EXPECT_TRUE(job_controller_->alternative_job()); 446 EXPECT_TRUE(job_controller_->alternative_job());
447 447
448 // |alternative_job| fails but should not report status to Request. 448 // |alternative_job| fails but should not report status to Request.
(...skipping 26 matching lines...) Expand all
475 session_deps_.proxy_service.reset(new ProxyService( 475 session_deps_.proxy_service.reset(new ProxyService(
476 base::WrapUnique(new ProxyConfigServiceFixed(proxy_config)), 476 base::WrapUnique(new ProxyConfigServiceFixed(proxy_config)),
477 base::WrapUnique(proxy_resolver_factory), nullptr)); 477 base::WrapUnique(proxy_resolver_factory), nullptr));
478 Initialize(false); 478 Initialize(false);
479 479
480 HttpRequestInfo request_info; 480 HttpRequestInfo request_info;
481 request_info.method = "GET"; 481 request_info.method = "GET";
482 request_info.url = GURL("https://www.google.com"); 482 request_info.url = GURL("https://www.google.com");
483 483
484 url::SchemeHostPort server(request_info.url); 484 url::SchemeHostPort server(request_info.url);
485 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 485 AlternativeService alternative_service(QUIC, server.host(), 443);
486 SetAlternativeService(request_info, alternative_service); 486 SetAlternativeService(request_info, alternative_service);
487 487
488 request_.reset( 488 request_.reset(
489 job_controller_->Start(request_info, &request_delegate_, nullptr, 489 job_controller_->Start(request_info, &request_delegate_, nullptr,
490 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 490 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
491 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 491 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
492 EXPECT_TRUE(job_controller_->main_job()); 492 EXPECT_TRUE(job_controller_->main_job());
493 EXPECT_TRUE(job_controller_->alternative_job()); 493 EXPECT_TRUE(job_controller_->alternative_job());
494 494
495 // |main_job| fails but should not report status to Request. 495 // |main_job| fails but should not report status to Request.
(...skipping 28 matching lines...) Expand all
524 base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 524 base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
525 base::WrapUnique(new FailingProxyResolverFactory), nullptr)); 525 base::WrapUnique(new FailingProxyResolverFactory), nullptr));
526 526
527 Initialize(false); 527 Initialize(false);
528 528
529 HttpRequestInfo request_info; 529 HttpRequestInfo request_info;
530 request_info.method = "GET"; 530 request_info.method = "GET";
531 request_info.url = GURL("https://www.google.com"); 531 request_info.url = GURL("https://www.google.com");
532 532
533 url::SchemeHostPort server(request_info.url); 533 url::SchemeHostPort server(request_info.url);
534 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 534 AlternativeService alternative_service(QUIC, server.host(), 443);
535 SetAlternativeService(request_info, alternative_service); 535 SetAlternativeService(request_info, alternative_service);
536 536
537 request_.reset( 537 request_.reset(
538 job_controller_->Start(request_info, &request_delegate_, nullptr, 538 job_controller_->Start(request_info, &request_delegate_, nullptr,
539 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 539 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
540 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 540 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
541 EXPECT_TRUE(job_controller_->main_job()); 541 EXPECT_TRUE(job_controller_->main_job());
542 EXPECT_TRUE(job_controller_->alternative_job()); 542 EXPECT_TRUE(job_controller_->alternative_job());
543 543
544 // Wait until OnStreamFailedCallback is executed on the alternative job. 544 // Wait until OnStreamFailedCallback is executed on the alternative job.
545 EXPECT_CALL(request_delegate_, OnStreamFailed(_, _)).Times(1); 545 EXPECT_CALL(request_delegate_, OnStreamFailed(_, _)).Times(1);
546 base::RunLoop().RunUntilIdle(); 546 base::RunLoop().RunUntilIdle();
547 } 547 }
548 548
549 TEST_F(HttpStreamFactoryImplJobControllerTest, InvalidPortForQuic) { 549 TEST_F(HttpStreamFactoryImplJobControllerTest, InvalidPortForQuic) {
550 // Using a restricted port 101 for QUIC should fail and the alternative job 550 // Using a restricted port 101 for QUIC should fail and the alternative job
551 // should post OnStreamFailedCall on the controller to resume the main job. 551 // should post OnStreamFailedCall on the controller to resume the main job.
552 Initialize(false); 552 Initialize(false);
553 553
554 HttpRequestInfo request_info; 554 HttpRequestInfo request_info;
555 request_info.method = "GET"; 555 request_info.method = "GET";
556 request_info.url = GURL("https://www.google.com"); 556 request_info.url = GURL("https://www.google.com");
557 557
558 url::SchemeHostPort server(request_info.url); 558 url::SchemeHostPort server(request_info.url);
559 AlternativeService alternative_service(kProtoQUIC, server.host(), 101); 559 AlternativeService alternative_service(QUIC, server.host(), 101);
560 SetAlternativeService(request_info, alternative_service); 560 SetAlternativeService(request_info, alternative_service);
561 561
562 request_.reset( 562 request_.reset(
563 job_controller_->Start(request_info, &request_delegate_, nullptr, 563 job_controller_->Start(request_info, &request_delegate_, nullptr,
564 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 564 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
565 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 565 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
566 566
567 EXPECT_TRUE(job_factory_.main_job()->is_waiting()); 567 EXPECT_TRUE(job_factory_.main_job()->is_waiting());
568 568
569 // Wait until OnStreamFailedCallback is executed on the alternative job. 569 // Wait until OnStreamFailedCallback is executed on the alternative job.
(...skipping 21 matching lines...) Expand all
591 session_deps_.host_resolver->set_synchronous_mode(false); 591 session_deps_.host_resolver->set_synchronous_mode(false);
592 592
593 Initialize(false); 593 Initialize(false);
594 594
595 HttpRequestInfo request_info; 595 HttpRequestInfo request_info;
596 request_info.method = "GET"; 596 request_info.method = "GET";
597 request_info.url = GURL("https://www.google.com"); 597 request_info.url = GURL("https://www.google.com");
598 598
599 // Set a SPDY alternative service for the server. 599 // Set a SPDY alternative service for the server.
600 url::SchemeHostPort server(request_info.url); 600 url::SchemeHostPort server(request_info.url);
601 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 601 AlternativeService alternative_service(QUIC, server.host(), 443);
602 SetAlternativeService(request_info, alternative_service); 602 SetAlternativeService(request_info, alternative_service);
603 // Hack to use different URL for the main job to help differentiate the proxy 603 // Hack to use different URL for the main job to help differentiate the proxy
604 // requests. 604 // requests.
605 job_factory_.UseDifferentURLForMainJob(GURL("http://www.google.com")); 605 job_factory_.UseDifferentURLForMainJob(GURL("http://www.google.com"));
606 606
607 request_.reset( 607 request_.reset(
608 job_controller_->Start(request_info, &request_delegate_, nullptr, 608 job_controller_->Start(request_info, &request_delegate_, nullptr,
609 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 609 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
610 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 610 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
611 // Both jobs should be created but stalled as proxy resolution not completed. 611 // Both jobs should be created but stalled as proxy resolution not completed.
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
653 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config), 653 new ProxyService(base::MakeUnique<ProxyConfigServiceFixed>(proxy_config),
654 base::WrapUnique(proxy_resolver_factory), nullptr)); 654 base::WrapUnique(proxy_resolver_factory), nullptr));
655 655
656 Initialize(false); 656 Initialize(false);
657 657
658 HttpRequestInfo request_info; 658 HttpRequestInfo request_info;
659 request_info.method = "GET"; 659 request_info.method = "GET";
660 request_info.url = GURL("https://www.google.com"); 660 request_info.url = GURL("https://www.google.com");
661 661
662 url::SchemeHostPort server(request_info.url); 662 url::SchemeHostPort server(request_info.url);
663 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 663 AlternativeService alternative_service(QUIC, server.host(), 443);
664 SetAlternativeService(request_info, alternative_service); 664 SetAlternativeService(request_info, alternative_service);
665 // Hack to use different URL for the main job to help differentiate the proxy 665 // Hack to use different URL for the main job to help differentiate the proxy
666 // requests. 666 // requests.
667 job_factory_.UseDifferentURLForMainJob(GURL("http://www.google.com")); 667 job_factory_.UseDifferentURLForMainJob(GURL("http://www.google.com"));
668 668
669 request_.reset( 669 request_.reset(
670 job_controller_->Start(request_info, &request_delegate_, nullptr, 670 job_controller_->Start(request_info, &request_delegate_, nullptr,
671 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 671 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
672 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 672 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
673 EXPECT_TRUE(job_controller_->main_job()); 673 EXPECT_TRUE(job_controller_->main_job());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 stats1.srtt = base::TimeDelta::FromMicroseconds(10); 715 stats1.srtt = base::TimeDelta::FromMicroseconds(10);
716 session_->http_server_properties()->SetServerNetworkStats( 716 session_->http_server_properties()->SetServerNetworkStats(
717 url::SchemeHostPort(GURL("https://www.google.com")), stats1); 717 url::SchemeHostPort(GURL("https://www.google.com")), stats1);
718 718
719 HttpRequestInfo request_info; 719 HttpRequestInfo request_info;
720 request_info.method = "GET"; 720 request_info.method = "GET";
721 request_info.url = GURL("https://www.google.com"); 721 request_info.url = GURL("https://www.google.com");
722 722
723 // Set a SPDY alternative service for the server. 723 // Set a SPDY alternative service for the server.
724 url::SchemeHostPort server(request_info.url); 724 url::SchemeHostPort server(request_info.url);
725 AlternativeService alternative_service(kProtoQUIC, server.host(), 443); 725 AlternativeService alternative_service(QUIC, server.host(), 443);
726 SetAlternativeService(request_info, alternative_service); 726 SetAlternativeService(request_info, alternative_service);
727 727
728 request_.reset( 728 request_.reset(
729 job_controller_->Start(request_info, &request_delegate_, nullptr, 729 job_controller_->Start(request_info, &request_delegate_, nullptr,
730 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM, 730 NetLogWithSource(), HttpStreamRequest::HTTP_STREAM,
731 DEFAULT_PRIORITY, SSLConfig(), SSLConfig())); 731 DEFAULT_PRIORITY, SSLConfig(), SSLConfig()));
732 EXPECT_TRUE(job_controller_->main_job()); 732 EXPECT_TRUE(job_controller_->main_job());
733 EXPECT_TRUE(job_controller_->alternative_job()); 733 EXPECT_TRUE(job_controller_->alternative_job());
734 734
735 // The alternative job stalls as host resolution hangs when creating the QUIC 735 // The alternative job stalls as host resolution hangs when creating the QUIC
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
947 // Reset the request as it's been successfully served. 947 // Reset the request as it's been successfully served.
948 request_.reset(); 948 request_.reset();
949 EXPECT_TRUE(HttpStreamFactoryImplPeer::IsJobControllerDeleted(factory_)); 949 EXPECT_TRUE(HttpStreamFactoryImplPeer::IsJobControllerDeleted(factory_));
950 950
951 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage", 951 histogram_tester.ExpectUniqueSample("Net.QuicAlternativeProxy.Usage",
952 2 /* ALTERNATIVE_PROXY_USAGE_LOST_RACE */, 952 2 /* ALTERNATIVE_PROXY_USAGE_LOST_RACE */,
953 1); 953 1);
954 } 954 }
955 955
956 } // namespace net 956 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_job_controller.cc ('k') | net/http/http_stream_factory_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698