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

Side by Side Diff: net/url_request/url_request_unittest.cc

Issue 10299002: Stop refcounting URLRequestContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More fixes Created 8 years, 7 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 | Annotate | Revision Log
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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #if defined(OS_WIN) 7 #if defined(OS_WIN)
8 #include <windows.h> 8 #include <windows.h>
9 #include <shlobj.h> 9 #include <shlobj.h>
10 #endif 10 #endif
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 main_intercept_job_ = job; 399 main_intercept_job_ = job;
400 } 400 }
401 401
402 private: 402 private:
403 mutable URLRequestJob* main_intercept_job_; 403 mutable URLRequestJob* main_intercept_job_;
404 }; 404 };
405 405
406 // Inherit PlatformTest since we require the autorelease pool on Mac OS X.f 406 // Inherit PlatformTest since we require the autorelease pool on Mac OS X.f
407 class URLRequestTest : public PlatformTest { 407 class URLRequestTest : public PlatformTest {
408 public: 408 public:
409 URLRequestTest() : default_context_(new TestURLRequestContext(true)) { 409 URLRequestTest() : default_context_(true) {
410 default_context_->set_network_delegate(&default_network_delegate_); 410 default_context_.set_network_delegate(&default_network_delegate_);
411 default_context_->Init(); 411 default_context_.Init();
412 } 412 }
413 413
414 static void SetUpTestCase() { 414 static void SetUpTestCase() {
415 URLRequest::AllowFileAccess(); 415 URLRequest::AllowFileAccess();
416 } 416 }
417 417
418 // Adds the TestJobInterceptor to the default context. 418 // Adds the TestJobInterceptor to the default context.
419 TestJobInterceptor* AddTestInterceptor() { 419 TestJobInterceptor* AddTestInterceptor() {
420 TestJobInterceptor* interceptor = new TestJobInterceptor(); 420 TestJobInterceptor* interceptor = new TestJobInterceptor();
421 default_context_->set_job_factory(&job_factory_); 421 default_context_.set_job_factory(&job_factory_);
422 job_factory_.AddInterceptor(interceptor); 422 job_factory_.AddInterceptor(interceptor);
423 return interceptor; 423 return interceptor;
424 } 424 }
425 425
426 protected: 426 protected:
427 TestNetworkDelegate default_network_delegate_; // must outlive URLRequest 427 TestNetworkDelegate default_network_delegate_; // must outlive URLRequest
428 scoped_refptr<TestURLRequestContext> default_context_;
429 URLRequestJobFactory job_factory_; 428 URLRequestJobFactory job_factory_;
429 TestURLRequestContext default_context_;
430 }; 430 };
431 431
432 class URLRequestTestHTTP : public URLRequestTest { 432 class URLRequestTestHTTP : public URLRequestTest {
433 public: 433 public:
434 URLRequestTestHTTP() 434 URLRequestTestHTTP()
435 : test_server_(FilePath(FILE_PATH_LITERAL( 435 : test_server_(FilePath(FILE_PATH_LITERAL(
436 "net/data/url_request_unittest"))) { 436 "net/data/url_request_unittest"))) {
437 } 437 }
438 438
439 protected: 439 protected:
440 // Requests |redirect_url|, which must return a HTTP 3xx redirect. 440 // Requests |redirect_url|, which must return a HTTP 3xx redirect.
441 // |request_method| is the method to use for the initial request. 441 // |request_method| is the method to use for the initial request.
442 // |redirect_method| is the method that is expected to be used for the second 442 // |redirect_method| is the method that is expected to be used for the second
443 // request, after redirection. 443 // request, after redirection.
444 // If |include_data| is true, data is uploaded with the request. The 444 // If |include_data| is true, data is uploaded with the request. The
445 // response body is expected to match it exactly, if and only if 445 // response body is expected to match it exactly, if and only if
446 // |request_method| == |redirect_method|. 446 // |request_method| == |redirect_method|.
447 void HTTPRedirectMethodTest(const GURL& redirect_url, 447 void HTTPRedirectMethodTest(const GURL& redirect_url,
448 const std::string& request_method, 448 const std::string& request_method,
449 const std::string& redirect_method, 449 const std::string& redirect_method,
450 bool include_data) { 450 bool include_data) {
451 static const char kData[] = "hello world"; 451 static const char kData[] = "hello world";
452 TestDelegate d; 452 TestDelegate d;
453 TestURLRequest req(redirect_url, &d); 453 TestURLRequest req(redirect_url, &d);
454 req.set_context(default_context_); 454 req.set_context(&default_context_);
455 req.set_method(request_method); 455 req.set_method(request_method);
456 if (include_data) { 456 if (include_data) {
457 req.set_upload(CreateSimpleUploadData(kData).get()); 457 req.set_upload(CreateSimpleUploadData(kData).get());
458 HttpRequestHeaders headers; 458 HttpRequestHeaders headers;
459 headers.SetHeader(HttpRequestHeaders::kContentLength, 459 headers.SetHeader(HttpRequestHeaders::kContentLength,
460 base::UintToString(arraysize(kData) - 1)); 460 base::UintToString(arraysize(kData) - 1));
461 req.SetExtraRequestHeaders(headers); 461 req.SetExtraRequestHeaders(headers);
462 } 462 }
463 req.Start(); 463 req.Start();
464 MessageLoop::current()->Run(); 464 MessageLoop::current()->Run();
(...skipping 25 matching lines...) Expand all
490 *ptr++ = marker; 490 *ptr++ = marker;
491 if (++marker > 'z') 491 if (++marker > 'z')
492 marker = 'a'; 492 marker = 'a';
493 } 493 }
494 } 494 }
495 uploadBytes[kMsgSize] = '\0'; 495 uploadBytes[kMsgSize] = '\0';
496 496
497 for (int i = 0; i < kIterations; ++i) { 497 for (int i = 0; i < kIterations; ++i) {
498 TestDelegate d; 498 TestDelegate d;
499 URLRequest r(test_server_.GetURL("echo"), &d); 499 URLRequest r(test_server_.GetURL("echo"), &d);
500 r.set_context(default_context_); 500 r.set_context(&default_context_);
501 r.set_method(method.c_str()); 501 r.set_method(method.c_str());
502 502
503 r.AppendBytesToUpload(uploadBytes, kMsgSize); 503 r.AppendBytesToUpload(uploadBytes, kMsgSize);
504 504
505 r.Start(); 505 r.Start();
506 EXPECT_TRUE(r.is_pending()); 506 EXPECT_TRUE(r.is_pending());
507 507
508 MessageLoop::current()->Run(); 508 MessageLoop::current()->Run();
509 509
510 ASSERT_EQ(1, d.response_started_count()) << "request failed: " << 510 ASSERT_EQ(1, d.response_started_count()) << "request failed: " <<
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 547
548 // In this unit test, we're using the HTTPTestServer as a proxy server and 548 // In this unit test, we're using the HTTPTestServer as a proxy server and
549 // issuing a CONNECT request with the magic host name "www.redirect.com". 549 // issuing a CONNECT request with the magic host name "www.redirect.com".
550 // The HTTPTestServer will return a 302 response, which we should not 550 // The HTTPTestServer will return a 302 response, which we should not
551 // follow. 551 // follow.
552 // flaky: crbug.com/96594 552 // flaky: crbug.com/96594
553 TEST_F(URLRequestTestHTTP, FLAKY_ProxyTunnelRedirectTest) { 553 TEST_F(URLRequestTestHTTP, FLAKY_ProxyTunnelRedirectTest) {
554 ASSERT_TRUE(test_server_.Start()); 554 ASSERT_TRUE(test_server_.Start());
555 555
556 TestNetworkDelegate network_delegate; // must outlive URLRequest 556 TestNetworkDelegate network_delegate; // must outlive URLRequest
557 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 557 TestURLRequestContext context(true);
558 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 558 context.SetProxyFromString(test_server_.host_port_pair().ToString());
559 context->set_network_delegate(&network_delegate); 559 context.set_network_delegate(&network_delegate);
560 context->Init(); 560 context.Init();
561 561
562 TestDelegate d; 562 TestDelegate d;
563 { 563 {
564 URLRequest r(GURL("https://www.redirect.com/"), &d); 564 URLRequest r(GURL("https://www.redirect.com/"), &d);
565 r.set_context(context); 565 r.set_context(&context);
566 r.Start(); 566 r.Start();
567 EXPECT_TRUE(r.is_pending()); 567 EXPECT_TRUE(r.is_pending());
568 568
569 MessageLoop::current()->Run(); 569 MessageLoop::current()->Run();
570 570
571 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); 571 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status());
572 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); 572 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error());
573 EXPECT_EQ(1, d.response_started_count()); 573 EXPECT_EQ(1, d.response_started_count());
574 // We should not have followed the redirect. 574 // We should not have followed the redirect.
575 EXPECT_EQ(0, d.received_redirect_count()); 575 EXPECT_EQ(0, d.received_redirect_count());
576 } 576 }
577 } 577 }
578 578
579 // This is the same as the previous test, but checks that the network delegate 579 // This is the same as the previous test, but checks that the network delegate
580 // registers the error. 580 // registers the error.
581 // This test was disabled because it made chrome_frame_net_tests hang 581 // This test was disabled because it made chrome_frame_net_tests hang
582 // (see bug 102991). 582 // (see bug 102991).
583 TEST_F(URLRequestTestHTTP, DISABLED_NetworkDelegateTunnelConnectionFailed) { 583 TEST_F(URLRequestTestHTTP, DISABLED_NetworkDelegateTunnelConnectionFailed) {
584 ASSERT_TRUE(test_server_.Start()); 584 ASSERT_TRUE(test_server_.Start());
585 585
586 TestNetworkDelegate network_delegate; // must outlive URLRequest 586 TestNetworkDelegate network_delegate; // must outlive URLRequest
587 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 587 TestURLRequestContext context(true);
588 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 588 context.SetProxyFromString(test_server_.host_port_pair().ToString());
589 context->set_network_delegate(&network_delegate); 589 context.set_network_delegate(&network_delegate);
590 context->Init(); 590 context.Init();
591 591
592 TestDelegate d; 592 TestDelegate d;
593 { 593 {
594 URLRequest r(GURL("https://www.redirect.com/"), &d); 594 URLRequest r(GURL("https://www.redirect.com/"), &d);
595 r.set_context(context); 595 r.set_context(&context);
596 r.Start(); 596 r.Start();
597 EXPECT_TRUE(r.is_pending()); 597 EXPECT_TRUE(r.is_pending());
598 598
599 MessageLoop::current()->Run(); 599 MessageLoop::current()->Run();
600 600
601 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); 601 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status());
602 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); 602 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error());
603 EXPECT_EQ(1, d.response_started_count()); 603 EXPECT_EQ(1, d.response_started_count());
604 // We should not have followed the redirect. 604 // We should not have followed the redirect.
605 EXPECT_EQ(0, d.received_redirect_count()); 605 EXPECT_EQ(0, d.received_redirect_count());
606 606
607 EXPECT_EQ(1, network_delegate.error_count()); 607 EXPECT_EQ(1, network_delegate.error_count());
608 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, network_delegate.last_error()); 608 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, network_delegate.last_error());
609 } 609 }
610 } 610 }
611 611
612 // Tests that the network delegate can block and cancel a request. 612 // Tests that the network delegate can block and cancel a request.
613 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequest) { 613 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequest) {
614 ASSERT_TRUE(test_server_.Start()); 614 ASSERT_TRUE(test_server_.Start());
615 615
616 TestDelegate d; 616 TestDelegate d;
617 BlockingNetworkDelegate network_delegate; 617 BlockingNetworkDelegate network_delegate;
618 network_delegate.set_callback_retval(ERR_EMPTY_RESPONSE); 618 network_delegate.set_callback_retval(ERR_EMPTY_RESPONSE);
619 619
620 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 620 TestURLRequestContext context(true);
621 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 621 context.SetProxyFromString(test_server_.host_port_pair().ToString());
622 context->set_network_delegate(&network_delegate); 622 context.set_network_delegate(&network_delegate);
623 context->Init(); 623 context.Init();
624 624
625 { 625 {
626 TestURLRequest r(test_server_.GetURL(""), &d); 626 TestURLRequest r(test_server_.GetURL(""), &d);
627 r.set_context(context); 627 r.set_context(&context);
628 628
629 r.Start(); 629 r.Start();
630 MessageLoop::current()->Run(); 630 MessageLoop::current()->Run();
631 631
632 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); 632 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status());
633 EXPECT_EQ(ERR_EMPTY_RESPONSE, r.status().error()); 633 EXPECT_EQ(ERR_EMPTY_RESPONSE, r.status().error());
634 EXPECT_EQ(1, network_delegate.created_requests()); 634 EXPECT_EQ(1, network_delegate.created_requests());
635 EXPECT_EQ(0, network_delegate.destroyed_requests()); 635 EXPECT_EQ(0, network_delegate.destroyed_requests());
636 } 636 }
637 EXPECT_EQ(1, network_delegate.destroyed_requests()); 637 EXPECT_EQ(1, network_delegate.destroyed_requests());
638 } 638 }
639 639
640 // Tests that the network delegate can cancel a request synchronously. 640 // Tests that the network delegate can cancel a request synchronously.
641 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestSynchronously) { 641 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestSynchronously) {
642 ASSERT_TRUE(test_server_.Start()); 642 ASSERT_TRUE(test_server_.Start());
643 643
644 TestDelegate d; 644 TestDelegate d;
645 BlockingNetworkDelegate network_delegate; 645 BlockingNetworkDelegate network_delegate;
646 network_delegate.set_retval(ERR_EMPTY_RESPONSE); 646 network_delegate.set_retval(ERR_EMPTY_RESPONSE);
647 647
648 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 648 TestURLRequestContext context(true);
649 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 649 context.SetProxyFromString(test_server_.host_port_pair().ToString());
650 context->set_network_delegate(&network_delegate); 650 context.set_network_delegate(&network_delegate);
651 context->Init(); 651 context.Init();
652 652
653 { 653 {
654 TestURLRequest r(test_server_.GetURL(""), &d); 654 TestURLRequest r(test_server_.GetURL(""), &d);
655 r.set_context(context); 655 r.set_context(&context);
656 656
657 r.Start(); 657 r.Start();
658 MessageLoop::current()->Run(); 658 MessageLoop::current()->Run();
659 659
660 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); 660 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status());
661 EXPECT_EQ(ERR_EMPTY_RESPONSE, r.status().error()); 661 EXPECT_EQ(ERR_EMPTY_RESPONSE, r.status().error());
662 EXPECT_EQ(1, network_delegate.created_requests()); 662 EXPECT_EQ(1, network_delegate.created_requests());
663 EXPECT_EQ(0, network_delegate.destroyed_requests()); 663 EXPECT_EQ(0, network_delegate.destroyed_requests());
664 } 664 }
665 EXPECT_EQ(1, network_delegate.destroyed_requests()); 665 EXPECT_EQ(1, network_delegate.destroyed_requests());
666 } 666 }
667 667
668 // Tests that the network delegate can block and redirect a request to a new 668 // Tests that the network delegate can block and redirect a request to a new
669 // URL. 669 // URL.
670 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequest) { 670 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequest) {
671 ASSERT_TRUE(test_server_.Start()); 671 ASSERT_TRUE(test_server_.Start());
672 672
673 TestDelegate d; 673 TestDelegate d;
674 BlockingNetworkDelegate network_delegate; 674 BlockingNetworkDelegate network_delegate;
675 GURL redirect_url(test_server_.GetURL("simple.html")); 675 GURL redirect_url(test_server_.GetURL("simple.html"));
676 network_delegate.set_redirect_url(redirect_url); 676 network_delegate.set_redirect_url(redirect_url);
677 677
678 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 678 TestURLRequestContext context(true);
679 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 679 context.SetProxyFromString(test_server_.host_port_pair().ToString());
680 context->set_network_delegate(&network_delegate); 680 context.set_network_delegate(&network_delegate);
681 context->Init(); 681 context.Init();
682 682
683 { 683 {
684 GURL original_url(test_server_.GetURL("empty.html")); 684 GURL original_url(test_server_.GetURL("empty.html"));
685 TestURLRequest r(original_url, &d); 685 TestURLRequest r(original_url, &d);
686 r.set_context(context); 686 r.set_context(&context);
687 687
688 r.Start(); 688 r.Start();
689 MessageLoop::current()->Run(); 689 MessageLoop::current()->Run();
690 690
691 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 691 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
692 EXPECT_EQ(0, r.status().error()); 692 EXPECT_EQ(0, r.status().error());
693 EXPECT_EQ(redirect_url, r.url()); 693 EXPECT_EQ(redirect_url, r.url());
694 EXPECT_EQ(original_url, r.original_url()); 694 EXPECT_EQ(original_url, r.original_url());
695 EXPECT_EQ(2U, r.url_chain().size()); 695 EXPECT_EQ(2U, r.url_chain().size());
696 EXPECT_EQ(1, network_delegate.created_requests()); 696 EXPECT_EQ(1, network_delegate.created_requests());
697 EXPECT_EQ(0, network_delegate.destroyed_requests()); 697 EXPECT_EQ(0, network_delegate.destroyed_requests());
698 } 698 }
699 EXPECT_EQ(1, network_delegate.destroyed_requests()); 699 EXPECT_EQ(1, network_delegate.destroyed_requests());
700 } 700 }
701 701
702 // Tests that the network delegate can block and redirect a request to a new 702 // Tests that the network delegate can block and redirect a request to a new
703 // URL by setting a redirect_url and returning in OnBeforeURLRequest directly. 703 // URL by setting a redirect_url and returning in OnBeforeURLRequest directly.
704 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestSynchronously) { 704 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestSynchronously) {
705 ASSERT_TRUE(test_server_.Start()); 705 ASSERT_TRUE(test_server_.Start());
706 706
707 TestDelegate d; 707 TestDelegate d;
708 BlockingNetworkDelegate network_delegate; 708 BlockingNetworkDelegate network_delegate;
709 GURL redirect_url(test_server_.GetURL("simple.html")); 709 GURL redirect_url(test_server_.GetURL("simple.html"));
710 network_delegate.set_redirect_url(redirect_url); 710 network_delegate.set_redirect_url(redirect_url);
711 network_delegate.set_retval(OK); 711 network_delegate.set_retval(OK);
712 712
713 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 713 TestURLRequestContext context(true);
714 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 714 context.SetProxyFromString(test_server_.host_port_pair().ToString());
715 context->set_network_delegate(&network_delegate); 715 context.set_network_delegate(&network_delegate);
716 context->Init(); 716 context.Init();
717 717
718 { 718 {
719 GURL original_url(test_server_.GetURL("empty.html")); 719 GURL original_url(test_server_.GetURL("empty.html"));
720 TestURLRequest r(original_url, &d); 720 TestURLRequest r(original_url, &d);
721 r.set_context(context); 721 r.set_context(&context);
722 722
723 r.Start(); 723 r.Start();
724 MessageLoop::current()->Run(); 724 MessageLoop::current()->Run();
725 725
726 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 726 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
727 EXPECT_EQ(0, r.status().error()); 727 EXPECT_EQ(0, r.status().error());
728 EXPECT_EQ(redirect_url, r.url()); 728 EXPECT_EQ(redirect_url, r.url());
729 EXPECT_EQ(original_url, r.original_url()); 729 EXPECT_EQ(original_url, r.original_url());
730 EXPECT_EQ(2U, r.url_chain().size()); 730 EXPECT_EQ(2U, r.url_chain().size());
731 EXPECT_EQ(1, network_delegate.created_requests()); 731 EXPECT_EQ(1, network_delegate.created_requests());
732 EXPECT_EQ(0, network_delegate.destroyed_requests()); 732 EXPECT_EQ(0, network_delegate.destroyed_requests());
733 } 733 }
734 EXPECT_EQ(1, network_delegate.destroyed_requests()); 734 EXPECT_EQ(1, network_delegate.destroyed_requests());
735 } 735 }
736 736
737 // Tests that redirects caused by the network delegate preserve POST data. 737 // Tests that redirects caused by the network delegate preserve POST data.
738 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestPost) { 738 TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequestPost) {
739 ASSERT_TRUE(test_server_.Start()); 739 ASSERT_TRUE(test_server_.Start());
740 740
741 const char kData[] = "hello world"; 741 const char kData[] = "hello world";
742 742
743 TestDelegate d; 743 TestDelegate d;
744 BlockingNetworkDelegate network_delegate; 744 BlockingNetworkDelegate network_delegate;
745 GURL redirect_url(test_server_.GetURL("echo")); 745 GURL redirect_url(test_server_.GetURL("echo"));
746 network_delegate.set_redirect_url(redirect_url); 746 network_delegate.set_redirect_url(redirect_url);
747 747
748 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 748 TestURLRequestContext context(true);
749 context->set_network_delegate(&network_delegate); 749 context.set_network_delegate(&network_delegate);
750 context->Init(); 750 context.Init();
751 751
752 { 752 {
753 GURL original_url(test_server_.GetURL("empty.html")); 753 GURL original_url(test_server_.GetURL("empty.html"));
754 TestURLRequest r(original_url, &d); 754 TestURLRequest r(original_url, &d);
755 r.set_context(context); 755 r.set_context(&context);
756 r.set_method("POST"); 756 r.set_method("POST");
757 r.set_upload(CreateSimpleUploadData(kData).get()); 757 r.set_upload(CreateSimpleUploadData(kData).get());
758 HttpRequestHeaders headers; 758 HttpRequestHeaders headers;
759 headers.SetHeader(HttpRequestHeaders::kContentLength, 759 headers.SetHeader(HttpRequestHeaders::kContentLength,
760 base::UintToString(arraysize(kData) - 1)); 760 base::UintToString(arraysize(kData) - 1));
761 r.SetExtraRequestHeaders(headers); 761 r.SetExtraRequestHeaders(headers);
762 r.Start(); 762 r.Start();
763 MessageLoop::current()->Run(); 763 MessageLoop::current()->Run();
764 764
765 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 765 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
(...skipping 14 matching lines...) Expand all
780 // handle the challenge, and is passing the buck along to the 780 // handle the challenge, and is passing the buck along to the
781 // URLRequest::Delegate. 781 // URLRequest::Delegate.
782 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncNoAction) { 782 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncNoAction) {
783 ASSERT_TRUE(test_server_.Start()); 783 ASSERT_TRUE(test_server_.Start());
784 784
785 TestDelegate d; 785 TestDelegate d;
786 BlockingNetworkDelegate network_delegate; 786 BlockingNetworkDelegate network_delegate;
787 network_delegate.set_auth_retval( 787 network_delegate.set_auth_retval(
788 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION); 788 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION);
789 789
790 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 790 TestURLRequestContext context(true);
791 context->set_network_delegate(&network_delegate); 791 context.set_network_delegate(&network_delegate);
792 context->Init(); 792 context.Init();
793 793
794 d.set_credentials(AuthCredentials(kUser, kSecret)); 794 d.set_credentials(AuthCredentials(kUser, kSecret));
795 795
796 { 796 {
797 GURL url(test_server_.GetURL("auth-basic")); 797 GURL url(test_server_.GetURL("auth-basic"));
798 TestURLRequest r(url, &d); 798 TestURLRequest r(url, &d);
799 r.set_context(context); 799 r.set_context(&context);
800 r.Start(); 800 r.Start();
801 MessageLoop::current()->Run(); 801 MessageLoop::current()->Run();
802 802
803 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 803 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
804 EXPECT_EQ(0, r.status().error()); 804 EXPECT_EQ(0, r.status().error());
805 EXPECT_EQ(200, r.GetResponseCode()); 805 EXPECT_EQ(200, r.GetResponseCode());
806 EXPECT_TRUE(d.auth_required_called()); 806 EXPECT_TRUE(d.auth_required_called());
807 EXPECT_EQ(1, network_delegate.created_requests()); 807 EXPECT_EQ(1, network_delegate.created_requests());
808 EXPECT_EQ(0, network_delegate.destroyed_requests()); 808 EXPECT_EQ(0, network_delegate.destroyed_requests());
809 } 809 }
810 EXPECT_EQ(1, network_delegate.destroyed_requests()); 810 EXPECT_EQ(1, network_delegate.destroyed_requests());
811 } 811 }
812 812
813 // Tests that the network delegate can synchronously complete OnAuthRequired 813 // Tests that the network delegate can synchronously complete OnAuthRequired
814 // by setting credentials. 814 // by setting credentials.
815 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncSetAuth) { 815 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncSetAuth) {
816 ASSERT_TRUE(test_server_.Start()); 816 ASSERT_TRUE(test_server_.Start());
817 817
818 TestDelegate d; 818 TestDelegate d;
819 BlockingNetworkDelegate network_delegate; 819 BlockingNetworkDelegate network_delegate;
820 network_delegate.set_auth_retval( 820 network_delegate.set_auth_retval(
821 NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH); 821 NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH);
822 822
823 network_delegate.set_auth_credentials(AuthCredentials(kUser, kSecret)); 823 network_delegate.set_auth_credentials(AuthCredentials(kUser, kSecret));
824 824
825 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 825 TestURLRequestContext context(true);
826 context->set_network_delegate(&network_delegate); 826 context.set_network_delegate(&network_delegate);
827 context->Init(); 827 context.Init();
828 828
829 { 829 {
830 GURL url(test_server_.GetURL("auth-basic")); 830 GURL url(test_server_.GetURL("auth-basic"));
831 TestURLRequest r(url, &d); 831 TestURLRequest r(url, &d);
832 r.set_context(context); 832 r.set_context(&context);
833 r.Start(); 833 r.Start();
834 MessageLoop::current()->Run(); 834 MessageLoop::current()->Run();
835 835
836 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 836 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
837 EXPECT_EQ(0, r.status().error()); 837 EXPECT_EQ(0, r.status().error());
838 EXPECT_EQ(200, r.GetResponseCode()); 838 EXPECT_EQ(200, r.GetResponseCode());
839 EXPECT_FALSE(d.auth_required_called()); 839 EXPECT_FALSE(d.auth_required_called());
840 EXPECT_EQ(1, network_delegate.created_requests()); 840 EXPECT_EQ(1, network_delegate.created_requests());
841 EXPECT_EQ(0, network_delegate.destroyed_requests()); 841 EXPECT_EQ(0, network_delegate.destroyed_requests());
842 } 842 }
843 EXPECT_EQ(1, network_delegate.destroyed_requests()); 843 EXPECT_EQ(1, network_delegate.destroyed_requests());
844 } 844 }
845 845
846 // Tests that the network delegate can synchronously complete OnAuthRequired 846 // Tests that the network delegate can synchronously complete OnAuthRequired
847 // by cancelling authentication. 847 // by cancelling authentication.
848 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncCancel) { 848 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredSyncCancel) {
849 ASSERT_TRUE(test_server_.Start()); 849 ASSERT_TRUE(test_server_.Start());
850 850
851 TestDelegate d; 851 TestDelegate d;
852 BlockingNetworkDelegate network_delegate; 852 BlockingNetworkDelegate network_delegate;
853 network_delegate.set_auth_retval( 853 network_delegate.set_auth_retval(
854 NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH); 854 NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH);
855 855
856 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 856 TestURLRequestContext context(true);
857 context->set_network_delegate(&network_delegate); 857 context.set_network_delegate(&network_delegate);
858 context->Init(); 858 context.Init();
859 859
860 { 860 {
861 GURL url(test_server_.GetURL("auth-basic")); 861 GURL url(test_server_.GetURL("auth-basic"));
862 TestURLRequest r(url, &d); 862 TestURLRequest r(url, &d);
863 r.set_context(context); 863 r.set_context(&context);
864 r.Start(); 864 r.Start();
865 MessageLoop::current()->Run(); 865 MessageLoop::current()->Run();
866 866
867 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 867 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
868 EXPECT_EQ(OK, r.status().error()); 868 EXPECT_EQ(OK, r.status().error());
869 EXPECT_EQ(401, r.GetResponseCode()); 869 EXPECT_EQ(401, r.GetResponseCode());
870 EXPECT_FALSE(d.auth_required_called()); 870 EXPECT_FALSE(d.auth_required_called());
871 EXPECT_EQ(1, network_delegate.created_requests()); 871 EXPECT_EQ(1, network_delegate.created_requests());
872 EXPECT_EQ(0, network_delegate.destroyed_requests()); 872 EXPECT_EQ(0, network_delegate.destroyed_requests());
873 } 873 }
874 EXPECT_EQ(1, network_delegate.destroyed_requests()); 874 EXPECT_EQ(1, network_delegate.destroyed_requests());
875 } 875 }
876 876
877 // Tests that the network delegate can asynchronously complete OnAuthRequired 877 // Tests that the network delegate can asynchronously complete OnAuthRequired
878 // by taking no action. This indicates that the NetworkDelegate does not want 878 // by taking no action. This indicates that the NetworkDelegate does not want
879 // to handle the challenge, and is passing the buck along to the 879 // to handle the challenge, and is passing the buck along to the
880 // URLRequest::Delegate. 880 // URLRequest::Delegate.
881 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncNoAction) { 881 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncNoAction) {
882 ASSERT_TRUE(test_server_.Start()); 882 ASSERT_TRUE(test_server_.Start());
883 883
884 TestDelegate d; 884 TestDelegate d;
885 BlockingNetworkDelegate network_delegate; 885 BlockingNetworkDelegate network_delegate;
886 network_delegate.set_auth_retval( 886 network_delegate.set_auth_retval(
887 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING); 887 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING);
888 network_delegate.set_auth_callback_retval( 888 network_delegate.set_auth_callback_retval(
889 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION); 889 NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION);
890 890
891 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 891 TestURLRequestContext context(true);
892 context->set_network_delegate(&network_delegate); 892 context.set_network_delegate(&network_delegate);
893 context->Init(); 893 context.Init();
894 894
895 d.set_credentials(AuthCredentials(kUser, kSecret)); 895 d.set_credentials(AuthCredentials(kUser, kSecret));
896 896
897 { 897 {
898 GURL url(test_server_.GetURL("auth-basic")); 898 GURL url(test_server_.GetURL("auth-basic"));
899 TestURLRequest r(url, &d); 899 TestURLRequest r(url, &d);
900 r.set_context(context); 900 r.set_context(&context);
901 r.Start(); 901 r.Start();
902 MessageLoop::current()->Run(); 902 MessageLoop::current()->Run();
903 903
904 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 904 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
905 EXPECT_EQ(0, r.status().error()); 905 EXPECT_EQ(0, r.status().error());
906 EXPECT_EQ(200, r.GetResponseCode()); 906 EXPECT_EQ(200, r.GetResponseCode());
907 EXPECT_TRUE(d.auth_required_called()); 907 EXPECT_TRUE(d.auth_required_called());
908 EXPECT_EQ(1, network_delegate.created_requests()); 908 EXPECT_EQ(1, network_delegate.created_requests());
909 EXPECT_EQ(0, network_delegate.destroyed_requests()); 909 EXPECT_EQ(0, network_delegate.destroyed_requests());
910 } 910 }
911 EXPECT_EQ(1, network_delegate.destroyed_requests()); 911 EXPECT_EQ(1, network_delegate.destroyed_requests());
912 } 912 }
913 913
914 // Tests that the network delegate can asynchronously complete OnAuthRequired 914 // Tests that the network delegate can asynchronously complete OnAuthRequired
915 // by setting credentials. 915 // by setting credentials.
916 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncSetAuth) { 916 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncSetAuth) {
917 ASSERT_TRUE(test_server_.Start()); 917 ASSERT_TRUE(test_server_.Start());
918 918
919 TestDelegate d; 919 TestDelegate d;
920 BlockingNetworkDelegate network_delegate; 920 BlockingNetworkDelegate network_delegate;
921 network_delegate.set_auth_retval( 921 network_delegate.set_auth_retval(
922 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING); 922 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING);
923 network_delegate.set_auth_callback_retval( 923 network_delegate.set_auth_callback_retval(
924 NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH); 924 NetworkDelegate::AUTH_REQUIRED_RESPONSE_SET_AUTH);
925 925
926 AuthCredentials auth_credentials(kUser, kSecret); 926 AuthCredentials auth_credentials(kUser, kSecret);
927 network_delegate.set_auth_credentials(auth_credentials); 927 network_delegate.set_auth_credentials(auth_credentials);
928 928
929 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 929 TestURLRequestContext context(true);
930 context->set_network_delegate(&network_delegate); 930 context.set_network_delegate(&network_delegate);
931 context->Init(); 931 context.Init();
932 932
933 { 933 {
934 GURL url(test_server_.GetURL("auth-basic")); 934 GURL url(test_server_.GetURL("auth-basic"));
935 TestURLRequest r(url, &d); 935 TestURLRequest r(url, &d);
936 r.set_context(context); 936 r.set_context(&context);
937 r.Start(); 937 r.Start();
938 MessageLoop::current()->Run(); 938 MessageLoop::current()->Run();
939 939
940 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 940 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
941 EXPECT_EQ(0, r.status().error()); 941 EXPECT_EQ(0, r.status().error());
942 942
943 EXPECT_EQ(200, r.GetResponseCode()); 943 EXPECT_EQ(200, r.GetResponseCode());
944 EXPECT_FALSE(d.auth_required_called()); 944 EXPECT_FALSE(d.auth_required_called());
945 EXPECT_EQ(1, network_delegate.created_requests()); 945 EXPECT_EQ(1, network_delegate.created_requests());
946 EXPECT_EQ(0, network_delegate.destroyed_requests()); 946 EXPECT_EQ(0, network_delegate.destroyed_requests());
947 } 947 }
948 EXPECT_EQ(1, network_delegate.destroyed_requests()); 948 EXPECT_EQ(1, network_delegate.destroyed_requests());
949 } 949 }
950 950
951 // Tests that the network delegate can asynchronously complete OnAuthRequired 951 // Tests that the network delegate can asynchronously complete OnAuthRequired
952 // by cancelling authentication. 952 // by cancelling authentication.
953 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncCancel) { 953 TEST_F(URLRequestTestHTTP, NetworkDelegateOnAuthRequiredAsyncCancel) {
954 ASSERT_TRUE(test_server_.Start()); 954 ASSERT_TRUE(test_server_.Start());
955 955
956 TestDelegate d; 956 TestDelegate d;
957 BlockingNetworkDelegate network_delegate; 957 BlockingNetworkDelegate network_delegate;
958 network_delegate.set_auth_retval( 958 network_delegate.set_auth_retval(
959 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING); 959 NetworkDelegate::AUTH_REQUIRED_RESPONSE_IO_PENDING);
960 network_delegate.set_auth_callback_retval( 960 network_delegate.set_auth_callback_retval(
961 NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH); 961 NetworkDelegate::AUTH_REQUIRED_RESPONSE_CANCEL_AUTH);
962 962
963 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 963 TestURLRequestContext context(true);
964 context->set_network_delegate(&network_delegate); 964 context.set_network_delegate(&network_delegate);
965 context->Init(); 965 context.Init();
966 966
967 { 967 {
968 GURL url(test_server_.GetURL("auth-basic")); 968 GURL url(test_server_.GetURL("auth-basic"));
969 TestURLRequest r(url, &d); 969 TestURLRequest r(url, &d);
970 r.set_context(context); 970 r.set_context(&context);
971 r.Start(); 971 r.Start();
972 MessageLoop::current()->Run(); 972 MessageLoop::current()->Run();
973 973
974 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 974 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
975 EXPECT_EQ(OK, r.status().error()); 975 EXPECT_EQ(OK, r.status().error());
976 EXPECT_EQ(401, r.GetResponseCode()); 976 EXPECT_EQ(401, r.GetResponseCode());
977 EXPECT_FALSE(d.auth_required_called()); 977 EXPECT_FALSE(d.auth_required_called());
978 EXPECT_EQ(1, network_delegate.created_requests()); 978 EXPECT_EQ(1, network_delegate.created_requests());
979 EXPECT_EQ(0, network_delegate.destroyed_requests()); 979 EXPECT_EQ(0, network_delegate.destroyed_requests());
980 } 980 }
981 EXPECT_EQ(1, network_delegate.destroyed_requests()); 981 EXPECT_EQ(1, network_delegate.destroyed_requests());
982 } 982 }
983 983
984 // Tests that we can handle when a network request was canceled while we were 984 // Tests that we can handle when a network request was canceled while we were
985 // waiting for the network delegate. 985 // waiting for the network delegate.
986 // Part 1: Request is cancelled while waiting for OnBeforeURLRequest callback. 986 // Part 1: Request is cancelled while waiting for OnBeforeURLRequest callback.
987 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting1) { 987 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting1) {
988 ASSERT_TRUE(test_server_.Start()); 988 ASSERT_TRUE(test_server_.Start());
989 989
990 TestDelegate d; 990 TestDelegate d;
991 BlockingNetworkDelegateWithManualCallback network_delegate; 991 BlockingNetworkDelegateWithManualCallback network_delegate;
992 network_delegate.BlockOn( 992 network_delegate.BlockOn(
993 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_URL_REQUEST); 993 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_URL_REQUEST);
994 994
995 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 995 TestURLRequestContext context(true);
996 context->set_network_delegate(&network_delegate); 996 context.set_network_delegate(&network_delegate);
997 context->Init(); 997 context.Init();
998 998
999 { 999 {
1000 TestURLRequest r(test_server_.GetURL(""), &d); 1000 TestURLRequest r(test_server_.GetURL(""), &d);
1001 r.set_context(context); 1001 r.set_context(&context);
1002 1002
1003 r.Start(); 1003 r.Start();
1004 network_delegate.WaitForState( 1004 network_delegate.WaitForState(
1005 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_URL_REQUEST); 1005 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_URL_REQUEST);
1006 EXPECT_EQ(0, network_delegate.completed_requests()); 1006 EXPECT_EQ(0, network_delegate.completed_requests());
1007 // Cancel before callback. 1007 // Cancel before callback.
1008 r.Cancel(); 1008 r.Cancel();
1009 // Ensure that network delegate is notified. 1009 // Ensure that network delegate is notified.
1010 EXPECT_EQ(1, network_delegate.completed_requests()); 1010 EXPECT_EQ(1, network_delegate.completed_requests());
1011 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 1011 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
1012 EXPECT_EQ(ERR_ABORTED, r.status().error()); 1012 EXPECT_EQ(ERR_ABORTED, r.status().error());
1013 EXPECT_EQ(1, network_delegate.created_requests()); 1013 EXPECT_EQ(1, network_delegate.created_requests());
1014 EXPECT_EQ(0, network_delegate.destroyed_requests()); 1014 EXPECT_EQ(0, network_delegate.destroyed_requests());
1015 } 1015 }
1016 EXPECT_EQ(1, network_delegate.destroyed_requests()); 1016 EXPECT_EQ(1, network_delegate.destroyed_requests());
1017 } 1017 }
1018 1018
1019 // Tests that we can handle when a network request was canceled while we were 1019 // Tests that we can handle when a network request was canceled while we were
1020 // waiting for the network delegate. 1020 // waiting for the network delegate.
1021 // Part 2: Request is cancelled while waiting for OnBeforeSendHeaders callback. 1021 // Part 2: Request is cancelled while waiting for OnBeforeSendHeaders callback.
1022 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting2) { 1022 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting2) {
1023 ASSERT_TRUE(test_server_.Start()); 1023 ASSERT_TRUE(test_server_.Start());
1024 1024
1025 TestDelegate d; 1025 TestDelegate d;
1026 BlockingNetworkDelegateWithManualCallback network_delegate; 1026 BlockingNetworkDelegateWithManualCallback network_delegate;
1027 network_delegate.BlockOn( 1027 network_delegate.BlockOn(
1028 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_SEND_HEADERS); 1028 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_SEND_HEADERS);
1029 1029
1030 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1030 TestURLRequestContext context(true);
1031 context->set_network_delegate(&network_delegate); 1031 context.set_network_delegate(&network_delegate);
1032 context->Init(); 1032 context.Init();
1033 1033
1034 { 1034 {
1035 TestURLRequest r(test_server_.GetURL(""), &d); 1035 TestURLRequest r(test_server_.GetURL(""), &d);
1036 r.set_context(context); 1036 r.set_context(&context);
1037 1037
1038 r.Start(); 1038 r.Start();
1039 network_delegate.WaitForState( 1039 network_delegate.WaitForState(
1040 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_SEND_HEADERS); 1040 BlockingNetworkDelegateWithManualCallback::ON_BEFORE_SEND_HEADERS);
1041 EXPECT_EQ(0, network_delegate.completed_requests()); 1041 EXPECT_EQ(0, network_delegate.completed_requests());
1042 // Cancel before callback. 1042 // Cancel before callback.
1043 r.Cancel(); 1043 r.Cancel();
1044 // Ensure that network delegate is notified. 1044 // Ensure that network delegate is notified.
1045 EXPECT_EQ(1, network_delegate.completed_requests()); 1045 EXPECT_EQ(1, network_delegate.completed_requests());
1046 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 1046 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
1047 EXPECT_EQ(ERR_ABORTED, r.status().error()); 1047 EXPECT_EQ(ERR_ABORTED, r.status().error());
1048 EXPECT_EQ(1, network_delegate.created_requests()); 1048 EXPECT_EQ(1, network_delegate.created_requests());
1049 EXPECT_EQ(0, network_delegate.destroyed_requests()); 1049 EXPECT_EQ(0, network_delegate.destroyed_requests());
1050 } 1050 }
1051 EXPECT_EQ(1, network_delegate.destroyed_requests()); 1051 EXPECT_EQ(1, network_delegate.destroyed_requests());
1052 } 1052 }
1053 1053
1054 // Tests that we can handle when a network request was canceled while we were 1054 // Tests that we can handle when a network request was canceled while we were
1055 // waiting for the network delegate. 1055 // waiting for the network delegate.
1056 // Part 3: Request is cancelled while waiting for OnHeadersReceived callback. 1056 // Part 3: Request is cancelled while waiting for OnHeadersReceived callback.
1057 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting3) { 1057 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting3) {
1058 ASSERT_TRUE(test_server_.Start()); 1058 ASSERT_TRUE(test_server_.Start());
1059 1059
1060 TestDelegate d; 1060 TestDelegate d;
1061 BlockingNetworkDelegateWithManualCallback network_delegate; 1061 BlockingNetworkDelegateWithManualCallback network_delegate;
1062 network_delegate.BlockOn( 1062 network_delegate.BlockOn(
1063 BlockingNetworkDelegateWithManualCallback::ON_HEADERS_RECEIVED); 1063 BlockingNetworkDelegateWithManualCallback::ON_HEADERS_RECEIVED);
1064 1064
1065 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1065 TestURLRequestContext context(true);
1066 context->set_network_delegate(&network_delegate); 1066 context.set_network_delegate(&network_delegate);
1067 context->Init(); 1067 context.Init();
1068 1068
1069 { 1069 {
1070 TestURLRequest r(test_server_.GetURL(""), &d); 1070 TestURLRequest r(test_server_.GetURL(""), &d);
1071 r.set_context(context); 1071 r.set_context(&context);
1072 1072
1073 r.Start(); 1073 r.Start();
1074 network_delegate.WaitForState( 1074 network_delegate.WaitForState(
1075 BlockingNetworkDelegateWithManualCallback::ON_HEADERS_RECEIVED); 1075 BlockingNetworkDelegateWithManualCallback::ON_HEADERS_RECEIVED);
1076 EXPECT_EQ(0, network_delegate.completed_requests()); 1076 EXPECT_EQ(0, network_delegate.completed_requests());
1077 // Cancel before callback. 1077 // Cancel before callback.
1078 r.Cancel(); 1078 r.Cancel();
1079 // Ensure that network delegate is notified. 1079 // Ensure that network delegate is notified.
1080 EXPECT_EQ(1, network_delegate.completed_requests()); 1080 EXPECT_EQ(1, network_delegate.completed_requests());
1081 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 1081 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
1082 EXPECT_EQ(ERR_ABORTED, r.status().error()); 1082 EXPECT_EQ(ERR_ABORTED, r.status().error());
1083 EXPECT_EQ(1, network_delegate.created_requests()); 1083 EXPECT_EQ(1, network_delegate.created_requests());
1084 EXPECT_EQ(0, network_delegate.destroyed_requests()); 1084 EXPECT_EQ(0, network_delegate.destroyed_requests());
1085 } 1085 }
1086 EXPECT_EQ(1, network_delegate.destroyed_requests()); 1086 EXPECT_EQ(1, network_delegate.destroyed_requests());
1087 } 1087 }
1088 1088
1089 // Tests that we can handle when a network request was canceled while we were 1089 // Tests that we can handle when a network request was canceled while we were
1090 // waiting for the network delegate. 1090 // waiting for the network delegate.
1091 // Part 4: Request is cancelled while waiting for OnAuthRequired callback. 1091 // Part 4: Request is cancelled while waiting for OnAuthRequired callback.
1092 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting4) { 1092 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting4) {
1093 ASSERT_TRUE(test_server_.Start()); 1093 ASSERT_TRUE(test_server_.Start());
1094 1094
1095 TestDelegate d; 1095 TestDelegate d;
1096 BlockingNetworkDelegateWithManualCallback network_delegate; 1096 BlockingNetworkDelegateWithManualCallback network_delegate;
1097 network_delegate.BlockOn( 1097 network_delegate.BlockOn(
1098 BlockingNetworkDelegateWithManualCallback::ON_AUTH_REQUIRED); 1098 BlockingNetworkDelegateWithManualCallback::ON_AUTH_REQUIRED);
1099 1099
1100 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1100 TestURLRequestContext context(true);
1101 context->set_network_delegate(&network_delegate); 1101 context.set_network_delegate(&network_delegate);
1102 context->Init(); 1102 context.Init();
1103 1103
1104 { 1104 {
1105 TestURLRequest r(test_server_.GetURL("auth-basic"), &d); 1105 TestURLRequest r(test_server_.GetURL("auth-basic"), &d);
1106 r.set_context(context); 1106 r.set_context(&context);
1107 1107
1108 r.Start(); 1108 r.Start();
1109 network_delegate.WaitForState( 1109 network_delegate.WaitForState(
1110 BlockingNetworkDelegateWithManualCallback::ON_AUTH_REQUIRED); 1110 BlockingNetworkDelegateWithManualCallback::ON_AUTH_REQUIRED);
1111 EXPECT_EQ(0, network_delegate.completed_requests()); 1111 EXPECT_EQ(0, network_delegate.completed_requests());
1112 // Cancel before callback. 1112 // Cancel before callback.
1113 r.Cancel(); 1113 r.Cancel();
1114 // Ensure that network delegate is notified. 1114 // Ensure that network delegate is notified.
1115 EXPECT_EQ(1, network_delegate.completed_requests()); 1115 EXPECT_EQ(1, network_delegate.completed_requests());
1116 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 1116 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
1117 EXPECT_EQ(ERR_ABORTED, r.status().error()); 1117 EXPECT_EQ(ERR_ABORTED, r.status().error());
1118 EXPECT_EQ(1, network_delegate.created_requests()); 1118 EXPECT_EQ(1, network_delegate.created_requests());
1119 EXPECT_EQ(0, network_delegate.destroyed_requests()); 1119 EXPECT_EQ(0, network_delegate.destroyed_requests());
1120 } 1120 }
1121 EXPECT_EQ(1, network_delegate.destroyed_requests()); 1121 EXPECT_EQ(1, network_delegate.destroyed_requests());
1122 } 1122 }
1123 1123
1124 // In this unit test, we're using the HTTPTestServer as a proxy server and 1124 // In this unit test, we're using the HTTPTestServer as a proxy server and
1125 // issuing a CONNECT request with the magic host name "www.server-auth.com". 1125 // issuing a CONNECT request with the magic host name "www.server-auth.com".
1126 // The HTTPTestServer will return a 401 response, which we should balk at. 1126 // The HTTPTestServer will return a 401 response, which we should balk at.
1127 TEST_F(URLRequestTestHTTP, UnexpectedServerAuthTest) { 1127 TEST_F(URLRequestTestHTTP, UnexpectedServerAuthTest) {
1128 ASSERT_TRUE(test_server_.Start()); 1128 ASSERT_TRUE(test_server_.Start());
1129 1129
1130 TestNetworkDelegate network_delegate; // must outlive URLRequest 1130 TestNetworkDelegate network_delegate; // must outlive URLRequest
1131 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1131 TestURLRequestContext context(true);
1132 context->SetProxyFromString(test_server_.host_port_pair().ToString()); 1132 context.SetProxyFromString(test_server_.host_port_pair().ToString());
1133 context->set_network_delegate(&network_delegate); 1133 context.set_network_delegate(&network_delegate);
1134 context->Init(); 1134 context.Init();
1135 1135
1136 TestDelegate d; 1136 TestDelegate d;
1137 { 1137 {
1138 URLRequest r(GURL("https://www.server-auth.com/"), &d); 1138 URLRequest r(GURL("https://www.server-auth.com/"), &d);
1139 r.set_context(context); 1139 r.set_context(&context);
1140 1140
1141 r.Start(); 1141 r.Start();
1142 EXPECT_TRUE(r.is_pending()); 1142 EXPECT_TRUE(r.is_pending());
1143 1143
1144 MessageLoop::current()->Run(); 1144 MessageLoop::current()->Run();
1145 1145
1146 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); 1146 EXPECT_EQ(URLRequestStatus::FAILED, r.status().status());
1147 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error()); 1147 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r.status().error());
1148 } 1148 }
1149 } 1149 }
1150 1150
1151 TEST_F(URLRequestTestHTTP, GetTest_NoCache) { 1151 TEST_F(URLRequestTestHTTP, GetTest_NoCache) {
1152 ASSERT_TRUE(test_server_.Start()); 1152 ASSERT_TRUE(test_server_.Start());
1153 1153
1154 TestDelegate d; 1154 TestDelegate d;
1155 { 1155 {
1156 TestURLRequest r(test_server_.GetURL(""), &d); 1156 TestURLRequest r(test_server_.GetURL(""), &d);
1157 r.set_context(default_context_); 1157 r.set_context(&default_context_);
1158 1158
1159 r.Start(); 1159 r.Start();
1160 EXPECT_TRUE(r.is_pending()); 1160 EXPECT_TRUE(r.is_pending());
1161 1161
1162 MessageLoop::current()->Run(); 1162 MessageLoop::current()->Run();
1163 1163
1164 EXPECT_EQ(1, d.response_started_count()); 1164 EXPECT_EQ(1, d.response_started_count());
1165 EXPECT_FALSE(d.received_data_before_response()); 1165 EXPECT_FALSE(d.received_data_before_response());
1166 EXPECT_NE(0, d.bytes_received()); 1166 EXPECT_NE(0, d.bytes_received());
1167 EXPECT_EQ(test_server_.host_port_pair().host(), 1167 EXPECT_EQ(test_server_.host_port_pair().host(),
1168 r.GetSocketAddress().host()); 1168 r.GetSocketAddress().host());
1169 EXPECT_EQ(test_server_.host_port_pair().port(), 1169 EXPECT_EQ(test_server_.host_port_pair().port(),
1170 r.GetSocketAddress().port()); 1170 r.GetSocketAddress().port());
1171 1171
1172 // TODO(eroman): Add back the NetLog tests... 1172 // TODO(eroman): Add back the NetLog tests...
1173 } 1173 }
1174 } 1174 }
1175 1175
1176 TEST_F(URLRequestTestHTTP, GetTest) { 1176 TEST_F(URLRequestTestHTTP, GetTest) {
1177 ASSERT_TRUE(test_server_.Start()); 1177 ASSERT_TRUE(test_server_.Start());
1178 1178
1179 TestDelegate d; 1179 TestDelegate d;
1180 { 1180 {
1181 TestURLRequest r(test_server_.GetURL(""), &d); 1181 TestURLRequest r(test_server_.GetURL(""), &d);
1182 r.set_context(default_context_); 1182 r.set_context(&default_context_);
1183 1183
1184 r.Start(); 1184 r.Start();
1185 EXPECT_TRUE(r.is_pending()); 1185 EXPECT_TRUE(r.is_pending());
1186 1186
1187 MessageLoop::current()->Run(); 1187 MessageLoop::current()->Run();
1188 1188
1189 EXPECT_EQ(1, d.response_started_count()); 1189 EXPECT_EQ(1, d.response_started_count());
1190 EXPECT_FALSE(d.received_data_before_response()); 1190 EXPECT_FALSE(d.received_data_before_response());
1191 EXPECT_NE(0, d.bytes_received()); 1191 EXPECT_NE(0, d.bytes_received());
1192 EXPECT_EQ(test_server_.host_port_pair().host(), 1192 EXPECT_EQ(test_server_.host_port_pair().host(),
(...skipping 21 matching lines...) Expand all
1214 { true, true, false, false, true }; 1214 { true, true, false, false, true };
1215 1215
1216 for (int i = 0; i < num_tests ; i++) { 1216 for (int i = 0; i < num_tests ; i++) {
1217 TestDelegate d; 1217 TestDelegate d;
1218 { 1218 {
1219 std::string test_file = 1219 std::string test_file =
1220 base::StringPrintf("compressedfiles/BullRunSpeech.txt?%c", 1220 base::StringPrintf("compressedfiles/BullRunSpeech.txt?%c",
1221 test_parameters[i]); 1221 test_parameters[i]);
1222 1222
1223 TestNetworkDelegate network_delegate; // must outlive URLRequest 1223 TestNetworkDelegate network_delegate; // must outlive URLRequest
1224 scoped_refptr<TestURLRequestContext> context( 1224 TestURLRequestContext context(true);
1225 new TestURLRequestContext(true)); 1225 context.set_network_delegate(&network_delegate);
1226 context->set_network_delegate(&network_delegate); 1226 context.Init();
1227 context->Init();
1228 1227
1229 TestURLRequest r(test_server_.GetURL(test_file), &d); 1228 TestURLRequest r(test_server_.GetURL(test_file), &d);
1230 r.set_context(context); 1229 r.set_context(&context);
1231 r.Start(); 1230 r.Start();
1232 EXPECT_TRUE(r.is_pending()); 1231 EXPECT_TRUE(r.is_pending());
1233 1232
1234 MessageLoop::current()->Run(); 1233 MessageLoop::current()->Run();
1235 1234
1236 EXPECT_EQ(1, d.response_started_count()); 1235 EXPECT_EQ(1, d.response_started_count());
1237 EXPECT_FALSE(d.received_data_before_response()); 1236 EXPECT_FALSE(d.received_data_before_response());
1238 VLOG(1) << " Received " << d.bytes_received() << " bytes" 1237 VLOG(1) << " Received " << d.bytes_received() << " bytes"
1239 << " status = " << r.status().status() 1238 << " status = " << r.status().status()
1240 << " error = " << r.status().error(); 1239 << " error = " << r.status().error();
(...skipping 19 matching lines...) Expand all
1260 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1259 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1261 ASSERT_TRUE(https_test_server.Start()); 1260 ASSERT_TRUE(https_test_server.Start());
1262 1261
1263 // An https server is sent a request with an https referer, 1262 // An https server is sent a request with an https referer,
1264 // and responds with a redirect to an http url. The http 1263 // and responds with a redirect to an http url. The http
1265 // server should not be sent the referer. 1264 // server should not be sent the referer.
1266 GURL http_destination = test_server_.GetURL(""); 1265 GURL http_destination = test_server_.GetURL("");
1267 TestDelegate d; 1266 TestDelegate d;
1268 TestURLRequest req(https_test_server.GetURL( 1267 TestURLRequest req(https_test_server.GetURL(
1269 "server-redirect?" + http_destination.spec()), &d); 1268 "server-redirect?" + http_destination.spec()), &d);
1270 req.set_context(default_context_); 1269 req.set_context(&default_context_);
1271 req.set_referrer("https://www.referrer.com/"); 1270 req.set_referrer("https://www.referrer.com/");
1272 req.Start(); 1271 req.Start();
1273 MessageLoop::current()->Run(); 1272 MessageLoop::current()->Run();
1274 1273
1275 EXPECT_EQ(1, d.response_started_count()); 1274 EXPECT_EQ(1, d.response_started_count());
1276 EXPECT_EQ(1, d.received_redirect_count()); 1275 EXPECT_EQ(1, d.received_redirect_count());
1277 EXPECT_EQ(http_destination, req.url()); 1276 EXPECT_EQ(http_destination, req.url());
1278 EXPECT_EQ(std::string(), req.referrer()); 1277 EXPECT_EQ(std::string(), req.referrer());
1279 } 1278 }
1280 1279
1281 TEST_F(URLRequestTestHTTP, MultipleRedirectTest) { 1280 TEST_F(URLRequestTestHTTP, MultipleRedirectTest) {
1282 ASSERT_TRUE(test_server_.Start()); 1281 ASSERT_TRUE(test_server_.Start());
1283 1282
1284 GURL destination_url = test_server_.GetURL(""); 1283 GURL destination_url = test_server_.GetURL("");
1285 GURL middle_redirect_url = test_server_.GetURL( 1284 GURL middle_redirect_url = test_server_.GetURL(
1286 "server-redirect?" + destination_url.spec()); 1285 "server-redirect?" + destination_url.spec());
1287 GURL original_url = test_server_.GetURL( 1286 GURL original_url = test_server_.GetURL(
1288 "server-redirect?" + middle_redirect_url.spec()); 1287 "server-redirect?" + middle_redirect_url.spec());
1289 TestDelegate d; 1288 TestDelegate d;
1290 TestURLRequest req(original_url, &d); 1289 TestURLRequest req(original_url, &d);
1291 req.set_context(default_context_); 1290 req.set_context(&default_context_);
1292 req.Start(); 1291 req.Start();
1293 MessageLoop::current()->Run(); 1292 MessageLoop::current()->Run();
1294 1293
1295 EXPECT_EQ(1, d.response_started_count()); 1294 EXPECT_EQ(1, d.response_started_count());
1296 EXPECT_EQ(2, d.received_redirect_count()); 1295 EXPECT_EQ(2, d.received_redirect_count());
1297 EXPECT_EQ(destination_url, req.url()); 1296 EXPECT_EQ(destination_url, req.url());
1298 EXPECT_EQ(original_url, req.original_url()); 1297 EXPECT_EQ(original_url, req.original_url());
1299 ASSERT_EQ(3U, req.url_chain().size()); 1298 ASSERT_EQ(3U, req.url_chain().size());
1300 EXPECT_EQ(original_url, req.url_chain()[0]); 1299 EXPECT_EQ(original_url, req.url_chain()[0]);
1301 EXPECT_EQ(middle_redirect_url, req.url_chain()[1]); 1300 EXPECT_EQ(middle_redirect_url, req.url_chain()[1]);
1302 EXPECT_EQ(destination_url, req.url_chain()[2]); 1301 EXPECT_EQ(destination_url, req.url_chain()[2]);
1303 } 1302 }
1304 1303
1305 class HTTPSRequestTest : public testing::Test { 1304 class HTTPSRequestTest : public testing::Test {
1306 public: 1305 public:
1307 HTTPSRequestTest() : default_context_(new TestURLRequestContext(true)) { 1306 HTTPSRequestTest() : default_context_(true) {
1308 default_context_->set_network_delegate(&default_network_delegate_); 1307 default_context_.set_network_delegate(&default_network_delegate_);
1309 default_context_->Init(); 1308 default_context_.Init();
1310 } 1309 }
1311 virtual ~HTTPSRequestTest() {} 1310 virtual ~HTTPSRequestTest() {}
1312 1311
1313 protected: 1312 protected:
1314 TestNetworkDelegate default_network_delegate_; // must outlive URLRequest 1313 TestNetworkDelegate default_network_delegate_; // must outlive URLRequest
1315 scoped_refptr<TestURLRequestContext> default_context_; 1314 TestURLRequestContext default_context_;
1316 }; 1315 };
1317 1316
1318 // This test was disabled because it made chrome_frame_net_tests hang 1317 // This test was disabled because it made chrome_frame_net_tests hang
1319 // (see bug 102991). 1318 // (see bug 102991).
1320 TEST_F(HTTPSRequestTest, DISABLED_HTTPSGetTest) { 1319 TEST_F(HTTPSRequestTest, DISABLED_HTTPSGetTest) {
1321 TestServer test_server(TestServer::TYPE_HTTPS, 1320 TestServer test_server(TestServer::TYPE_HTTPS,
1322 TestServer::kLocalhost, 1321 TestServer::kLocalhost,
1323 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1322 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1324 ASSERT_TRUE(test_server.Start()); 1323 ASSERT_TRUE(test_server.Start());
1325 1324
1326 TestDelegate d; 1325 TestDelegate d;
1327 { 1326 {
1328 TestURLRequest r(test_server.GetURL(""), &d); 1327 TestURLRequest r(test_server.GetURL(""), &d);
1329 r.set_context(default_context_); 1328 r.set_context(&default_context_);
1330 r.Start(); 1329 r.Start();
1331 EXPECT_TRUE(r.is_pending()); 1330 EXPECT_TRUE(r.is_pending());
1332 1331
1333 MessageLoop::current()->Run(); 1332 MessageLoop::current()->Run();
1334 1333
1335 EXPECT_EQ(1, d.response_started_count()); 1334 EXPECT_EQ(1, d.response_started_count());
1336 EXPECT_FALSE(d.received_data_before_response()); 1335 EXPECT_FALSE(d.received_data_before_response());
1337 EXPECT_NE(0, d.bytes_received()); 1336 EXPECT_NE(0, d.bytes_received());
1338 CheckSSLInfo(r.ssl_info()); 1337 CheckSSLInfo(r.ssl_info());
1339 EXPECT_EQ(test_server.host_port_pair().host(), 1338 EXPECT_EQ(test_server.host_port_pair().host(),
1340 r.GetSocketAddress().host()); 1339 r.GetSocketAddress().host());
1341 EXPECT_EQ(test_server.host_port_pair().port(), 1340 EXPECT_EQ(test_server.host_port_pair().port(),
1342 r.GetSocketAddress().port()); 1341 r.GetSocketAddress().port());
1343 } 1342 }
1344 } 1343 }
1345 1344
1346 TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) { 1345 TEST_F(HTTPSRequestTest, HTTPSMismatchedTest) {
1347 TestServer::HTTPSOptions https_options( 1346 TestServer::HTTPSOptions https_options(
1348 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 1347 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME);
1349 TestServer test_server(https_options, 1348 TestServer test_server(https_options,
1350 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1349 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1351 ASSERT_TRUE(test_server.Start()); 1350 ASSERT_TRUE(test_server.Start());
1352 1351
1353 bool err_allowed = true; 1352 bool err_allowed = true;
1354 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) { 1353 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) {
1355 TestDelegate d; 1354 TestDelegate d;
1356 { 1355 {
1357 d.set_allow_certificate_errors(err_allowed); 1356 d.set_allow_certificate_errors(err_allowed);
1358 TestURLRequest r(test_server.GetURL(""), &d); 1357 TestURLRequest r(test_server.GetURL(""), &d);
1359 r.set_context(default_context_); 1358 r.set_context(&default_context_);
1360 1359
1361 r.Start(); 1360 r.Start();
1362 EXPECT_TRUE(r.is_pending()); 1361 EXPECT_TRUE(r.is_pending());
1363 1362
1364 MessageLoop::current()->Run(); 1363 MessageLoop::current()->Run();
1365 1364
1366 EXPECT_EQ(1, d.response_started_count()); 1365 EXPECT_EQ(1, d.response_started_count());
1367 EXPECT_FALSE(d.received_data_before_response()); 1366 EXPECT_FALSE(d.received_data_before_response());
1368 EXPECT_TRUE(d.have_certificate_errors()); 1367 EXPECT_TRUE(d.have_certificate_errors());
1369 if (err_allowed) { 1368 if (err_allowed) {
(...skipping 14 matching lines...) Expand all
1384 ASSERT_TRUE(test_server.Start()); 1383 ASSERT_TRUE(test_server.Start());
1385 1384
1386 // Iterate from false to true, just so that we do the opposite of the 1385 // Iterate from false to true, just so that we do the opposite of the
1387 // previous test in order to increase test coverage. 1386 // previous test in order to increase test coverage.
1388 bool err_allowed = false; 1387 bool err_allowed = false;
1389 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) { 1388 for (int i = 0; i < 2 ; i++, err_allowed = !err_allowed) {
1390 TestDelegate d; 1389 TestDelegate d;
1391 { 1390 {
1392 d.set_allow_certificate_errors(err_allowed); 1391 d.set_allow_certificate_errors(err_allowed);
1393 TestURLRequest r(test_server.GetURL(""), &d); 1392 TestURLRequest r(test_server.GetURL(""), &d);
1394 r.set_context(default_context_); 1393 r.set_context(&default_context_);
1395 1394
1396 r.Start(); 1395 r.Start();
1397 EXPECT_TRUE(r.is_pending()); 1396 EXPECT_TRUE(r.is_pending());
1398 1397
1399 MessageLoop::current()->Run(); 1398 MessageLoop::current()->Run();
1400 1399
1401 EXPECT_EQ(1, d.response_started_count()); 1400 EXPECT_EQ(1, d.response_started_count());
1402 EXPECT_FALSE(d.received_data_before_response()); 1401 EXPECT_FALSE(d.received_data_before_response());
1403 EXPECT_TRUE(d.have_certificate_errors()); 1402 EXPECT_TRUE(d.have_certificate_errors());
1404 if (err_allowed) { 1403 if (err_allowed) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 { { 0xf1, 0xad, 0xf6, 0xce, 0x42, 0xac, 0xe7, 0xb4, 0xf4, 0x24, 1438 { { 0xf1, 0xad, 0xf6, 0xce, 0x42, 0xac, 0xe7, 0xb4, 0xf4, 0x24,
1440 0xdb, 0x1a, 0xf7, 0xa0, 0x9f, 0x09, 0xa1, 0xea, 0xf1, 0x5c } }; 1439 0xdb, 0x1a, 0xf7, 0xa0, 0x9f, 0x09, 0xa1, 0xea, 0xf1, 0x5c } };
1441 1440
1442 // This is the policy OID contained in the certificates that testserver 1441 // This is the policy OID contained in the certificates that testserver
1443 // generates. 1442 // generates.
1444 static const char kOCSPTestCertPolicy[] = "1.3.6.1.4.1.11129.2.4.1"; 1443 static const char kOCSPTestCertPolicy[] = "1.3.6.1.4.1.11129.2.4.1";
1445 1444
1446 class HTTPSOCSPTest : public HTTPSRequestTest { 1445 class HTTPSOCSPTest : public HTTPSRequestTest {
1447 public: 1446 public:
1448 HTTPSOCSPTest() 1447 HTTPSOCSPTest()
1449 : context_(new TestURLRequestContext(true)), 1448 : context_(true),
1450 ev_test_policy_(EVRootCAMetadata::GetInstance(), 1449 ev_test_policy_(EVRootCAMetadata::GetInstance(),
1451 kOCSPTestCertFingerprint, 1450 kOCSPTestCertFingerprint,
1452 kOCSPTestCertPolicy) { 1451 kOCSPTestCertPolicy) {
1453 } 1452 }
1454 1453
1455 virtual void SetUp() OVERRIDE { 1454 virtual void SetUp() OVERRIDE {
1456 SetupContext(context_); 1455 SetupContext(&context_);
1457 context_->Init(); 1456 context_.Init();
1458 1457
1459 scoped_refptr<net::X509Certificate> root_cert = 1458 scoped_refptr<net::X509Certificate> root_cert =
1460 ImportCertFromFile(GetTestCertsDirectory(), "ocsp-test-root.pem"); 1459 ImportCertFromFile(GetTestCertsDirectory(), "ocsp-test-root.pem");
1461 CHECK_NE(static_cast<X509Certificate*>(NULL), root_cert); 1460 CHECK_NE(static_cast<X509Certificate*>(NULL), root_cert);
1462 test_root_.reset(new ScopedTestRoot(root_cert)); 1461 test_root_.reset(new ScopedTestRoot(root_cert));
1463 1462
1464 #if defined(USE_NSS) 1463 #if defined(USE_NSS)
1465 SetURLRequestContextForNSSHttpIO(context_.get()); 1464 SetURLRequestContextForNSSHttpIO(&context_);
1466 EnsureNSSHttpIOInit(); 1465 EnsureNSSHttpIOInit();
1467 #endif 1466 #endif
1468 } 1467 }
1469 1468
1470 void DoConnection(const TestServer::HTTPSOptions& https_options, 1469 void DoConnection(const TestServer::HTTPSOptions& https_options,
1471 CertStatus* out_cert_status) { 1470 CertStatus* out_cert_status) {
1472 TestServer test_server(https_options, 1471 TestServer test_server(https_options,
1473 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1472 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1474 ASSERT_TRUE(test_server.Start()); 1473 ASSERT_TRUE(test_server.Start());
1475 1474
1476 TestDelegate d; 1475 TestDelegate d;
1477 d.set_allow_certificate_errors(true); 1476 d.set_allow_certificate_errors(true);
1478 URLRequest r(test_server.GetURL(""), &d); 1477 URLRequest r(test_server.GetURL(""), &d);
1479 r.set_context(context_.get()); 1478 r.set_context(&context_);
1480 r.Start(); 1479 r.Start();
1481 1480
1482 MessageLoop::current()->Run(); 1481 MessageLoop::current()->Run();
1483 1482
1484 EXPECT_EQ(1, d.response_started_count()); 1483 EXPECT_EQ(1, d.response_started_count());
1485 *out_cert_status = r.ssl_info().cert_status; 1484 *out_cert_status = r.ssl_info().cert_status;
1486 } 1485 }
1487 1486
1488 ~HTTPSOCSPTest() { 1487 ~HTTPSOCSPTest() {
1489 #if defined(USE_NSS) 1488 #if defined(USE_NSS)
1490 ShutdownNSSHttpIO(); 1489 ShutdownNSSHttpIO();
1491 #endif 1490 #endif
1492 } 1491 }
1493 1492
1494 protected: 1493 protected:
1495 // SetupContext configures the URLRequestContext that will be used for making 1494 // SetupContext configures the URLRequestContext that will be used for making
1496 // connetions to testserver. This can be overridden in test subclasses for 1495 // connetions to testserver. This can be overridden in test subclasses for
1497 // different behaviour. 1496 // different behaviour.
1498 virtual void SetupContext(URLRequestContext* context) { 1497 virtual void SetupContext(URLRequestContext* context) {
1499 context->set_ssl_config_service( 1498 context->set_ssl_config_service(
1500 new TestSSLConfigService(true /* check for EV */, 1499 new TestSSLConfigService(true /* check for EV */,
1501 true /* online revocation checking */)); 1500 true /* online revocation checking */));
1502 } 1501 }
1503 1502
1504 scoped_ptr<ScopedTestRoot> test_root_; 1503 scoped_ptr<ScopedTestRoot> test_root_;
1505 scoped_refptr<TestURLRequestContext> context_; 1504 TestURLRequestContext context_;
1506 ScopedTestEVPolicy ev_test_policy_; 1505 ScopedTestEVPolicy ev_test_policy_;
1507 }; 1506 };
1508 1507
1509 static CertStatus ExpectedCertStatusForFailedOnlineRevocationCheck() { 1508 static CertStatus ExpectedCertStatusForFailedOnlineRevocationCheck() {
1510 #if defined(OS_WIN) 1509 #if defined(OS_WIN)
1511 // Windows can return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION but we don't 1510 // Windows can return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION but we don't
1512 // have that ability on other platforms. 1511 // have that ability on other platforms.
1513 return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION; 1512 return CERT_STATUS_UNABLE_TO_CHECK_REVOCATION;
1514 #else 1513 #else
1515 return 0; 1514 return 0;
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
1732 1731
1733 TEST_F(HTTPSRequestTest, SSLv3Fallback) { 1732 TEST_F(HTTPSRequestTest, SSLv3Fallback) {
1734 TestServer::HTTPSOptions https_options( 1733 TestServer::HTTPSOptions https_options(
1735 TestServer::HTTPSOptions::CERT_OK); 1734 TestServer::HTTPSOptions::CERT_OK);
1736 https_options.tls_intolerant = true; 1735 https_options.tls_intolerant = true;
1737 TestServer test_server(https_options, 1736 TestServer test_server(https_options,
1738 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1737 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1739 ASSERT_TRUE(test_server.Start()); 1738 ASSERT_TRUE(test_server.Start());
1740 1739
1741 TestDelegate d; 1740 TestDelegate d;
1742 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1741 TestURLRequestContext context(true);
1743 context->Init(); 1742 context.Init();
1744 d.set_allow_certificate_errors(true); 1743 d.set_allow_certificate_errors(true);
1745 URLRequest r(test_server.GetURL(""), &d); 1744 URLRequest r(test_server.GetURL(""), &d);
1746 r.set_context(context.get()); 1745 r.set_context(&context);
1747 r.Start(); 1746 r.Start();
1748 1747
1749 MessageLoop::current()->Run(); 1748 MessageLoop::current()->Run();
1750 1749
1751 EXPECT_EQ(1, d.response_started_count()); 1750 EXPECT_EQ(1, d.response_started_count());
1752 EXPECT_NE(0, d.bytes_received()); 1751 EXPECT_NE(0, d.bytes_received());
1753 EXPECT_TRUE(r.ssl_info().connection_status & SSL_CONNECTION_SSL3_FALLBACK); 1752 EXPECT_TRUE(r.ssl_info().connection_status & SSL_CONNECTION_SSL3_FALLBACK);
1754 } 1753 }
1755 1754
1756 // This tests that a load of www.google.com with a certificate error sets 1755 // This tests that a load of www.google.com with a certificate error sets
1757 // the |certificate_errors_are_fatal| flag correctly. This flag will cause 1756 // the |certificate_errors_are_fatal| flag correctly. This flag will cause
1758 // the interstitial to be fatal. 1757 // the interstitial to be fatal.
1759 TEST_F(HTTPSRequestTest, HTTPSPreloadedHSTSTest) { 1758 TEST_F(HTTPSRequestTest, HTTPSPreloadedHSTSTest) {
1760 TestServer::HTTPSOptions https_options( 1759 TestServer::HTTPSOptions https_options(
1761 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME); 1760 TestServer::HTTPSOptions::CERT_MISMATCHED_NAME);
1762 TestServer test_server(https_options, 1761 TestServer test_server(https_options,
1763 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1762 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1764 ASSERT_TRUE(test_server.Start()); 1763 ASSERT_TRUE(test_server.Start());
1765 1764
1766 // We require that the URL be www.google.com in order to pick up the 1765 // We require that the URL be www.google.com in order to pick up the
1767 // preloaded HSTS entries in the TransportSecurityState. This means that we 1766 // preloaded HSTS entries in the TransportSecurityState. This means that we
1768 // have to use a MockHostResolver in order to direct www.google.com to the 1767 // have to use a MockHostResolver in order to direct www.google.com to the
1769 // testserver. 1768 // testserver.
1770 1769
1771 MockHostResolver host_resolver; 1770 MockHostResolver host_resolver;
1772 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1"); 1771 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1");
1773 TestNetworkDelegate network_delegate; // must outlive URLRequest 1772 TestNetworkDelegate network_delegate; // must outlive URLRequest
1774 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1773 TestURLRequestContext context(true);
1775 context->set_network_delegate(&network_delegate); 1774 context.set_network_delegate(&network_delegate);
1776 context->set_host_resolver(&host_resolver); 1775 context.set_host_resolver(&host_resolver);
1777 TransportSecurityState transport_security_state; 1776 TransportSecurityState transport_security_state;
1778 context->set_transport_security_state(&transport_security_state); 1777 context.set_transport_security_state(&transport_security_state);
1779 context->Init(); 1778 context.Init();
1780 1779
1781 TestDelegate d; 1780 TestDelegate d;
1782 TestURLRequest r(GURL(StringPrintf("https://www.google.com:%d", 1781 TestURLRequest r(GURL(StringPrintf("https://www.google.com:%d",
1783 test_server.host_port_pair().port())), 1782 test_server.host_port_pair().port())),
1784 &d); 1783 &d);
1785 r.set_context(context); 1784 r.set_context(&context);
1786 1785
1787 r.Start(); 1786 r.Start();
1788 EXPECT_TRUE(r.is_pending()); 1787 EXPECT_TRUE(r.is_pending());
1789 1788
1790 MessageLoop::current()->Run(); 1789 MessageLoop::current()->Run();
1791 1790
1792 EXPECT_EQ(1, d.response_started_count()); 1791 EXPECT_EQ(1, d.response_started_count());
1793 EXPECT_FALSE(d.received_data_before_response()); 1792 EXPECT_FALSE(d.received_data_before_response());
1794 EXPECT_TRUE(d.have_certificate_errors()); 1793 EXPECT_TRUE(d.have_certificate_errors());
1795 EXPECT_TRUE(d.certificate_errors_are_fatal()); 1794 EXPECT_TRUE(d.certificate_errors_are_fatal());
(...skipping 11 matching lines...) Expand all
1807 ASSERT_TRUE(test_server.Start()); 1806 ASSERT_TRUE(test_server.Start());
1808 1807
1809 // We require that the URL be www.google.com in order to pick up the 1808 // We require that the URL be www.google.com in order to pick up the
1810 // preloaded and dynamic HSTS and public key pin entries in the 1809 // preloaded and dynamic HSTS and public key pin entries in the
1811 // TransportSecurityState. This means that we have to use a 1810 // TransportSecurityState. This means that we have to use a
1812 // MockHostResolver in order to direct www.google.com to the testserver. 1811 // MockHostResolver in order to direct www.google.com to the testserver.
1813 1812
1814 MockHostResolver host_resolver; 1813 MockHostResolver host_resolver;
1815 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1"); 1814 host_resolver.rules()->AddRule("www.google.com", "127.0.0.1");
1816 TestNetworkDelegate network_delegate; // must outlive URLRequest 1815 TestNetworkDelegate network_delegate; // must outlive URLRequest
1817 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 1816 TestURLRequestContext context(true);
1818 context->set_network_delegate(&network_delegate); 1817 context.set_network_delegate(&network_delegate);
1819 context->set_host_resolver(&host_resolver); 1818 context.set_host_resolver(&host_resolver);
1820 TransportSecurityState transport_security_state; 1819 TransportSecurityState transport_security_state;
1821 TransportSecurityState::DomainState domain_state; 1820 TransportSecurityState::DomainState domain_state;
1822 EXPECT_TRUE(transport_security_state.GetDomainState("www.google.com", true, 1821 EXPECT_TRUE(transport_security_state.GetDomainState("www.google.com", true,
1823 &domain_state)); 1822 &domain_state));
1824 context->set_transport_security_state(&transport_security_state); 1823 context.set_transport_security_state(&transport_security_state);
1825 context->Init(); 1824 context.Init();
1826 1825
1827 TestDelegate d; 1826 TestDelegate d;
1828 TestURLRequest r(GURL(StringPrintf("https://www.google.com:%d", 1827 TestURLRequest r(GURL(StringPrintf("https://www.google.com:%d",
1829 test_server.host_port_pair().port())), 1828 test_server.host_port_pair().port())),
1830 &d); 1829 &d);
1831 r.set_context(context); 1830 r.set_context(&context);
1832 1831
1833 r.Start(); 1832 r.Start();
1834 EXPECT_TRUE(r.is_pending()); 1833 EXPECT_TRUE(r.is_pending());
1835 1834
1836 MessageLoop::current()->Run(); 1835 MessageLoop::current()->Run();
1837 1836
1838 EXPECT_EQ(1, d.response_started_count()); 1837 EXPECT_EQ(1, d.response_started_count());
1839 EXPECT_FALSE(d.received_data_before_response()); 1838 EXPECT_FALSE(d.received_data_before_response());
1840 EXPECT_TRUE(d.have_certificate_errors()); 1839 EXPECT_TRUE(d.have_certificate_errors());
1841 EXPECT_TRUE(d.certificate_errors_are_fatal()); 1840 EXPECT_TRUE(d.certificate_errors_are_fatal());
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1884 TEST_F(HTTPSRequestTest, ClientAuthTest) { 1883 TEST_F(HTTPSRequestTest, ClientAuthTest) {
1885 TestServer::HTTPSOptions https_options; 1884 TestServer::HTTPSOptions https_options;
1886 https_options.request_client_certificate = true; 1885 https_options.request_client_certificate = true;
1887 TestServer test_server(https_options, 1886 TestServer test_server(https_options,
1888 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1887 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1889 ASSERT_TRUE(test_server.Start()); 1888 ASSERT_TRUE(test_server.Start());
1890 1889
1891 SSLClientAuthTestDelegate d; 1890 SSLClientAuthTestDelegate d;
1892 { 1891 {
1893 TestURLRequest r(test_server.GetURL(""), &d); 1892 TestURLRequest r(test_server.GetURL(""), &d);
1894 r.set_context(default_context_); 1893 r.set_context(&default_context_);
1895 1894
1896 r.Start(); 1895 r.Start();
1897 EXPECT_TRUE(r.is_pending()); 1896 EXPECT_TRUE(r.is_pending());
1898 1897
1899 MessageLoop::current()->Run(); 1898 MessageLoop::current()->Run();
1900 1899
1901 EXPECT_EQ(1, d.on_certificate_requested_count()); 1900 EXPECT_EQ(1, d.on_certificate_requested_count());
1902 EXPECT_FALSE(d.received_data_before_response()); 1901 EXPECT_FALSE(d.received_data_before_response());
1903 EXPECT_EQ(0, d.bytes_received()); 1902 EXPECT_EQ(0, d.bytes_received());
1904 1903
(...skipping 17 matching lines...) Expand all
1922 https_options.record_resume = true; 1921 https_options.record_resume = true;
1923 TestServer test_server(https_options, 1922 TestServer test_server(https_options,
1924 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1923 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1925 ASSERT_TRUE(test_server.Start()); 1924 ASSERT_TRUE(test_server.Start());
1926 1925
1927 SSLClientSocket::ClearSessionCache(); 1926 SSLClientSocket::ClearSessionCache();
1928 1927
1929 { 1928 {
1930 TestDelegate d; 1929 TestDelegate d;
1931 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d); 1930 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d);
1932 r.set_context(default_context_); 1931 r.set_context(&default_context_);
1933 1932
1934 r.Start(); 1933 r.Start();
1935 EXPECT_TRUE(r.is_pending()); 1934 EXPECT_TRUE(r.is_pending());
1936 1935
1937 MessageLoop::current()->Run(); 1936 MessageLoop::current()->Run();
1938 1937
1939 EXPECT_EQ(1, d.response_started_count()); 1938 EXPECT_EQ(1, d.response_started_count());
1940 } 1939 }
1941 1940
1942 reinterpret_cast<HttpCache*>(default_context_->http_transaction_factory())-> 1941 reinterpret_cast<HttpCache*>(default_context_.http_transaction_factory())->
1943 CloseAllConnections(); 1942 CloseAllConnections();
1944 1943
1945 { 1944 {
1946 TestDelegate d; 1945 TestDelegate d;
1947 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d); 1946 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d);
1948 r.set_context(default_context_); 1947 r.set_context(&default_context_);
1949 1948
1950 r.Start(); 1949 r.Start();
1951 EXPECT_TRUE(r.is_pending()); 1950 EXPECT_TRUE(r.is_pending());
1952 1951
1953 MessageLoop::current()->Run(); 1952 MessageLoop::current()->Run();
1954 1953
1955 // The response will look like; 1954 // The response will look like;
1956 // insert abc 1955 // insert abc
1957 // lookup abc 1956 // lookup abc
1958 // insert xyz 1957 // insert xyz
(...skipping 30 matching lines...) Expand all
1989 https_options.record_resume = true; 1988 https_options.record_resume = true;
1990 TestServer test_server(https_options, 1989 TestServer test_server(https_options,
1991 FilePath(FILE_PATH_LITERAL("net/data/ssl"))); 1990 FilePath(FILE_PATH_LITERAL("net/data/ssl")));
1992 ASSERT_TRUE(test_server.Start()); 1991 ASSERT_TRUE(test_server.Start());
1993 1992
1994 SSLClientSocket::ClearSessionCache(); 1993 SSLClientSocket::ClearSessionCache();
1995 1994
1996 { 1995 {
1997 TestDelegate d; 1996 TestDelegate d;
1998 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d); 1997 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d);
1999 r.set_context(default_context_); 1998 r.set_context(&default_context_);
2000 1999
2001 r.Start(); 2000 r.Start();
2002 EXPECT_TRUE(r.is_pending()); 2001 EXPECT_TRUE(r.is_pending());
2003 2002
2004 MessageLoop::current()->Run(); 2003 MessageLoop::current()->Run();
2005 2004
2006 EXPECT_EQ(1, d.response_started_count()); 2005 EXPECT_EQ(1, d.response_started_count());
2007 } 2006 }
2008 2007
2009 // Now create a new HttpCache with a different ssl_session_cache_shard value. 2008 // Now create a new HttpCache with a different ssl_session_cache_shard value.
2010 HttpNetworkSession::Params params; 2009 HttpNetworkSession::Params params;
2011 params.host_resolver = default_context_->host_resolver(); 2010 params.host_resolver = default_context_.host_resolver();
2012 params.cert_verifier = default_context_->cert_verifier(); 2011 params.cert_verifier = default_context_.cert_verifier();
2013 params.proxy_service = default_context_->proxy_service(); 2012 params.proxy_service = default_context_.proxy_service();
2014 params.ssl_config_service = default_context_->ssl_config_service(); 2013 params.ssl_config_service = default_context_.ssl_config_service();
2015 params.http_auth_handler_factory = 2014 params.http_auth_handler_factory =
2016 default_context_->http_auth_handler_factory(); 2015 default_context_.http_auth_handler_factory();
2017 params.network_delegate = default_context_->network_delegate(); 2016 params.network_delegate = default_context_.network_delegate();
2018 params.http_server_properties = default_context_->http_server_properties(); 2017 params.http_server_properties = default_context_.http_server_properties();
2019 params.ssl_session_cache_shard = "alternate"; 2018 params.ssl_session_cache_shard = "alternate";
2020 2019
2021 scoped_ptr<net::HttpCache> cache(new net::HttpCache( 2020 scoped_ptr<net::HttpCache> cache(new net::HttpCache(
2022 new net::HttpNetworkSession(params), 2021 new net::HttpNetworkSession(params),
2023 net::HttpCache::DefaultBackend::InMemory(0))); 2022 net::HttpCache::DefaultBackend::InMemory(0)));
2024 2023
2025 default_context_->set_http_transaction_factory(cache.get()); 2024 default_context_.set_http_transaction_factory(cache.get());
2026 2025
2027 { 2026 {
2028 TestDelegate d; 2027 TestDelegate d;
2029 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d); 2028 TestURLRequest r(test_server.GetURL("ssl-session-cache"), &d);
2030 r.set_context(default_context_); 2029 r.set_context(&default_context_);
2031 2030
2032 r.Start(); 2031 r.Start();
2033 EXPECT_TRUE(r.is_pending()); 2032 EXPECT_TRUE(r.is_pending());
2034 2033
2035 MessageLoop::current()->Run(); 2034 MessageLoop::current()->Run();
2036 2035
2037 // The response will look like; 2036 // The response will look like;
2038 // insert abc 2037 // insert abc
2039 // insert xyz 2038 // insert xyz
2040 // 2039 //
(...skipping 17 matching lines...) Expand all
2058 EXPECT_NE(session_id, parts[1]); 2057 EXPECT_NE(session_id, parts[1]);
2059 } 2058 }
2060 } 2059 }
2061 } 2060 }
2062 } 2061 }
2063 2062
2064 TEST_F(URLRequestTestHTTP, CancelTest) { 2063 TEST_F(URLRequestTestHTTP, CancelTest) {
2065 TestDelegate d; 2064 TestDelegate d;
2066 { 2065 {
2067 TestURLRequest r(GURL("http://www.google.com/"), &d); 2066 TestURLRequest r(GURL("http://www.google.com/"), &d);
2068 r.set_context(default_context_); 2067 r.set_context(&default_context_);
2069 2068
2070 r.Start(); 2069 r.Start();
2071 EXPECT_TRUE(r.is_pending()); 2070 EXPECT_TRUE(r.is_pending());
2072 2071
2073 r.Cancel(); 2072 r.Cancel();
2074 2073
2075 MessageLoop::current()->Run(); 2074 MessageLoop::current()->Run();
2076 2075
2077 // We expect to receive OnResponseStarted even though the request has been 2076 // We expect to receive OnResponseStarted even though the request has been
2078 // cancelled. 2077 // cancelled.
2079 EXPECT_EQ(1, d.response_started_count()); 2078 EXPECT_EQ(1, d.response_started_count());
2080 EXPECT_EQ(0, d.bytes_received()); 2079 EXPECT_EQ(0, d.bytes_received());
2081 EXPECT_FALSE(d.received_data_before_response()); 2080 EXPECT_FALSE(d.received_data_before_response());
2082 } 2081 }
2083 } 2082 }
2084 2083
2085 TEST_F(URLRequestTestHTTP, CancelTest2) { 2084 TEST_F(URLRequestTestHTTP, CancelTest2) {
2086 ASSERT_TRUE(test_server_.Start()); 2085 ASSERT_TRUE(test_server_.Start());
2087 2086
2088 TestDelegate d; 2087 TestDelegate d;
2089 { 2088 {
2090 TestURLRequest r(test_server_.GetURL(""), &d); 2089 TestURLRequest r(test_server_.GetURL(""), &d);
2091 r.set_context(default_context_); 2090 r.set_context(&default_context_);
2092 2091
2093 d.set_cancel_in_response_started(true); 2092 d.set_cancel_in_response_started(true);
2094 2093
2095 r.Start(); 2094 r.Start();
2096 EXPECT_TRUE(r.is_pending()); 2095 EXPECT_TRUE(r.is_pending());
2097 2096
2098 MessageLoop::current()->Run(); 2097 MessageLoop::current()->Run();
2099 2098
2100 EXPECT_EQ(1, d.response_started_count()); 2099 EXPECT_EQ(1, d.response_started_count());
2101 EXPECT_EQ(0, d.bytes_received()); 2100 EXPECT_EQ(0, d.bytes_received());
2102 EXPECT_FALSE(d.received_data_before_response()); 2101 EXPECT_FALSE(d.received_data_before_response());
2103 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 2102 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
2104 } 2103 }
2105 } 2104 }
2106 2105
2107 TEST_F(URLRequestTestHTTP, CancelTest3) { 2106 TEST_F(URLRequestTestHTTP, CancelTest3) {
2108 ASSERT_TRUE(test_server_.Start()); 2107 ASSERT_TRUE(test_server_.Start());
2109 2108
2110 TestDelegate d; 2109 TestDelegate d;
2111 { 2110 {
2112 TestURLRequest r(test_server_.GetURL(""), &d); 2111 TestURLRequest r(test_server_.GetURL(""), &d);
2113 r.set_context(default_context_); 2112 r.set_context(&default_context_);
2114 2113
2115 d.set_cancel_in_received_data(true); 2114 d.set_cancel_in_received_data(true);
2116 2115
2117 r.Start(); 2116 r.Start();
2118 EXPECT_TRUE(r.is_pending()); 2117 EXPECT_TRUE(r.is_pending());
2119 2118
2120 MessageLoop::current()->Run(); 2119 MessageLoop::current()->Run();
2121 2120
2122 EXPECT_EQ(1, d.response_started_count()); 2121 EXPECT_EQ(1, d.response_started_count());
2123 // There is no guarantee about how much data was received 2122 // There is no guarantee about how much data was received
2124 // before the cancel was issued. It could have been 0 bytes, 2123 // before the cancel was issued. It could have been 0 bytes,
2125 // or it could have been all the bytes. 2124 // or it could have been all the bytes.
2126 // EXPECT_EQ(0, d.bytes_received()); 2125 // EXPECT_EQ(0, d.bytes_received());
2127 EXPECT_FALSE(d.received_data_before_response()); 2126 EXPECT_FALSE(d.received_data_before_response());
2128 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 2127 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
2129 } 2128 }
2130 } 2129 }
2131 2130
2132 TEST_F(URLRequestTestHTTP, CancelTest4) { 2131 TEST_F(URLRequestTestHTTP, CancelTest4) {
2133 ASSERT_TRUE(test_server_.Start()); 2132 ASSERT_TRUE(test_server_.Start());
2134 2133
2135 TestDelegate d; 2134 TestDelegate d;
2136 { 2135 {
2137 TestURLRequest r(test_server_.GetURL(""), &d); 2136 TestURLRequest r(test_server_.GetURL(""), &d);
2138 r.set_context(default_context_); 2137 r.set_context(&default_context_);
2139 2138
2140 r.Start(); 2139 r.Start();
2141 EXPECT_TRUE(r.is_pending()); 2140 EXPECT_TRUE(r.is_pending());
2142 2141
2143 // The request will be implicitly canceled when it is destroyed. The 2142 // The request will be implicitly canceled when it is destroyed. The
2144 // test delegate must not post a quit message when this happens because 2143 // test delegate must not post a quit message when this happens because
2145 // this test doesn't actually have a message loop. The quit message would 2144 // this test doesn't actually have a message loop. The quit message would
2146 // get put on this thread's message queue and the next test would exit 2145 // get put on this thread's message queue and the next test would exit
2147 // early, causing problems. 2146 // early, causing problems.
2148 d.set_quit_on_complete(false); 2147 d.set_quit_on_complete(false);
2149 } 2148 }
2150 // expect things to just cleanup properly. 2149 // expect things to just cleanup properly.
2151 2150
2152 // we won't actually get a received reponse here because we've never run the 2151 // we won't actually get a received reponse here because we've never run the
2153 // message loop 2152 // message loop
2154 EXPECT_FALSE(d.received_data_before_response()); 2153 EXPECT_FALSE(d.received_data_before_response());
2155 EXPECT_EQ(0, d.bytes_received()); 2154 EXPECT_EQ(0, d.bytes_received());
2156 } 2155 }
2157 2156
2158 TEST_F(URLRequestTestHTTP, CancelTest5) { 2157 TEST_F(URLRequestTestHTTP, CancelTest5) {
2159 ASSERT_TRUE(test_server_.Start()); 2158 ASSERT_TRUE(test_server_.Start());
2160 2159
2161 // populate cache 2160 // populate cache
2162 { 2161 {
2163 TestDelegate d; 2162 TestDelegate d;
2164 URLRequest r(test_server_.GetURL("cachetime"), &d); 2163 URLRequest r(test_server_.GetURL("cachetime"), &d);
2165 r.set_context(default_context_); 2164 r.set_context(&default_context_);
2166 r.Start(); 2165 r.Start();
2167 MessageLoop::current()->Run(); 2166 MessageLoop::current()->Run();
2168 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status()); 2167 EXPECT_EQ(URLRequestStatus::SUCCESS, r.status().status());
2169 } 2168 }
2170 2169
2171 // cancel read from cache (see bug 990242) 2170 // cancel read from cache (see bug 990242)
2172 { 2171 {
2173 TestDelegate d; 2172 TestDelegate d;
2174 URLRequest r(test_server_.GetURL("cachetime"), &d); 2173 URLRequest r(test_server_.GetURL("cachetime"), &d);
2175 r.set_context(default_context_); 2174 r.set_context(&default_context_);
2176 r.Start(); 2175 r.Start();
2177 r.Cancel(); 2176 r.Cancel();
2178 MessageLoop::current()->Run(); 2177 MessageLoop::current()->Run();
2179 2178
2180 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status()); 2179 EXPECT_EQ(URLRequestStatus::CANCELED, r.status().status());
2181 EXPECT_EQ(1, d.response_started_count()); 2180 EXPECT_EQ(1, d.response_started_count());
2182 EXPECT_EQ(0, d.bytes_received()); 2181 EXPECT_EQ(0, d.bytes_received());
2183 EXPECT_FALSE(d.received_data_before_response()); 2182 EXPECT_FALSE(d.received_data_before_response());
2184 } 2183 }
2185 } 2184 }
2186 2185
2187 TEST_F(URLRequestTestHTTP, PostTest) { 2186 TEST_F(URLRequestTestHTTP, PostTest) {
2188 ASSERT_TRUE(test_server_.Start()); 2187 ASSERT_TRUE(test_server_.Start());
2189 HTTPUploadDataOperationTest("POST"); 2188 HTTPUploadDataOperationTest("POST");
2190 } 2189 }
2191 2190
2192 TEST_F(URLRequestTestHTTP, PutTest) { 2191 TEST_F(URLRequestTestHTTP, PutTest) {
2193 ASSERT_TRUE(test_server_.Start()); 2192 ASSERT_TRUE(test_server_.Start());
2194 HTTPUploadDataOperationTest("PUT"); 2193 HTTPUploadDataOperationTest("PUT");
2195 } 2194 }
2196 2195
2197 TEST_F(URLRequestTestHTTP, PostEmptyTest) { 2196 TEST_F(URLRequestTestHTTP, PostEmptyTest) {
2198 ASSERT_TRUE(test_server_.Start()); 2197 ASSERT_TRUE(test_server_.Start());
2199 2198
2200 TestDelegate d; 2199 TestDelegate d;
2201 { 2200 {
2202 TestURLRequest r(test_server_.GetURL("echo"), &d); 2201 TestURLRequest r(test_server_.GetURL("echo"), &d);
2203 r.set_context(default_context_); 2202 r.set_context(&default_context_);
2204 r.set_method("POST"); 2203 r.set_method("POST");
2205 2204
2206 r.Start(); 2205 r.Start();
2207 EXPECT_TRUE(r.is_pending()); 2206 EXPECT_TRUE(r.is_pending());
2208 2207
2209 MessageLoop::current()->Run(); 2208 MessageLoop::current()->Run();
2210 2209
2211 ASSERT_EQ(1, d.response_started_count()) << "request failed: " << 2210 ASSERT_EQ(1, d.response_started_count()) << "request failed: " <<
2212 (int) r.status().status() << ", error: " << r.status().error(); 2211 (int) r.status().status() << ", error: " << r.status().error();
2213 2212
2214 EXPECT_FALSE(d.received_data_before_response()); 2213 EXPECT_FALSE(d.received_data_before_response());
2215 EXPECT_TRUE(d.data_received().empty()); 2214 EXPECT_TRUE(d.data_received().empty());
2216 } 2215 }
2217 } 2216 }
2218 2217
2219 TEST_F(URLRequestTestHTTP, PostFileTest) { 2218 TEST_F(URLRequestTestHTTP, PostFileTest) {
2220 ASSERT_TRUE(test_server_.Start()); 2219 ASSERT_TRUE(test_server_.Start());
2221 2220
2222 TestDelegate d; 2221 TestDelegate d;
2223 { 2222 {
2224 TestURLRequest r(test_server_.GetURL("echo"), &d); 2223 TestURLRequest r(test_server_.GetURL("echo"), &d);
2225 r.set_context(default_context_); 2224 r.set_context(&default_context_);
2226 r.set_method("POST"); 2225 r.set_method("POST");
2227 2226
2228 FilePath dir; 2227 FilePath dir;
2229 PathService::Get(base::DIR_EXE, &dir); 2228 PathService::Get(base::DIR_EXE, &dir);
2230 file_util::SetCurrentDirectory(dir); 2229 file_util::SetCurrentDirectory(dir);
2231 2230
2232 scoped_refptr<UploadData> upload_data(new UploadData); 2231 scoped_refptr<UploadData> upload_data(new UploadData);
2233 2232
2234 FilePath path; 2233 FilePath path;
2235 PathService::Get(base::DIR_SOURCE_ROOT, &path); 2234 PathService::Get(base::DIR_SOURCE_ROOT, &path);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
2269 EXPECT_EQ(0, memcmp(d.data_received().c_str(), buf.get(), size)); 2268 EXPECT_EQ(0, memcmp(d.data_received().c_str(), buf.get(), size));
2270 } 2269 }
2271 } 2270 }
2272 2271
2273 TEST_F(URLRequestTestHTTP, TestPostChunkedDataBeforeStart) { 2272 TEST_F(URLRequestTestHTTP, TestPostChunkedDataBeforeStart) {
2274 ASSERT_TRUE(test_server_.Start()); 2273 ASSERT_TRUE(test_server_.Start());
2275 2274
2276 TestDelegate d; 2275 TestDelegate d;
2277 { 2276 {
2278 TestURLRequest r(test_server_.GetURL("echo"), &d); 2277 TestURLRequest r(test_server_.GetURL("echo"), &d);
2279 r.set_context(default_context_); 2278 r.set_context(&default_context_);
2280 r.EnableChunkedUpload(); 2279 r.EnableChunkedUpload();
2281 r.set_method("POST"); 2280 r.set_method("POST");
2282 AddChunksToUpload(&r); 2281 AddChunksToUpload(&r);
2283 r.Start(); 2282 r.Start();
2284 EXPECT_TRUE(r.is_pending()); 2283 EXPECT_TRUE(r.is_pending());
2285 2284
2286 MessageLoop::current()->Run(); 2285 MessageLoop::current()->Run();
2287 2286
2288 VerifyReceivedDataMatchesChunks(&r, &d); 2287 VerifyReceivedDataMatchesChunks(&r, &d);
2289 } 2288 }
2290 } 2289 }
2291 2290
2292 TEST_F(URLRequestTestHTTP, TestPostChunkedDataAfterStart) { 2291 TEST_F(URLRequestTestHTTP, TestPostChunkedDataAfterStart) {
2293 ASSERT_TRUE(test_server_.Start()); 2292 ASSERT_TRUE(test_server_.Start());
2294 2293
2295 TestDelegate d; 2294 TestDelegate d;
2296 { 2295 {
2297 TestURLRequest r(test_server_.GetURL("echo"), &d); 2296 TestURLRequest r(test_server_.GetURL("echo"), &d);
2298 r.set_context(default_context_); 2297 r.set_context(&default_context_);
2299 r.EnableChunkedUpload(); 2298 r.EnableChunkedUpload();
2300 r.set_method("POST"); 2299 r.set_method("POST");
2301 r.Start(); 2300 r.Start();
2302 EXPECT_TRUE(r.is_pending()); 2301 EXPECT_TRUE(r.is_pending());
2303 2302
2304 MessageLoop::current()->RunAllPending(); 2303 MessageLoop::current()->RunAllPending();
2305 AddChunksToUpload(&r); 2304 AddChunksToUpload(&r);
2306 MessageLoop::current()->Run(); 2305 MessageLoop::current()->Run();
2307 2306
2308 VerifyReceivedDataMatchesChunks(&r, &d); 2307 VerifyReceivedDataMatchesChunks(&r, &d);
2309 } 2308 }
2310 } 2309 }
2311 2310
2312 TEST_F(URLRequestTest, AboutBlankTest) { 2311 TEST_F(URLRequestTest, AboutBlankTest) {
2313 TestDelegate d; 2312 TestDelegate d;
2314 { 2313 {
2315 TestURLRequest r(GURL("about:blank"), &d); 2314 TestURLRequest r(GURL("about:blank"), &d);
2316 r.set_context(default_context_); 2315 r.set_context(&default_context_);
2317 2316
2318 r.Start(); 2317 r.Start();
2319 EXPECT_TRUE(r.is_pending()); 2318 EXPECT_TRUE(r.is_pending());
2320 2319
2321 MessageLoop::current()->Run(); 2320 MessageLoop::current()->Run();
2322 2321
2323 EXPECT_TRUE(!r.is_pending()); 2322 EXPECT_TRUE(!r.is_pending());
2324 EXPECT_FALSE(d.received_data_before_response()); 2323 EXPECT_FALSE(d.received_data_before_response());
2325 EXPECT_EQ(d.bytes_received(), 0); 2324 EXPECT_EQ(d.bytes_received(), 0);
2326 EXPECT_EQ("", r.GetSocketAddress().host()); 2325 EXPECT_EQ("", r.GetSocketAddress().host());
(...skipping 19 matching lines...) Expand all
2346 "xXX1T5xsV9tm9r4TQwHLiZw/pdDZJea8TKmsmR/K0uLh/GwnCHghTja6lPhphezPfO5/5" 2345 "xXX1T5xsV9tm9r4TQwHLiZw/pdDZJea8TKmsmR/K0uLh/GwnCHghTja6lPhphezPfO5/5"
2347 "MrVvMzNaI3+ERHfrFzPKQukrQGI4d/3EFD/3E2mVNYvi4at7CXWREaxZGD+3hg28zD3gV" 2346 "MrVvMzNaI3+ERHfrFzPKQukrQGI4d/3EFD/3E2mVNYvi4at7CXWREaxZGD+3hg28zD3gV"
2348 "Md6q5c8GdosynKmSeRuGzpjyl1/9UDGtPR5HeaKT8Wjo17WXk579BXVUhN64ehF9fhRtq" 2347 "Md6q5c8GdosynKmSeRuGzpjyl1/9UDGtPR5HeaKT8Wjo17WXk579BXVUhN64ehF9fhRtq"
2349 "/uxxZKzNiZFGD0wRC3NFROZ5mwIPL/96K/rKMMLrIzF9uhHr+/sYH7DAbwlgC4J+R2Z7F" 2348 "/uxxZKzNiZFGD0wRC3NFROZ5mwIPL/96K/rKMMLrIzF9uhHr+/sYH7DAbwlgC4J+R2Z7F"
2350 "Ux1qLnV7MGF40smVSoJ/jvHRfYhQeUJd/SnYtGWhPHR0Sz+GE2F2yth0B36Vcz2KpnufB" 2349 "Ux1qLnV7MGF40smVSoJ/jvHRfYhQeUJd/SnYtGWhPHR0Sz+GE2F2yth0B36Vcz2KpnufB"
2351 "JbsysjjW4kblBUiIjiURUWqJY65zxbnTy57GQyH58zgy0QBtTQv5gH15XMdKkYu+TGaJM" 2350 "JbsysjjW4kblBUiIjiURUWqJY65zxbnTy57GQyH58zgy0QBtTQv5gH15XMdKkYu+TGaJM"
2352 "nlm2O34uI4b9tflqp1+QEFGzoW/ulmcofcpkZCYJhDfSpme7QcrHa+Xfji8paEQkTkSfm" 2351 "nlm2O34uI4b9tflqp1+QEFGzoW/ulmcofcpkZCYJhDfSpme7QcrHa+Xfji8paEQkTkSfm"
2353 "moRWRNZr/F1KfVMjW+IKEnv2FwZfKdzt0BQR6lClcZR0EfEXEfv/G6W9iLiIyCoReV5En" 2352 "moRWRNZr/F1KfVMjW+IKEnv2FwZfKdzt0BQR6lClcZR0EfEXEfv/G6W9iLiIyCoReV5En"
2354 "hORIBHx+ufPj/gLB/zGI/G4Bk0AAAAASUVORK5CYII="), 2353 "hORIBHx+ufPj/gLB/zGI/G4Bk0AAAAASUVORK5CYII="),
2355 &d); 2354 &d);
2356 r.set_context(default_context_); 2355 r.set_context(&default_context_);
2357 2356
2358 r.Start(); 2357 r.Start();
2359 EXPECT_TRUE(r.is_pending()); 2358 EXPECT_TRUE(r.is_pending());
2360 2359
2361 MessageLoop::current()->Run(); 2360 MessageLoop::current()->Run();
2362 2361
2363 EXPECT_TRUE(!r.is_pending()); 2362 EXPECT_TRUE(!r.is_pending());
2364 EXPECT_FALSE(d.received_data_before_response()); 2363 EXPECT_FALSE(d.received_data_before_response());
2365 EXPECT_EQ(d.bytes_received(), 911); 2364 EXPECT_EQ(d.bytes_received(), 911);
2366 EXPECT_EQ("", r.GetSocketAddress().host()); 2365 EXPECT_EQ("", r.GetSocketAddress().host());
2367 EXPECT_EQ(0, r.GetSocketAddress().port()); 2366 EXPECT_EQ(0, r.GetSocketAddress().port());
2368 } 2367 }
2369 } 2368 }
2370 2369
2371 TEST_F(URLRequestTest, FileTest) { 2370 TEST_F(URLRequestTest, FileTest) {
2372 FilePath app_path; 2371 FilePath app_path;
2373 PathService::Get(base::FILE_EXE, &app_path); 2372 PathService::Get(base::FILE_EXE, &app_path);
2374 GURL app_url = FilePathToFileURL(app_path); 2373 GURL app_url = FilePathToFileURL(app_path);
2375 2374
2376 TestDelegate d; 2375 TestDelegate d;
2377 { 2376 {
2378 TestURLRequest r(app_url, &d); 2377 TestURLRequest r(app_url, &d);
2379 r.set_context(default_context_); 2378 r.set_context(&default_context_);
2380 2379
2381 r.Start(); 2380 r.Start();
2382 EXPECT_TRUE(r.is_pending()); 2381 EXPECT_TRUE(r.is_pending());
2383 2382
2384 MessageLoop::current()->Run(); 2383 MessageLoop::current()->Run();
2385 2384
2386 int64 file_size = -1; 2385 int64 file_size = -1;
2387 EXPECT_TRUE(file_util::GetFileSize(app_path, &file_size)); 2386 EXPECT_TRUE(file_util::GetFileSize(app_path, &file_size));
2388 2387
2389 EXPECT_TRUE(!r.is_pending()); 2388 EXPECT_TRUE(!r.is_pending());
(...skipping 20 matching lines...) Expand all
2410 2409
2411 const size_t first_byte_position = 500; 2410 const size_t first_byte_position = 500;
2412 const size_t last_byte_position = buffer_size - first_byte_position; 2411 const size_t last_byte_position = buffer_size - first_byte_position;
2413 const size_t content_length = last_byte_position - first_byte_position + 1; 2412 const size_t content_length = last_byte_position - first_byte_position + 1;
2414 std::string partial_buffer_string(buffer.get() + first_byte_position, 2413 std::string partial_buffer_string(buffer.get() + first_byte_position,
2415 buffer.get() + last_byte_position + 1); 2414 buffer.get() + last_byte_position + 1);
2416 2415
2417 TestDelegate d; 2416 TestDelegate d;
2418 { 2417 {
2419 TestURLRequest r(temp_url, &d); 2418 TestURLRequest r(temp_url, &d);
2420 r.set_context(default_context_); 2419 r.set_context(&default_context_);
2421 2420
2422 HttpRequestHeaders headers; 2421 HttpRequestHeaders headers;
2423 headers.SetHeader(HttpRequestHeaders::kRange, 2422 headers.SetHeader(HttpRequestHeaders::kRange,
2424 base::StringPrintf( 2423 base::StringPrintf(
2425 "bytes=%" PRIuS "-%" PRIuS, 2424 "bytes=%" PRIuS "-%" PRIuS,
2426 first_byte_position, last_byte_position)); 2425 first_byte_position, last_byte_position));
2427 r.SetExtraRequestHeaders(headers); 2426 r.SetExtraRequestHeaders(headers);
2428 r.Start(); 2427 r.Start();
2429 EXPECT_TRUE(r.is_pending()); 2428 EXPECT_TRUE(r.is_pending());
2430 2429
(...skipping 24 matching lines...) Expand all
2455 2454
2456 const size_t first_byte_position = 500; 2455 const size_t first_byte_position = 500;
2457 const size_t last_byte_position = buffer_size - 1; 2456 const size_t last_byte_position = buffer_size - 1;
2458 const size_t content_length = last_byte_position - first_byte_position + 1; 2457 const size_t content_length = last_byte_position - first_byte_position + 1;
2459 std::string partial_buffer_string(buffer.get() + first_byte_position, 2458 std::string partial_buffer_string(buffer.get() + first_byte_position,
2460 buffer.get() + last_byte_position + 1); 2459 buffer.get() + last_byte_position + 1);
2461 2460
2462 TestDelegate d; 2461 TestDelegate d;
2463 { 2462 {
2464 TestURLRequest r(temp_url, &d); 2463 TestURLRequest r(temp_url, &d);
2465 r.set_context(default_context_); 2464 r.set_context(&default_context_);
2466 2465
2467 HttpRequestHeaders headers; 2466 HttpRequestHeaders headers;
2468 headers.SetHeader(HttpRequestHeaders::kRange, 2467 headers.SetHeader(HttpRequestHeaders::kRange,
2469 base::StringPrintf("bytes=%" PRIuS "-", 2468 base::StringPrintf("bytes=%" PRIuS "-",
2470 first_byte_position)); 2469 first_byte_position));
2471 r.SetExtraRequestHeaders(headers); 2470 r.SetExtraRequestHeaders(headers);
2472 r.Start(); 2471 r.Start();
2473 EXPECT_TRUE(r.is_pending()); 2472 EXPECT_TRUE(r.is_pending());
2474 2473
2475 MessageLoop::current()->Run(); 2474 MessageLoop::current()->Run();
(...skipping 17 matching lines...) Expand all
2493 EXPECT_TRUE(file_util::CreateTemporaryFile(&temp_path)); 2492 EXPECT_TRUE(file_util::CreateTemporaryFile(&temp_path));
2494 GURL temp_url = FilePathToFileURL(temp_path); 2493 GURL temp_url = FilePathToFileURL(temp_path);
2495 EXPECT_TRUE(file_util::WriteFile(temp_path, buffer.get(), buffer_size)); 2494 EXPECT_TRUE(file_util::WriteFile(temp_path, buffer.get(), buffer_size));
2496 2495
2497 int64 file_size; 2496 int64 file_size;
2498 EXPECT_TRUE(file_util::GetFileSize(temp_path, &file_size)); 2497 EXPECT_TRUE(file_util::GetFileSize(temp_path, &file_size));
2499 2498
2500 TestDelegate d; 2499 TestDelegate d;
2501 { 2500 {
2502 TestURLRequest r(temp_url, &d); 2501 TestURLRequest r(temp_url, &d);
2503 r.set_context(default_context_); 2502 r.set_context(&default_context_);
2504 2503
2505 HttpRequestHeaders headers; 2504 HttpRequestHeaders headers;
2506 headers.SetHeader(HttpRequestHeaders::kRange, 2505 headers.SetHeader(HttpRequestHeaders::kRange,
2507 "bytes=0-0,10-200,200-300"); 2506 "bytes=0-0,10-200,200-300");
2508 r.SetExtraRequestHeaders(headers); 2507 r.SetExtraRequestHeaders(headers);
2509 r.Start(); 2508 r.Start();
2510 EXPECT_TRUE(r.is_pending()); 2509 EXPECT_TRUE(r.is_pending());
2511 2510
2512 MessageLoop::current()->Run(); 2511 MessageLoop::current()->Run();
2513 EXPECT_TRUE(d.request_failed()); 2512 EXPECT_TRUE(d.request_failed());
2514 } 2513 }
2515 2514
2516 EXPECT_TRUE(file_util::Delete(temp_path, false)); 2515 EXPECT_TRUE(file_util::Delete(temp_path, false));
2517 } 2516 }
2518 2517
2519 TEST_F(URLRequestTest, InvalidUrlTest) { 2518 TEST_F(URLRequestTest, InvalidUrlTest) {
2520 TestDelegate d; 2519 TestDelegate d;
2521 { 2520 {
2522 TestURLRequest r(GURL("invalid url"), &d); 2521 TestURLRequest r(GURL("invalid url"), &d);
2523 r.set_context(default_context_); 2522 r.set_context(&default_context_);
2524 2523
2525 r.Start(); 2524 r.Start();
2526 EXPECT_TRUE(r.is_pending()); 2525 EXPECT_TRUE(r.is_pending());
2527 2526
2528 MessageLoop::current()->Run(); 2527 MessageLoop::current()->Run();
2529 EXPECT_TRUE(d.request_failed()); 2528 EXPECT_TRUE(d.request_failed());
2530 } 2529 }
2531 } 2530 }
2532 2531
2533 TEST_F(URLRequestTestHTTP, ResponseHeadersTest) { 2532 TEST_F(URLRequestTestHTTP, ResponseHeadersTest) {
2534 ASSERT_TRUE(test_server_.Start()); 2533 ASSERT_TRUE(test_server_.Start());
2535 2534
2536 TestDelegate d; 2535 TestDelegate d;
2537 TestURLRequest req(test_server_.GetURL("files/with-headers.html"), &d); 2536 TestURLRequest req(test_server_.GetURL("files/with-headers.html"), &d);
2538 req.set_context(default_context_); 2537 req.set_context(&default_context_);
2539 req.Start(); 2538 req.Start();
2540 MessageLoop::current()->Run(); 2539 MessageLoop::current()->Run();
2541 2540
2542 const HttpResponseHeaders* headers = req.response_headers(); 2541 const HttpResponseHeaders* headers = req.response_headers();
2543 2542
2544 // Simple sanity check that response_info() accesses the same data. 2543 // Simple sanity check that response_info() accesses the same data.
2545 EXPECT_EQ(headers, req.response_info().headers.get()); 2544 EXPECT_EQ(headers, req.response_info().headers.get());
2546 2545
2547 std::string header; 2546 std::string header;
2548 EXPECT_TRUE(headers->GetNormalizedHeader("cache-control", &header)); 2547 EXPECT_TRUE(headers->GetNormalizedHeader("cache-control", &header));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
2590 result = persist->Save(lnk_path.c_str(), TRUE); 2589 result = persist->Save(lnk_path.c_str(), TRUE);
2591 EXPECT_TRUE(SUCCEEDED(result)); 2590 EXPECT_TRUE(SUCCEEDED(result));
2592 if (persist) 2591 if (persist)
2593 persist->Release(); 2592 persist->Release();
2594 if (shell) 2593 if (shell)
2595 shell->Release(); 2594 shell->Release();
2596 2595
2597 TestDelegate d; 2596 TestDelegate d;
2598 { 2597 {
2599 TestURLRequest r(FilePathToFileURL(FilePath(lnk_path)), &d); 2598 TestURLRequest r(FilePathToFileURL(FilePath(lnk_path)), &d);
2600 r.set_context(default_context_); 2599 r.set_context(&default_context_);
2601 2600
2602 r.Start(); 2601 r.Start();
2603 EXPECT_TRUE(r.is_pending()); 2602 EXPECT_TRUE(r.is_pending());
2604 2603
2605 MessageLoop::current()->Run(); 2604 MessageLoop::current()->Run();
2606 2605
2607 WIN32_FILE_ATTRIBUTE_DATA data; 2606 WIN32_FILE_ATTRIBUTE_DATA data;
2608 GetFileAttributesEx(app_path.value().c_str(), 2607 GetFileAttributesEx(app_path.value().c_str(),
2609 GetFileExInfoStandard, &data); 2608 GetFileExInfoStandard, &data);
2610 HANDLE file = CreateFile(app_path.value().c_str(), GENERIC_READ, 2609 HANDLE file = CreateFile(app_path.value().c_str(), GENERIC_READ,
(...skipping 18 matching lines...) Expand all
2629 CoUninitialize(); 2628 CoUninitialize();
2630 } 2629 }
2631 #endif // defined(OS_WIN) 2630 #endif // defined(OS_WIN)
2632 2631
2633 TEST_F(URLRequestTestHTTP, ContentTypeNormalizationTest) { 2632 TEST_F(URLRequestTestHTTP, ContentTypeNormalizationTest) {
2634 ASSERT_TRUE(test_server_.Start()); 2633 ASSERT_TRUE(test_server_.Start());
2635 2634
2636 TestDelegate d; 2635 TestDelegate d;
2637 TestURLRequest req(test_server_.GetURL( 2636 TestURLRequest req(test_server_.GetURL(
2638 "files/content-type-normalization.html"), &d); 2637 "files/content-type-normalization.html"), &d);
2639 req.set_context(default_context_); 2638 req.set_context(&default_context_);
2640 req.Start(); 2639 req.Start();
2641 MessageLoop::current()->Run(); 2640 MessageLoop::current()->Run();
2642 2641
2643 std::string mime_type; 2642 std::string mime_type;
2644 req.GetMimeType(&mime_type); 2643 req.GetMimeType(&mime_type);
2645 EXPECT_EQ("text/html", mime_type); 2644 EXPECT_EQ("text/html", mime_type);
2646 2645
2647 std::string charset; 2646 std::string charset;
2648 req.GetCharset(&charset); 2647 req.GetCharset(&charset);
2649 EXPECT_EQ("utf-8", charset); 2648 EXPECT_EQ("utf-8", charset);
2650 req.Cancel(); 2649 req.Cancel();
2651 } 2650 }
2652 2651
2653 TEST_F(URLRequestTest, FileDirCancelTest) { 2652 TEST_F(URLRequestTest, FileDirCancelTest) {
2654 // Put in mock resource provider. 2653 // Put in mock resource provider.
2655 NetModule::SetResourceProvider(TestNetResourceProvider); 2654 NetModule::SetResourceProvider(TestNetResourceProvider);
2656 2655
2657 TestDelegate d; 2656 TestDelegate d;
2658 { 2657 {
2659 FilePath file_path; 2658 FilePath file_path;
2660 PathService::Get(base::DIR_SOURCE_ROOT, &file_path); 2659 PathService::Get(base::DIR_SOURCE_ROOT, &file_path);
2661 file_path = file_path.Append(FILE_PATH_LITERAL("net")); 2660 file_path = file_path.Append(FILE_PATH_LITERAL("net"));
2662 file_path = file_path.Append(FILE_PATH_LITERAL("data")); 2661 file_path = file_path.Append(FILE_PATH_LITERAL("data"));
2663 2662
2664 TestURLRequest req(FilePathToFileURL(file_path), &d); 2663 TestURLRequest req(FilePathToFileURL(file_path), &d);
2665 req.set_context(default_context_); 2664 req.set_context(&default_context_);
2666 req.Start(); 2665 req.Start();
2667 EXPECT_TRUE(req.is_pending()); 2666 EXPECT_TRUE(req.is_pending());
2668 2667
2669 d.set_cancel_in_received_data_pending(true); 2668 d.set_cancel_in_received_data_pending(true);
2670 2669
2671 MessageLoop::current()->Run(); 2670 MessageLoop::current()->Run();
2672 } 2671 }
2673 2672
2674 // Take out mock resource provider. 2673 // Take out mock resource provider.
2675 NetModule::SetResourceProvider(NULL); 2674 NetModule::SetResourceProvider(NULL);
2676 } 2675 }
2677 2676
2678 TEST_F(URLRequestTest, FileDirRedirectNoCrash) { 2677 TEST_F(URLRequestTest, FileDirRedirectNoCrash) {
2679 // There is an implicit redirect when loading a file path that matches a 2678 // There is an implicit redirect when loading a file path that matches a
2680 // directory and does not end with a slash. Ensure that following such 2679 // directory and does not end with a slash. Ensure that following such
2681 // redirects does not crash. See http://crbug.com/18686. 2680 // redirects does not crash. See http://crbug.com/18686.
2682 2681
2683 FilePath path; 2682 FilePath path;
2684 PathService::Get(base::DIR_SOURCE_ROOT, &path); 2683 PathService::Get(base::DIR_SOURCE_ROOT, &path);
2685 path = path.Append(FILE_PATH_LITERAL("net")); 2684 path = path.Append(FILE_PATH_LITERAL("net"));
2686 path = path.Append(FILE_PATH_LITERAL("data")); 2685 path = path.Append(FILE_PATH_LITERAL("data"));
2687 path = path.Append(FILE_PATH_LITERAL("url_request_unittest")); 2686 path = path.Append(FILE_PATH_LITERAL("url_request_unittest"));
2688 2687
2689 TestDelegate d; 2688 TestDelegate d;
2690 TestURLRequest req(FilePathToFileURL(path), &d); 2689 TestURLRequest req(FilePathToFileURL(path), &d);
2691 req.set_context(default_context_); 2690 req.set_context(&default_context_);
2692 req.Start(); 2691 req.Start();
2693 MessageLoop::current()->Run(); 2692 MessageLoop::current()->Run();
2694 2693
2695 ASSERT_EQ(1, d.received_redirect_count()); 2694 ASSERT_EQ(1, d.received_redirect_count());
2696 ASSERT_LT(0, d.bytes_received()); 2695 ASSERT_LT(0, d.bytes_received());
2697 ASSERT_FALSE(d.request_failed()); 2696 ASSERT_FALSE(d.request_failed());
2698 ASSERT_TRUE(req.status().is_success()); 2697 ASSERT_TRUE(req.status().is_success());
2699 } 2698 }
2700 2699
2701 #if defined(OS_WIN) 2700 #if defined(OS_WIN)
2702 // Don't accept the url "file:///" on windows. See http://crbug.com/1474. 2701 // Don't accept the url "file:///" on windows. See http://crbug.com/1474.
2703 TEST_F(URLRequestTest, FileDirRedirectSingleSlash) { 2702 TEST_F(URLRequestTest, FileDirRedirectSingleSlash) {
2704 TestDelegate d; 2703 TestDelegate d;
2705 TestURLRequest req(GURL("file:///"), &d); 2704 TestURLRequest req(GURL("file:///"), &d);
2706 req.set_context(default_context_); 2705 req.set_context(&default_context_);
2707 req.Start(); 2706 req.Start();
2708 MessageLoop::current()->Run(); 2707 MessageLoop::current()->Run();
2709 2708
2710 ASSERT_EQ(1, d.received_redirect_count()); 2709 ASSERT_EQ(1, d.received_redirect_count());
2711 ASSERT_FALSE(req.status().is_success()); 2710 ASSERT_FALSE(req.status().is_success());
2712 } 2711 }
2713 #endif 2712 #endif
2714 2713
2715 TEST_F(URLRequestTestHTTP, RestrictRedirects) { 2714 TEST_F(URLRequestTestHTTP, RestrictRedirects) {
2716 ASSERT_TRUE(test_server_.Start()); 2715 ASSERT_TRUE(test_server_.Start());
2717 2716
2718 TestDelegate d; 2717 TestDelegate d;
2719 TestURLRequest req(test_server_.GetURL( 2718 TestURLRequest req(test_server_.GetURL(
2720 "files/redirect-to-file.html"), &d); 2719 "files/redirect-to-file.html"), &d);
2721 req.set_context(default_context_); 2720 req.set_context(&default_context_);
2722 req.Start(); 2721 req.Start();
2723 MessageLoop::current()->Run(); 2722 MessageLoop::current()->Run();
2724 2723
2725 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); 2724 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status());
2726 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error()); 2725 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error());
2727 } 2726 }
2728 2727
2729 TEST_F(URLRequestTestHTTP, RedirectToInvalidURL) { 2728 TEST_F(URLRequestTestHTTP, RedirectToInvalidURL) {
2730 ASSERT_TRUE(test_server_.Start()); 2729 ASSERT_TRUE(test_server_.Start());
2731 2730
2732 TestDelegate d; 2731 TestDelegate d;
2733 TestURLRequest req(test_server_.GetURL( 2732 TestURLRequest req(test_server_.GetURL(
2734 "files/redirect-to-invalid-url.html"), &d); 2733 "files/redirect-to-invalid-url.html"), &d);
2735 req.set_context(default_context_); 2734 req.set_context(&default_context_);
2736 req.Start(); 2735 req.Start();
2737 MessageLoop::current()->Run(); 2736 MessageLoop::current()->Run();
2738 2737
2739 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); 2738 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status());
2740 EXPECT_EQ(ERR_INVALID_URL, req.status().error()); 2739 EXPECT_EQ(ERR_INVALID_URL, req.status().error());
2741 } 2740 }
2742 2741
2743 TEST_F(URLRequestTestHTTP, NoUserPassInReferrer) { 2742 TEST_F(URLRequestTestHTTP, NoUserPassInReferrer) {
2744 ASSERT_TRUE(test_server_.Start()); 2743 ASSERT_TRUE(test_server_.Start());
2745 2744
2746 TestDelegate d; 2745 TestDelegate d;
2747 TestURLRequest req(test_server_.GetURL("echoheader?Referer"), &d); 2746 TestURLRequest req(test_server_.GetURL("echoheader?Referer"), &d);
2748 req.set_context(default_context_); 2747 req.set_context(&default_context_);
2749 req.set_referrer("http://user:pass@foo.com/"); 2748 req.set_referrer("http://user:pass@foo.com/");
2750 req.Start(); 2749 req.Start();
2751 MessageLoop::current()->Run(); 2750 MessageLoop::current()->Run();
2752 2751
2753 EXPECT_EQ(std::string("http://foo.com/"), d.data_received()); 2752 EXPECT_EQ(std::string("http://foo.com/"), d.data_received());
2754 } 2753 }
2755 2754
2756 TEST_F(URLRequestTestHTTP, CancelRedirect) { 2755 TEST_F(URLRequestTestHTTP, CancelRedirect) {
2757 ASSERT_TRUE(test_server_.Start()); 2756 ASSERT_TRUE(test_server_.Start());
2758 2757
2759 TestDelegate d; 2758 TestDelegate d;
2760 { 2759 {
2761 d.set_cancel_in_received_redirect(true); 2760 d.set_cancel_in_received_redirect(true);
2762 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d); 2761 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d);
2763 req.set_context(default_context_); 2762 req.set_context(&default_context_);
2764 req.Start(); 2763 req.Start();
2765 MessageLoop::current()->Run(); 2764 MessageLoop::current()->Run();
2766 2765
2767 EXPECT_EQ(1, d.response_started_count()); 2766 EXPECT_EQ(1, d.response_started_count());
2768 EXPECT_EQ(0, d.bytes_received()); 2767 EXPECT_EQ(0, d.bytes_received());
2769 EXPECT_FALSE(d.received_data_before_response()); 2768 EXPECT_FALSE(d.received_data_before_response());
2770 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); 2769 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
2771 } 2770 }
2772 } 2771 }
2773 2772
2774 TEST_F(URLRequestTestHTTP, DeferredRedirect) { 2773 TEST_F(URLRequestTestHTTP, DeferredRedirect) {
2775 ASSERT_TRUE(test_server_.Start()); 2774 ASSERT_TRUE(test_server_.Start());
2776 2775
2777 TestDelegate d; 2776 TestDelegate d;
2778 { 2777 {
2779 d.set_quit_on_redirect(true); 2778 d.set_quit_on_redirect(true);
2780 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d); 2779 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d);
2781 req.set_context(default_context_); 2780 req.set_context(&default_context_);
2782 req.Start(); 2781 req.Start();
2783 MessageLoop::current()->Run(); 2782 MessageLoop::current()->Run();
2784 2783
2785 EXPECT_EQ(1, d.received_redirect_count()); 2784 EXPECT_EQ(1, d.received_redirect_count());
2786 2785
2787 req.FollowDeferredRedirect(); 2786 req.FollowDeferredRedirect();
2788 MessageLoop::current()->Run(); 2787 MessageLoop::current()->Run();
2789 2788
2790 EXPECT_EQ(1, d.response_started_count()); 2789 EXPECT_EQ(1, d.response_started_count());
2791 EXPECT_FALSE(d.received_data_before_response()); 2790 EXPECT_FALSE(d.received_data_before_response());
(...skipping 12 matching lines...) Expand all
2804 } 2803 }
2805 } 2804 }
2806 2805
2807 TEST_F(URLRequestTestHTTP, CancelDeferredRedirect) { 2806 TEST_F(URLRequestTestHTTP, CancelDeferredRedirect) {
2808 ASSERT_TRUE(test_server_.Start()); 2807 ASSERT_TRUE(test_server_.Start());
2809 2808
2810 TestDelegate d; 2809 TestDelegate d;
2811 { 2810 {
2812 d.set_quit_on_redirect(true); 2811 d.set_quit_on_redirect(true);
2813 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d); 2812 TestURLRequest req(test_server_.GetURL("files/redirect-test.html"), &d);
2814 req.set_context(default_context_); 2813 req.set_context(&default_context_);
2815 req.Start(); 2814 req.Start();
2816 MessageLoop::current()->Run(); 2815 MessageLoop::current()->Run();
2817 2816
2818 EXPECT_EQ(1, d.received_redirect_count()); 2817 EXPECT_EQ(1, d.received_redirect_count());
2819 2818
2820 req.Cancel(); 2819 req.Cancel();
2821 MessageLoop::current()->Run(); 2820 MessageLoop::current()->Run();
2822 2821
2823 EXPECT_EQ(1, d.response_started_count()); 2822 EXPECT_EQ(1, d.response_started_count());
2824 EXPECT_EQ(0, d.bytes_received()); 2823 EXPECT_EQ(0, d.bytes_received());
2825 EXPECT_FALSE(d.received_data_before_response()); 2824 EXPECT_FALSE(d.received_data_before_response());
2826 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); 2825 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
2827 } 2826 }
2828 } 2827 }
2829 2828
2830 TEST_F(URLRequestTestHTTP, VaryHeader) { 2829 TEST_F(URLRequestTestHTTP, VaryHeader) {
2831 ASSERT_TRUE(test_server_.Start()); 2830 ASSERT_TRUE(test_server_.Start());
2832 2831
2833 // populate the cache 2832 // populate the cache
2834 { 2833 {
2835 TestDelegate d; 2834 TestDelegate d;
2836 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d); 2835 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d);
2837 req.set_context(default_context_); 2836 req.set_context(&default_context_);
2838 HttpRequestHeaders headers; 2837 HttpRequestHeaders headers;
2839 headers.SetHeader("foo", "1"); 2838 headers.SetHeader("foo", "1");
2840 req.SetExtraRequestHeaders(headers); 2839 req.SetExtraRequestHeaders(headers);
2841 req.Start(); 2840 req.Start();
2842 MessageLoop::current()->Run(); 2841 MessageLoop::current()->Run();
2843 } 2842 }
2844 2843
2845 // expect a cache hit 2844 // expect a cache hit
2846 { 2845 {
2847 TestDelegate d; 2846 TestDelegate d;
2848 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d); 2847 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d);
2849 req.set_context(default_context_); 2848 req.set_context(&default_context_);
2850 HttpRequestHeaders headers; 2849 HttpRequestHeaders headers;
2851 headers.SetHeader("foo", "1"); 2850 headers.SetHeader("foo", "1");
2852 req.SetExtraRequestHeaders(headers); 2851 req.SetExtraRequestHeaders(headers);
2853 req.Start(); 2852 req.Start();
2854 MessageLoop::current()->Run(); 2853 MessageLoop::current()->Run();
2855 2854
2856 EXPECT_TRUE(req.was_cached()); 2855 EXPECT_TRUE(req.was_cached());
2857 } 2856 }
2858 2857
2859 // expect a cache miss 2858 // expect a cache miss
2860 { 2859 {
2861 TestDelegate d; 2860 TestDelegate d;
2862 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d); 2861 URLRequest req(test_server_.GetURL("echoheadercache?foo"), &d);
2863 req.set_context(default_context_); 2862 req.set_context(&default_context_);
2864 HttpRequestHeaders headers; 2863 HttpRequestHeaders headers;
2865 headers.SetHeader("foo", "2"); 2864 headers.SetHeader("foo", "2");
2866 req.SetExtraRequestHeaders(headers); 2865 req.SetExtraRequestHeaders(headers);
2867 req.Start(); 2866 req.Start();
2868 MessageLoop::current()->Run(); 2867 MessageLoop::current()->Run();
2869 2868
2870 EXPECT_FALSE(req.was_cached()); 2869 EXPECT_FALSE(req.was_cached());
2871 } 2870 }
2872 } 2871 }
2873 2872
2874 TEST_F(URLRequestTestHTTP, BasicAuth) { 2873 TEST_F(URLRequestTestHTTP, BasicAuth) {
2875 ASSERT_TRUE(test_server_.Start()); 2874 ASSERT_TRUE(test_server_.Start());
2876 2875
2877 // populate the cache 2876 // populate the cache
2878 { 2877 {
2879 TestDelegate d; 2878 TestDelegate d;
2880 d.set_credentials(AuthCredentials(kUser, kSecret)); 2879 d.set_credentials(AuthCredentials(kUser, kSecret));
2881 2880
2882 URLRequest r(test_server_.GetURL("auth-basic"), &d); 2881 URLRequest r(test_server_.GetURL("auth-basic"), &d);
2883 r.set_context(default_context_); 2882 r.set_context(&default_context_);
2884 r.Start(); 2883 r.Start();
2885 2884
2886 MessageLoop::current()->Run(); 2885 MessageLoop::current()->Run();
2887 2886
2888 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos); 2887 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos);
2889 } 2888 }
2890 2889
2891 // repeat request with end-to-end validation. since auth-basic results in a 2890 // repeat request with end-to-end validation. since auth-basic results in a
2892 // cachable page, we expect this test to result in a 304. in which case, the 2891 // cachable page, we expect this test to result in a 304. in which case, the
2893 // response should be fetched from the cache. 2892 // response should be fetched from the cache.
2894 { 2893 {
2895 TestDelegate d; 2894 TestDelegate d;
2896 d.set_credentials(AuthCredentials(kUser, kSecret)); 2895 d.set_credentials(AuthCredentials(kUser, kSecret));
2897 2896
2898 URLRequest r(test_server_.GetURL("auth-basic"), &d); 2897 URLRequest r(test_server_.GetURL("auth-basic"), &d);
2899 r.set_context(default_context_); 2898 r.set_context(&default_context_);
2900 r.set_load_flags(LOAD_VALIDATE_CACHE); 2899 r.set_load_flags(LOAD_VALIDATE_CACHE);
2901 r.Start(); 2900 r.Start();
2902 2901
2903 MessageLoop::current()->Run(); 2902 MessageLoop::current()->Run();
2904 2903
2905 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos); 2904 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos);
2906 2905
2907 // Should be the same cached document. 2906 // Should be the same cached document.
2908 EXPECT_TRUE(r.was_cached()); 2907 EXPECT_TRUE(r.was_cached());
2909 } 2908 }
2910 } 2909 }
2911 2910
2912 // Check that Set-Cookie headers in 401 responses are respected. 2911 // Check that Set-Cookie headers in 401 responses are respected.
2913 // http://crbug.com/6450 2912 // http://crbug.com/6450
2914 TEST_F(URLRequestTestHTTP, BasicAuthWithCookies) { 2913 TEST_F(URLRequestTestHTTP, BasicAuthWithCookies) {
2915 ASSERT_TRUE(test_server_.Start()); 2914 ASSERT_TRUE(test_server_.Start());
2916 2915
2917 GURL url_requiring_auth = 2916 GURL url_requiring_auth =
2918 test_server_.GetURL("auth-basic?set-cookie-if-challenged"); 2917 test_server_.GetURL("auth-basic?set-cookie-if-challenged");
2919 2918
2920 // Request a page that will give a 401 containing a Set-Cookie header. 2919 // Request a page that will give a 401 containing a Set-Cookie header.
2921 // Verify that when the transaction is restarted, it includes the new cookie. 2920 // Verify that when the transaction is restarted, it includes the new cookie.
2922 { 2921 {
2923 TestNetworkDelegate network_delegate; // must outlive URLRequest 2922 TestNetworkDelegate network_delegate; // must outlive URLRequest
2924 scoped_refptr<TestURLRequestContext> context( 2923 TestURLRequestContext context(true);
2925 new TestURLRequestContext(true)); 2924 context.set_network_delegate(&network_delegate);
2926 context->set_network_delegate(&network_delegate); 2925 context.Init();
2927 context->Init();
2928 2926
2929 TestDelegate d; 2927 TestDelegate d;
2930 d.set_credentials(AuthCredentials(kUser, kSecret)); 2928 d.set_credentials(AuthCredentials(kUser, kSecret));
2931 2929
2932 URLRequest r(url_requiring_auth, &d); 2930 URLRequest r(url_requiring_auth, &d);
2933 r.set_context(context); 2931 r.set_context(&context);
2934 r.Start(); 2932 r.Start();
2935 2933
2936 MessageLoop::current()->Run(); 2934 MessageLoop::current()->Run();
2937 2935
2938 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos); 2936 EXPECT_TRUE(d.data_received().find("user/secret") != std::string::npos);
2939 2937
2940 // Make sure we sent the cookie in the restarted transaction. 2938 // Make sure we sent the cookie in the restarted transaction.
2941 EXPECT_TRUE(d.data_received().find("Cookie: got_challenged=true") 2939 EXPECT_TRUE(d.data_received().find("Cookie: got_challenged=true")
2942 != std::string::npos); 2940 != std::string::npos);
2943 } 2941 }
2944 } 2942 }
2945 2943
2946 TEST_F(URLRequestTest, DelayedCookieCallback) { 2944 TEST_F(URLRequestTest, DelayedCookieCallback) {
2947 LocalHttpTestServer test_server; 2945 LocalHttpTestServer test_server;
2948 ASSERT_TRUE(test_server.Start()); 2946 ASSERT_TRUE(test_server.Start());
2949 2947
2950 scoped_refptr<URLRequestContext> context(new TestURLRequestContext()); 2948 TestURLRequestContext context;
2951 scoped_refptr<DelayedCookieMonster> delayed_cm = 2949 scoped_refptr<DelayedCookieMonster> delayed_cm =
2952 new DelayedCookieMonster(); 2950 new DelayedCookieMonster();
2953 scoped_refptr<CookieStore> cookie_store = delayed_cm; 2951 scoped_refptr<CookieStore> cookie_store = delayed_cm;
2954 context->set_cookie_store(delayed_cm); 2952 context.set_cookie_store(delayed_cm);
2955 2953
2956 // Set up a cookie. 2954 // Set up a cookie.
2957 { 2955 {
2958 TestNetworkDelegate network_delegate; 2956 TestNetworkDelegate network_delegate;
2959 context->set_network_delegate(&network_delegate); 2957 context.set_network_delegate(&network_delegate);
2960 TestDelegate d; 2958 TestDelegate d;
2961 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d); 2959 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d);
2962 req.set_context(context); 2960 req.set_context(&context);
2963 req.Start(); 2961 req.Start();
2964 MessageLoop::current()->Run(); 2962 MessageLoop::current()->Run();
2965 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 2963 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
2966 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 2964 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
2967 EXPECT_EQ(1, network_delegate.set_cookie_count()); 2965 EXPECT_EQ(1, network_delegate.set_cookie_count());
2968 } 2966 }
2969 2967
2970 // Verify that the cookie is set. 2968 // Verify that the cookie is set.
2971 { 2969 {
2972 TestNetworkDelegate network_delegate; 2970 TestNetworkDelegate network_delegate;
2973 context->set_network_delegate(&network_delegate); 2971 context.set_network_delegate(&network_delegate);
2974 TestDelegate d; 2972 TestDelegate d;
2975 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 2973 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
2976 req.set_context(context); 2974 req.set_context(&context);
2977 req.Start(); 2975 req.Start();
2978 MessageLoop::current()->Run(); 2976 MessageLoop::current()->Run();
2979 2977
2980 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") 2978 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1")
2981 != std::string::npos); 2979 != std::string::npos);
2982 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 2980 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
2983 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 2981 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
2984 } 2982 }
2985 } 2983 }
2986 2984
2987 TEST_F(URLRequestTest, DoNotSendCookies) { 2985 TEST_F(URLRequestTest, DoNotSendCookies) {
2988 LocalHttpTestServer test_server; 2986 LocalHttpTestServer test_server;
2989 ASSERT_TRUE(test_server.Start()); 2987 ASSERT_TRUE(test_server.Start());
2990 2988
2991 // Set up a cookie. 2989 // Set up a cookie.
2992 { 2990 {
2993 TestNetworkDelegate network_delegate; 2991 TestNetworkDelegate network_delegate;
2994 default_context_->set_network_delegate(&network_delegate); 2992 default_context_.set_network_delegate(&network_delegate);
2995 TestDelegate d; 2993 TestDelegate d;
2996 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d); 2994 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d);
2997 req.set_context(default_context_); 2995 req.set_context(&default_context_);
2998 req.Start(); 2996 req.Start();
2999 MessageLoop::current()->Run(); 2997 MessageLoop::current()->Run();
3000 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 2998 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3001 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 2999 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3002 } 3000 }
3003 3001
3004 // Verify that the cookie is set. 3002 // Verify that the cookie is set.
3005 { 3003 {
3006 TestNetworkDelegate network_delegate; 3004 TestNetworkDelegate network_delegate;
3007 default_context_->set_network_delegate(&network_delegate); 3005 default_context_.set_network_delegate(&network_delegate);
3008 TestDelegate d; 3006 TestDelegate d;
3009 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3007 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3010 req.set_context(default_context_); 3008 req.set_context(&default_context_);
3011 req.Start(); 3009 req.Start();
3012 MessageLoop::current()->Run(); 3010 MessageLoop::current()->Run();
3013 3011
3014 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") 3012 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1")
3015 != std::string::npos); 3013 != std::string::npos);
3016 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3014 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3017 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3015 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3018 } 3016 }
3019 3017
3020 // Verify that the cookie isn't sent when LOAD_DO_NOT_SEND_COOKIES is set. 3018 // Verify that the cookie isn't sent when LOAD_DO_NOT_SEND_COOKIES is set.
3021 { 3019 {
3022 TestNetworkDelegate network_delegate; 3020 TestNetworkDelegate network_delegate;
3023 default_context_->set_network_delegate(&network_delegate); 3021 default_context_.set_network_delegate(&network_delegate);
3024 TestDelegate d; 3022 TestDelegate d;
3025 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3023 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3026 req.set_load_flags(LOAD_DO_NOT_SEND_COOKIES); 3024 req.set_load_flags(LOAD_DO_NOT_SEND_COOKIES);
3027 req.set_context(default_context_); 3025 req.set_context(&default_context_);
3028 req.Start(); 3026 req.Start();
3029 MessageLoop::current()->Run(); 3027 MessageLoop::current()->Run();
3030 3028
3031 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") 3029 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1")
3032 == std::string::npos); 3030 == std::string::npos);
3033 3031
3034 // LOAD_DO_NOT_SEND_COOKIES does not trigger OnGetCookies. 3032 // LOAD_DO_NOT_SEND_COOKIES does not trigger OnGetCookies.
3035 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3033 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3036 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3034 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3037 } 3035 }
3038 3036
3039 default_context_->set_network_delegate(&default_network_delegate_); 3037 default_context_.set_network_delegate(&default_network_delegate_);
3040 } 3038 }
3041 3039
3042 TEST_F(URLRequestTest, DoNotSaveCookies) { 3040 TEST_F(URLRequestTest, DoNotSaveCookies) {
3043 LocalHttpTestServer test_server; 3041 LocalHttpTestServer test_server;
3044 ASSERT_TRUE(test_server.Start()); 3042 ASSERT_TRUE(test_server.Start());
3045 3043
3046 // Set up a cookie. 3044 // Set up a cookie.
3047 { 3045 {
3048 TestNetworkDelegate network_delegate; 3046 TestNetworkDelegate network_delegate;
3049 default_context_->set_network_delegate(&network_delegate); 3047 default_context_.set_network_delegate(&network_delegate);
3050 TestDelegate d; 3048 TestDelegate d;
3051 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d); 3049 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d);
3052 req.set_context(default_context_); 3050 req.set_context(&default_context_);
3053 req.Start(); 3051 req.Start();
3054 MessageLoop::current()->Run(); 3052 MessageLoop::current()->Run();
3055 3053
3056 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3054 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3057 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3055 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3058 EXPECT_EQ(1, network_delegate.set_cookie_count()); 3056 EXPECT_EQ(1, network_delegate.set_cookie_count());
3059 } 3057 }
3060 3058
3061 // Try to set-up another cookie and update the previous cookie. 3059 // Try to set-up another cookie and update the previous cookie.
3062 { 3060 {
3063 TestNetworkDelegate network_delegate; 3061 TestNetworkDelegate network_delegate;
3064 default_context_->set_network_delegate(&network_delegate); 3062 default_context_.set_network_delegate(&network_delegate);
3065 TestDelegate d; 3063 TestDelegate d;
3066 URLRequest req(test_server.GetURL( 3064 URLRequest req(test_server.GetURL(
3067 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d); 3065 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d);
3068 req.set_load_flags(LOAD_DO_NOT_SAVE_COOKIES); 3066 req.set_load_flags(LOAD_DO_NOT_SAVE_COOKIES);
3069 req.set_context(default_context_); 3067 req.set_context(&default_context_);
3070 req.Start(); 3068 req.Start();
3071 3069
3072 MessageLoop::current()->Run(); 3070 MessageLoop::current()->Run();
3073 3071
3074 // LOAD_DO_NOT_SAVE_COOKIES does not trigger OnSetCookie. 3072 // LOAD_DO_NOT_SAVE_COOKIES does not trigger OnSetCookie.
3075 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3073 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3076 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3074 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3077 EXPECT_EQ(0, network_delegate.set_cookie_count()); 3075 EXPECT_EQ(0, network_delegate.set_cookie_count());
3078 } 3076 }
3079 3077
3080 // Verify the cookies weren't saved or updated. 3078 // Verify the cookies weren't saved or updated.
3081 { 3079 {
3082 TestNetworkDelegate network_delegate; 3080 TestNetworkDelegate network_delegate;
3083 default_context_->set_network_delegate(&network_delegate); 3081 default_context_.set_network_delegate(&network_delegate);
3084 TestDelegate d; 3082 TestDelegate d;
3085 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3083 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3086 req.set_context(default_context_); 3084 req.set_context(&default_context_);
3087 req.Start(); 3085 req.Start();
3088 MessageLoop::current()->Run(); 3086 MessageLoop::current()->Run();
3089 3087
3090 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") 3088 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1")
3091 == std::string::npos); 3089 == std::string::npos);
3092 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2") 3090 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2")
3093 != std::string::npos); 3091 != std::string::npos);
3094 3092
3095 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3093 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3096 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3094 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3097 EXPECT_EQ(0, network_delegate.set_cookie_count()); 3095 EXPECT_EQ(0, network_delegate.set_cookie_count());
3098 } 3096 }
3099 3097
3100 default_context_->set_network_delegate(&default_network_delegate_); 3098 default_context_.set_network_delegate(&default_network_delegate_);
3101 } 3099 }
3102 3100
3103 TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) { 3101 TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy) {
3104 LocalHttpTestServer test_server; 3102 LocalHttpTestServer test_server;
3105 ASSERT_TRUE(test_server.Start()); 3103 ASSERT_TRUE(test_server.Start());
3106 3104
3107 // Set up a cookie. 3105 // Set up a cookie.
3108 { 3106 {
3109 TestNetworkDelegate network_delegate; 3107 TestNetworkDelegate network_delegate;
3110 default_context_->set_network_delegate(&network_delegate); 3108 default_context_.set_network_delegate(&network_delegate);
3111 TestDelegate d; 3109 TestDelegate d;
3112 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d); 3110 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d);
3113 req.set_context(default_context_); 3111 req.set_context(&default_context_);
3114 req.Start(); 3112 req.Start();
3115 MessageLoop::current()->Run(); 3113 MessageLoop::current()->Run();
3116 3114
3117 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3115 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3118 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3116 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3119 } 3117 }
3120 3118
3121 // Verify that the cookie is set. 3119 // Verify that the cookie is set.
3122 { 3120 {
3123 TestNetworkDelegate network_delegate; 3121 TestNetworkDelegate network_delegate;
3124 default_context_->set_network_delegate(&network_delegate); 3122 default_context_.set_network_delegate(&network_delegate);
3125 TestDelegate d; 3123 TestDelegate d;
3126 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3124 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3127 req.set_context(default_context_); 3125 req.set_context(&default_context_);
3128 req.Start(); 3126 req.Start();
3129 MessageLoop::current()->Run(); 3127 MessageLoop::current()->Run();
3130 3128
3131 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") 3129 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1")
3132 != std::string::npos); 3130 != std::string::npos);
3133 3131
3134 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3132 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3135 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3133 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3136 } 3134 }
3137 3135
3138 // Verify that the cookie isn't sent. 3136 // Verify that the cookie isn't sent.
3139 { 3137 {
3140 TestNetworkDelegate network_delegate; 3138 TestNetworkDelegate network_delegate;
3141 default_context_->set_network_delegate(&network_delegate); 3139 default_context_.set_network_delegate(&network_delegate);
3142 TestDelegate d; 3140 TestDelegate d;
3143 network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES); 3141 network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES);
3144 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3142 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3145 req.set_context(default_context_); 3143 req.set_context(&default_context_);
3146 req.Start(); 3144 req.Start();
3147 MessageLoop::current()->Run(); 3145 MessageLoop::current()->Run();
3148 3146
3149 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") 3147 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1")
3150 == std::string::npos); 3148 == std::string::npos);
3151 3149
3152 EXPECT_EQ(1, network_delegate.blocked_get_cookies_count()); 3150 EXPECT_EQ(1, network_delegate.blocked_get_cookies_count());
3153 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3151 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3154 } 3152 }
3155 3153
3156 default_context_->set_network_delegate(&default_network_delegate_); 3154 default_context_.set_network_delegate(&default_network_delegate_);
3157 } 3155 }
3158 3156
3159 TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) { 3157 TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy) {
3160 LocalHttpTestServer test_server; 3158 LocalHttpTestServer test_server;
3161 ASSERT_TRUE(test_server.Start()); 3159 ASSERT_TRUE(test_server.Start());
3162 3160
3163 // Set up a cookie. 3161 // Set up a cookie.
3164 { 3162 {
3165 TestNetworkDelegate network_delegate; 3163 TestNetworkDelegate network_delegate;
3166 default_context_->set_network_delegate(&network_delegate); 3164 default_context_.set_network_delegate(&network_delegate);
3167 TestDelegate d; 3165 TestDelegate d;
3168 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d); 3166 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d);
3169 req.set_context(default_context_); 3167 req.set_context(&default_context_);
3170 req.Start(); 3168 req.Start();
3171 MessageLoop::current()->Run(); 3169 MessageLoop::current()->Run();
3172 3170
3173 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3171 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3174 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3172 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3175 } 3173 }
3176 3174
3177 // Try to set-up another cookie and update the previous cookie. 3175 // Try to set-up another cookie and update the previous cookie.
3178 { 3176 {
3179 TestNetworkDelegate network_delegate; 3177 TestNetworkDelegate network_delegate;
3180 default_context_->set_network_delegate(&network_delegate); 3178 default_context_.set_network_delegate(&network_delegate);
3181 TestDelegate d; 3179 TestDelegate d;
3182 network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE); 3180 network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE);
3183 URLRequest req(test_server.GetURL( 3181 URLRequest req(test_server.GetURL(
3184 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d); 3182 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d);
3185 req.set_context(default_context_); 3183 req.set_context(&default_context_);
3186 req.Start(); 3184 req.Start();
3187 3185
3188 MessageLoop::current()->Run(); 3186 MessageLoop::current()->Run();
3189 3187
3190 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3188 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3191 EXPECT_EQ(2, network_delegate.blocked_set_cookie_count()); 3189 EXPECT_EQ(2, network_delegate.blocked_set_cookie_count());
3192 } 3190 }
3193 3191
3194 3192
3195 // Verify the cookies weren't saved or updated. 3193 // Verify the cookies weren't saved or updated.
3196 { 3194 {
3197 TestNetworkDelegate network_delegate; 3195 TestNetworkDelegate network_delegate;
3198 default_context_->set_network_delegate(&network_delegate); 3196 default_context_.set_network_delegate(&network_delegate);
3199 TestDelegate d; 3197 TestDelegate d;
3200 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3198 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3201 req.set_context(default_context_); 3199 req.set_context(&default_context_);
3202 req.Start(); 3200 req.Start();
3203 MessageLoop::current()->Run(); 3201 MessageLoop::current()->Run();
3204 3202
3205 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") 3203 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1")
3206 == std::string::npos); 3204 == std::string::npos);
3207 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2") 3205 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2")
3208 != std::string::npos); 3206 != std::string::npos);
3209 3207
3210 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3208 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3211 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3209 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3212 } 3210 }
3213 3211
3214 default_context_->set_network_delegate(&default_network_delegate_); 3212 default_context_.set_network_delegate(&default_network_delegate_);
3215 } 3213 }
3216 3214
3217 TEST_F(URLRequestTest, DoNotSaveEmptyCookies) { 3215 TEST_F(URLRequestTest, DoNotSaveEmptyCookies) {
3218 LocalHttpTestServer test_server; 3216 LocalHttpTestServer test_server;
3219 ASSERT_TRUE(test_server.Start()); 3217 ASSERT_TRUE(test_server.Start());
3220 3218
3221 // Set up an empty cookie. 3219 // Set up an empty cookie.
3222 { 3220 {
3223 TestNetworkDelegate network_delegate; 3221 TestNetworkDelegate network_delegate;
3224 default_context_->set_network_delegate(&network_delegate); 3222 default_context_.set_network_delegate(&network_delegate);
3225 TestDelegate d; 3223 TestDelegate d;
3226 URLRequest req(test_server.GetURL("set-cookie"), &d); 3224 URLRequest req(test_server.GetURL("set-cookie"), &d);
3227 req.set_context(default_context_); 3225 req.set_context(&default_context_);
3228 req.Start(); 3226 req.Start();
3229 MessageLoop::current()->Run(); 3227 MessageLoop::current()->Run();
3230 3228
3231 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3229 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3232 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3230 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3233 EXPECT_EQ(0, network_delegate.set_cookie_count()); 3231 EXPECT_EQ(0, network_delegate.set_cookie_count());
3234 } 3232 }
3235 3233
3236 default_context_->set_network_delegate(&default_network_delegate_); 3234 default_context_.set_network_delegate(&default_network_delegate_);
3237 } 3235 }
3238 3236
3239 TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) { 3237 TEST_F(URLRequestTest, DoNotSendCookies_ViaPolicy_Async) {
3240 LocalHttpTestServer test_server; 3238 LocalHttpTestServer test_server;
3241 ASSERT_TRUE(test_server.Start()); 3239 ASSERT_TRUE(test_server.Start());
3242 3240
3243 // Set up a cookie. 3241 // Set up a cookie.
3244 { 3242 {
3245 TestNetworkDelegate network_delegate; 3243 TestNetworkDelegate network_delegate;
3246 default_context_->set_network_delegate(&network_delegate); 3244 default_context_.set_network_delegate(&network_delegate);
3247 TestDelegate d; 3245 TestDelegate d;
3248 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d); 3246 URLRequest req(test_server.GetURL("set-cookie?CookieToNotSend=1"), &d);
3249 req.set_context(default_context_); 3247 req.set_context(&default_context_);
3250 req.Start(); 3248 req.Start();
3251 MessageLoop::current()->Run(); 3249 MessageLoop::current()->Run();
3252 3250
3253 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3251 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3254 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3252 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3255 } 3253 }
3256 3254
3257 // Verify that the cookie is set. 3255 // Verify that the cookie is set.
3258 { 3256 {
3259 TestNetworkDelegate network_delegate; 3257 TestNetworkDelegate network_delegate;
3260 default_context_->set_network_delegate(&network_delegate); 3258 default_context_.set_network_delegate(&network_delegate);
3261 TestDelegate d; 3259 TestDelegate d;
3262 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3260 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3263 req.set_context(default_context_); 3261 req.set_context(&default_context_);
3264 req.Start(); 3262 req.Start();
3265 MessageLoop::current()->Run(); 3263 MessageLoop::current()->Run();
3266 3264
3267 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1") 3265 EXPECT_TRUE(d.data_received().find("CookieToNotSend=1")
3268 != std::string::npos); 3266 != std::string::npos);
3269 3267
3270 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3268 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3271 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3269 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3272 } 3270 }
3273 3271
3274 // Verify that the cookie isn't sent. 3272 // Verify that the cookie isn't sent.
3275 { 3273 {
3276 TestNetworkDelegate network_delegate; 3274 TestNetworkDelegate network_delegate;
3277 default_context_->set_network_delegate(&network_delegate); 3275 default_context_.set_network_delegate(&network_delegate);
3278 TestDelegate d; 3276 TestDelegate d;
3279 network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES); 3277 network_delegate.set_cookie_options(TestNetworkDelegate::NO_GET_COOKIES);
3280 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3278 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3281 req.set_context(default_context_); 3279 req.set_context(&default_context_);
3282 req.Start(); 3280 req.Start();
3283 MessageLoop::current()->Run(); 3281 MessageLoop::current()->Run();
3284 3282
3285 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1") 3283 EXPECT_TRUE(d.data_received().find("Cookie: CookieToNotSend=1")
3286 == std::string::npos); 3284 == std::string::npos);
3287 3285
3288 EXPECT_EQ(1, network_delegate.blocked_get_cookies_count()); 3286 EXPECT_EQ(1, network_delegate.blocked_get_cookies_count());
3289 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3287 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3290 } 3288 }
3291 3289
3292 default_context_->set_network_delegate(&default_network_delegate_); 3290 default_context_.set_network_delegate(&default_network_delegate_);
3293 } 3291 }
3294 3292
3295 TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) { 3293 TEST_F(URLRequestTest, DoNotSaveCookies_ViaPolicy_Async) {
3296 LocalHttpTestServer test_server; 3294 LocalHttpTestServer test_server;
3297 ASSERT_TRUE(test_server.Start()); 3295 ASSERT_TRUE(test_server.Start());
3298 3296
3299 // Set up a cookie. 3297 // Set up a cookie.
3300 { 3298 {
3301 TestNetworkDelegate network_delegate; 3299 TestNetworkDelegate network_delegate;
3302 default_context_->set_network_delegate(&network_delegate); 3300 default_context_.set_network_delegate(&network_delegate);
3303 TestDelegate d; 3301 TestDelegate d;
3304 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d); 3302 URLRequest req(test_server.GetURL("set-cookie?CookieToNotUpdate=2"), &d);
3305 req.set_context(default_context_); 3303 req.set_context(&default_context_);
3306 req.Start(); 3304 req.Start();
3307 MessageLoop::current()->Run(); 3305 MessageLoop::current()->Run();
3308 3306
3309 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3307 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3310 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3308 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3311 } 3309 }
3312 3310
3313 // Try to set-up another cookie and update the previous cookie. 3311 // Try to set-up another cookie and update the previous cookie.
3314 { 3312 {
3315 TestNetworkDelegate network_delegate; 3313 TestNetworkDelegate network_delegate;
3316 default_context_->set_network_delegate(&network_delegate); 3314 default_context_.set_network_delegate(&network_delegate);
3317 TestDelegate d; 3315 TestDelegate d;
3318 network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE); 3316 network_delegate.set_cookie_options(TestNetworkDelegate::NO_SET_COOKIE);
3319 URLRequest req(test_server.GetURL( 3317 URLRequest req(test_server.GetURL(
3320 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d); 3318 "set-cookie?CookieToNotSave=1&CookieToNotUpdate=1"), &d);
3321 req.set_context(default_context_); 3319 req.set_context(&default_context_);
3322 req.Start(); 3320 req.Start();
3323 3321
3324 MessageLoop::current()->Run(); 3322 MessageLoop::current()->Run();
3325 3323
3326 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3324 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3327 EXPECT_EQ(2, network_delegate.blocked_set_cookie_count()); 3325 EXPECT_EQ(2, network_delegate.blocked_set_cookie_count());
3328 } 3326 }
3329 3327
3330 // Verify the cookies weren't saved or updated. 3328 // Verify the cookies weren't saved or updated.
3331 { 3329 {
3332 TestNetworkDelegate network_delegate; 3330 TestNetworkDelegate network_delegate;
3333 default_context_->set_network_delegate(&network_delegate); 3331 default_context_.set_network_delegate(&network_delegate);
3334 TestDelegate d; 3332 TestDelegate d;
3335 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d); 3333 TestURLRequest req(test_server.GetURL("echoheader?Cookie"), &d);
3336 req.set_context(default_context_); 3334 req.set_context(&default_context_);
3337 req.Start(); 3335 req.Start();
3338 MessageLoop::current()->Run(); 3336 MessageLoop::current()->Run();
3339 3337
3340 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1") 3338 EXPECT_TRUE(d.data_received().find("CookieToNotSave=1")
3341 == std::string::npos); 3339 == std::string::npos);
3342 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2") 3340 EXPECT_TRUE(d.data_received().find("CookieToNotUpdate=2")
3343 != std::string::npos); 3341 != std::string::npos);
3344 3342
3345 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3343 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3346 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3344 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3347 } 3345 }
3348 3346
3349 default_context_->set_network_delegate(&default_network_delegate_); 3347 default_context_.set_network_delegate(&default_network_delegate_);
3350 } 3348 }
3351 3349
3352 void CheckCookiePolicyCallback(bool* was_run, const CookieList& cookies) { 3350 void CheckCookiePolicyCallback(bool* was_run, const CookieList& cookies) {
3353 EXPECT_EQ(1U, cookies.size()); 3351 EXPECT_EQ(1U, cookies.size());
3354 EXPECT_FALSE(cookies[0].IsPersistent()); 3352 EXPECT_FALSE(cookies[0].IsPersistent());
3355 *was_run = true; 3353 *was_run = true;
3356 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 3354 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
3357 } 3355 }
3358 3356
3359 TEST_F(URLRequestTest, CookiePolicy_ForceSession) { 3357 TEST_F(URLRequestTest, CookiePolicy_ForceSession) {
3360 LocalHttpTestServer test_server; 3358 LocalHttpTestServer test_server;
3361 ASSERT_TRUE(test_server.Start()); 3359 ASSERT_TRUE(test_server.Start());
3362 3360
3363 // Set up a cookie. 3361 // Set up a cookie.
3364 { 3362 {
3365 TestNetworkDelegate network_delegate; 3363 TestNetworkDelegate network_delegate;
3366 default_context_->set_network_delegate(&network_delegate); 3364 default_context_.set_network_delegate(&network_delegate);
3367 TestDelegate d; 3365 TestDelegate d;
3368 network_delegate.set_cookie_options(TestNetworkDelegate::FORCE_SESSION); 3366 network_delegate.set_cookie_options(TestNetworkDelegate::FORCE_SESSION);
3369 URLRequest req(test_server.GetURL( 3367 URLRequest req(test_server.GetURL(
3370 "set-cookie?A=1;expires=\"Fri, 05 Feb 2010 23:42:01 GMT\""), &d); 3368 "set-cookie?A=1;expires=\"Fri, 05 Feb 2010 23:42:01 GMT\""), &d);
3371 req.set_context(default_context_); 3369 req.set_context(&default_context_);
3372 req.Start(); // Triggers an asynchronous cookie policy check. 3370 req.Start(); // Triggers an asynchronous cookie policy check.
3373 3371
3374 MessageLoop::current()->Run(); 3372 MessageLoop::current()->Run();
3375 3373
3376 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); 3374 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count());
3377 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); 3375 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count());
3378 } 3376 }
3379 default_context_->set_network_delegate(&default_network_delegate_); 3377 default_context_.set_network_delegate(&default_network_delegate_);
3380 3378
3381 // Now, check the cookie store. 3379 // Now, check the cookie store.
3382 bool was_run = false; 3380 bool was_run = false;
3383 default_context_->cookie_store()->GetCookieMonster()->GetAllCookiesAsync( 3381 default_context_.cookie_store()->GetCookieMonster()->GetAllCookiesAsync(
3384 base::Bind(&CheckCookiePolicyCallback, &was_run)); 3382 base::Bind(&CheckCookiePolicyCallback, &was_run));
3385 MessageLoop::current()->RunAllPending(); 3383 MessageLoop::current()->RunAllPending();
3386 DCHECK(was_run); 3384 DCHECK(was_run);
3387 } 3385 }
3388 3386
3389 // In this test, we do a POST which the server will 302 redirect. 3387 // In this test, we do a POST which the server will 302 redirect.
3390 // The subsequent transaction should use GET, and should not send the 3388 // The subsequent transaction should use GET, and should not send the
3391 // Content-Type header. 3389 // Content-Type header.
3392 // http://code.google.com/p/chromium/issues/detail?id=843 3390 // http://code.google.com/p/chromium/issues/detail?id=843
3393 TEST_F(URLRequestTestHTTP, Post302RedirectGet) { 3391 TEST_F(URLRequestTestHTTP, Post302RedirectGet) {
3394 ASSERT_TRUE(test_server_.Start()); 3392 ASSERT_TRUE(test_server_.Start());
3395 3393
3396 const char kData[] = "hello world"; 3394 const char kData[] = "hello world";
3397 3395
3398 TestDelegate d; 3396 TestDelegate d;
3399 TestURLRequest req(test_server_.GetURL("files/redirect-to-echoall"), &d); 3397 TestURLRequest req(test_server_.GetURL("files/redirect-to-echoall"), &d);
3400 req.set_context(default_context_); 3398 req.set_context(&default_context_);
3401 req.set_method("POST"); 3399 req.set_method("POST");
3402 req.set_upload(CreateSimpleUploadData(kData)); 3400 req.set_upload(CreateSimpleUploadData(kData));
3403 3401
3404 // Set headers (some of which are specific to the POST). 3402 // Set headers (some of which are specific to the POST).
3405 HttpRequestHeaders headers; 3403 HttpRequestHeaders headers;
3406 headers.AddHeadersFromString( 3404 headers.AddHeadersFromString(
3407 "Content-Type: multipart/form-data; " 3405 "Content-Type: multipart/form-data; "
3408 "boundary=----WebKitFormBoundaryAADeAA+NAAWMAAwZ\r\n" 3406 "boundary=----WebKitFormBoundaryAADeAA+NAAWMAAwZ\r\n"
3409 "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9," 3407 "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,"
3410 "text/plain;q=0.8,image/png,*/*;q=0.5\r\n" 3408 "text/plain;q=0.8,image/png,*/*;q=0.5\r\n"
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 HTTPRedirectMethodTest(url, "HEAD", "HEAD", false); 3475 HTTPRedirectMethodTest(url, "HEAD", "HEAD", false);
3478 } 3476 }
3479 3477
3480 TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { 3478 TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) {
3481 ASSERT_TRUE(test_server_.Start()); 3479 ASSERT_TRUE(test_server_.Start());
3482 3480
3483 const char kData[] = "hello world"; 3481 const char kData[] = "hello world";
3484 3482
3485 TestDelegate d; 3483 TestDelegate d;
3486 TestURLRequest req(test_server_.GetURL("empty.html"), &d); 3484 TestURLRequest req(test_server_.GetURL("empty.html"), &d);
3487 req.set_context(default_context_); 3485 req.set_context(&default_context_);
3488 req.set_method("POST"); 3486 req.set_method("POST");
3489 req.set_upload(CreateSimpleUploadData(kData).get()); 3487 req.set_upload(CreateSimpleUploadData(kData).get());
3490 HttpRequestHeaders headers; 3488 HttpRequestHeaders headers;
3491 headers.SetHeader(HttpRequestHeaders::kContentLength, 3489 headers.SetHeader(HttpRequestHeaders::kContentLength,
3492 base::UintToString(arraysize(kData) - 1)); 3490 base::UintToString(arraysize(kData) - 1));
3493 req.SetExtraRequestHeaders(headers); 3491 req.SetExtraRequestHeaders(headers);
3494 3492
3495 URLRequestRedirectJob* job = 3493 URLRequestRedirectJob* job =
3496 new URLRequestRedirectJob(&req, test_server_.GetURL("echo")); 3494 new URLRequestRedirectJob(&req, test_server_.GetURL("echo"));
3497 AddTestInterceptor()->set_main_intercept_job(job); 3495 AddTestInterceptor()->set_main_intercept_job(job);
3498 3496
3499 req.Start(); 3497 req.Start();
3500 MessageLoop::current()->Run(); 3498 MessageLoop::current()->Run();
3501 EXPECT_EQ("GET", req.method()); 3499 EXPECT_EQ("GET", req.method());
3502 } 3500 }
3503 3501
3504 TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) { 3502 TEST_F(URLRequestTestHTTP, InterceptPost307RedirectPost) {
3505 ASSERT_TRUE(test_server_.Start()); 3503 ASSERT_TRUE(test_server_.Start());
3506 3504
3507 const char kData[] = "hello world"; 3505 const char kData[] = "hello world";
3508 3506
3509 TestDelegate d; 3507 TestDelegate d;
3510 TestURLRequest req(test_server_.GetURL("empty.html"), &d); 3508 TestURLRequest req(test_server_.GetURL("empty.html"), &d);
3511 req.set_context(default_context_); 3509 req.set_context(&default_context_);
3512 req.set_method("POST"); 3510 req.set_method("POST");
3513 req.set_upload(CreateSimpleUploadData(kData).get()); 3511 req.set_upload(CreateSimpleUploadData(kData).get());
3514 HttpRequestHeaders headers; 3512 HttpRequestHeaders headers;
3515 headers.SetHeader(HttpRequestHeaders::kContentLength, 3513 headers.SetHeader(HttpRequestHeaders::kContentLength,
3516 base::UintToString(arraysize(kData) - 1)); 3514 base::UintToString(arraysize(kData) - 1));
3517 req.SetExtraRequestHeaders(headers); 3515 req.SetExtraRequestHeaders(headers);
3518 3516
3519 URLRequestRedirectJob* job = 3517 URLRequestRedirectJob* job =
3520 new URLRequestRedirectJob(&req, test_server_.GetURL("echo")); 3518 new URLRequestRedirectJob(&req, test_server_.GetURL("echo"));
3521 job->set_redirect_code( 3519 job->set_redirect_code(
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
3721 TEST_F(URLRequestTest, Intercept) { 3719 TEST_F(URLRequestTest, Intercept) {
3722 TestInterceptor interceptor; 3720 TestInterceptor interceptor;
3723 3721
3724 // intercept the main request and respond with a simple response 3722 // intercept the main request and respond with a simple response
3725 interceptor.intercept_main_request_ = true; 3723 interceptor.intercept_main_request_ = true;
3726 interceptor.main_headers_ = TestInterceptor::ok_headers(); 3724 interceptor.main_headers_ = TestInterceptor::ok_headers();
3727 interceptor.main_data_ = TestInterceptor::ok_data(); 3725 interceptor.main_data_ = TestInterceptor::ok_data();
3728 3726
3729 TestDelegate d; 3727 TestDelegate d;
3730 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3728 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3731 req.set_context(default_context_); 3729 req.set_context(&default_context_);
3732 base::SupportsUserData::Data* user_data0 = new base::SupportsUserData::Data(); 3730 base::SupportsUserData::Data* user_data0 = new base::SupportsUserData::Data();
3733 base::SupportsUserData::Data* user_data1 = new base::SupportsUserData::Data(); 3731 base::SupportsUserData::Data* user_data1 = new base::SupportsUserData::Data();
3734 base::SupportsUserData::Data* user_data2 = new base::SupportsUserData::Data(); 3732 base::SupportsUserData::Data* user_data2 = new base::SupportsUserData::Data();
3735 req.SetUserData(NULL, user_data0); 3733 req.SetUserData(NULL, user_data0);
3736 req.SetUserData(&user_data1, user_data1); 3734 req.SetUserData(&user_data1, user_data1);
3737 req.SetUserData(&user_data2, user_data2); 3735 req.SetUserData(&user_data2, user_data2);
3738 req.set_method("GET"); 3736 req.set_method("GET");
3739 req.Start(); 3737 req.Start();
3740 MessageLoop::current()->Run(); 3738 MessageLoop::current()->Run();
3741 3739
(...skipping 21 matching lines...) Expand all
3763 interceptor.main_headers_ = TestInterceptor::redirect_headers(); 3761 interceptor.main_headers_ = TestInterceptor::redirect_headers();
3764 interceptor.main_data_ = TestInterceptor::redirect_data(); 3762 interceptor.main_data_ = TestInterceptor::redirect_data();
3765 3763
3766 // intercept that redirect and respond a final OK response 3764 // intercept that redirect and respond a final OK response
3767 interceptor.intercept_redirect_ = true; 3765 interceptor.intercept_redirect_ = true;
3768 interceptor.redirect_headers_ = TestInterceptor::ok_headers(); 3766 interceptor.redirect_headers_ = TestInterceptor::ok_headers();
3769 interceptor.redirect_data_ = TestInterceptor::ok_data(); 3767 interceptor.redirect_data_ = TestInterceptor::ok_data();
3770 3768
3771 TestDelegate d; 3769 TestDelegate d;
3772 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3770 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3773 req.set_context(default_context_); 3771 req.set_context(&default_context_);
3774 req.set_method("GET"); 3772 req.set_method("GET");
3775 req.Start(); 3773 req.Start();
3776 MessageLoop::current()->Run(); 3774 MessageLoop::current()->Run();
3777 3775
3778 // Check the interceptor got called as expected 3776 // Check the interceptor got called as expected
3779 EXPECT_TRUE(interceptor.did_intercept_main_); 3777 EXPECT_TRUE(interceptor.did_intercept_main_);
3780 EXPECT_TRUE(interceptor.did_intercept_redirect_); 3778 EXPECT_TRUE(interceptor.did_intercept_redirect_);
3781 3779
3782 // Check we got one good response 3780 // Check we got one good response
3783 EXPECT_TRUE(req.status().is_success()); 3781 EXPECT_TRUE(req.status().is_success());
(...skipping 13 matching lines...) Expand all
3797 interceptor.main_headers_ = TestInterceptor::error_headers(); 3795 interceptor.main_headers_ = TestInterceptor::error_headers();
3798 interceptor.main_data_ = TestInterceptor::error_data(); 3796 interceptor.main_data_ = TestInterceptor::error_data();
3799 3797
3800 // intercept that error and respond with an OK response 3798 // intercept that error and respond with an OK response
3801 interceptor.intercept_final_response_ = true; 3799 interceptor.intercept_final_response_ = true;
3802 interceptor.final_headers_ = TestInterceptor::ok_headers(); 3800 interceptor.final_headers_ = TestInterceptor::ok_headers();
3803 interceptor.final_data_ = TestInterceptor::ok_data(); 3801 interceptor.final_data_ = TestInterceptor::ok_data();
3804 3802
3805 TestDelegate d; 3803 TestDelegate d;
3806 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3804 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3807 req.set_context(default_context_); 3805 req.set_context(&default_context_);
3808 req.set_method("GET"); 3806 req.set_method("GET");
3809 req.Start(); 3807 req.Start();
3810 MessageLoop::current()->Run(); 3808 MessageLoop::current()->Run();
3811 3809
3812 // Check the interceptor got called as expected 3810 // Check the interceptor got called as expected
3813 EXPECT_TRUE(interceptor.did_intercept_main_); 3811 EXPECT_TRUE(interceptor.did_intercept_main_);
3814 EXPECT_TRUE(interceptor.did_intercept_final_); 3812 EXPECT_TRUE(interceptor.did_intercept_final_);
3815 3813
3816 // Check we got one good response 3814 // Check we got one good response
3817 EXPECT_TRUE(req.status().is_success()); 3815 EXPECT_TRUE(req.status().is_success());
3818 EXPECT_EQ(200, req.response_headers()->response_code()); 3816 EXPECT_EQ(200, req.response_headers()->response_code());
3819 EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); 3817 EXPECT_EQ(TestInterceptor::ok_data(), d.data_received());
3820 EXPECT_EQ(1, d.response_started_count()); 3818 EXPECT_EQ(1, d.response_started_count());
3821 EXPECT_EQ(0, d.received_redirect_count()); 3819 EXPECT_EQ(0, d.received_redirect_count());
3822 } 3820 }
3823 3821
3824 TEST_F(URLRequestTest, InterceptNetworkError) { 3822 TEST_F(URLRequestTest, InterceptNetworkError) {
3825 TestInterceptor interceptor; 3823 TestInterceptor interceptor;
3826 3824
3827 // intercept the main request to simulate a network error 3825 // intercept the main request to simulate a network error
3828 interceptor.simulate_main_network_error_ = true; 3826 interceptor.simulate_main_network_error_ = true;
3829 3827
3830 // intercept that error and respond with an OK response 3828 // intercept that error and respond with an OK response
3831 interceptor.intercept_final_response_ = true; 3829 interceptor.intercept_final_response_ = true;
3832 interceptor.final_headers_ = TestInterceptor::ok_headers(); 3830 interceptor.final_headers_ = TestInterceptor::ok_headers();
3833 interceptor.final_data_ = TestInterceptor::ok_data(); 3831 interceptor.final_data_ = TestInterceptor::ok_data();
3834 3832
3835 TestDelegate d; 3833 TestDelegate d;
3836 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3834 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3837 req.set_context(default_context_); 3835 req.set_context(&default_context_);
3838 req.set_method("GET"); 3836 req.set_method("GET");
3839 req.Start(); 3837 req.Start();
3840 MessageLoop::current()->Run(); 3838 MessageLoop::current()->Run();
3841 3839
3842 // Check the interceptor got called as expected 3840 // Check the interceptor got called as expected
3843 EXPECT_TRUE(interceptor.did_simulate_error_main_); 3841 EXPECT_TRUE(interceptor.did_simulate_error_main_);
3844 EXPECT_TRUE(interceptor.did_intercept_final_); 3842 EXPECT_TRUE(interceptor.did_intercept_final_);
3845 3843
3846 // Check we received one good response 3844 // Check we received one good response
3847 EXPECT_TRUE(req.status().is_success()); 3845 EXPECT_TRUE(req.status().is_success());
3848 EXPECT_EQ(200, req.response_headers()->response_code()); 3846 EXPECT_EQ(200, req.response_headers()->response_code());
3849 EXPECT_EQ(TestInterceptor::ok_data(), d.data_received()); 3847 EXPECT_EQ(TestInterceptor::ok_data(), d.data_received());
3850 EXPECT_EQ(1, d.response_started_count()); 3848 EXPECT_EQ(1, d.response_started_count());
3851 EXPECT_EQ(0, d.received_redirect_count()); 3849 EXPECT_EQ(0, d.received_redirect_count());
3852 } 3850 }
3853 3851
3854 TEST_F(URLRequestTest, InterceptRestartRequired) { 3852 TEST_F(URLRequestTest, InterceptRestartRequired) {
3855 TestInterceptor interceptor; 3853 TestInterceptor interceptor;
3856 3854
3857 // restart the main request 3855 // restart the main request
3858 interceptor.restart_main_request_ = true; 3856 interceptor.restart_main_request_ = true;
3859 3857
3860 // then intercept the new main request and respond with an OK response 3858 // then intercept the new main request and respond with an OK response
3861 interceptor.intercept_main_request_ = true; 3859 interceptor.intercept_main_request_ = true;
3862 interceptor.main_headers_ = TestInterceptor::ok_headers(); 3860 interceptor.main_headers_ = TestInterceptor::ok_headers();
3863 interceptor.main_data_ = TestInterceptor::ok_data(); 3861 interceptor.main_data_ = TestInterceptor::ok_data();
3864 3862
3865 TestDelegate d; 3863 TestDelegate d;
3866 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3864 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3867 req.set_context(default_context_); 3865 req.set_context(&default_context_);
3868 req.set_method("GET"); 3866 req.set_method("GET");
3869 req.Start(); 3867 req.Start();
3870 MessageLoop::current()->Run(); 3868 MessageLoop::current()->Run();
3871 3869
3872 // Check the interceptor got called as expected 3870 // Check the interceptor got called as expected
3873 EXPECT_TRUE(interceptor.did_restart_main_); 3871 EXPECT_TRUE(interceptor.did_restart_main_);
3874 EXPECT_TRUE(interceptor.did_intercept_main_); 3872 EXPECT_TRUE(interceptor.did_intercept_main_);
3875 3873
3876 // Check we received one good response 3874 // Check we received one good response
3877 EXPECT_TRUE(req.status().is_success()); 3875 EXPECT_TRUE(req.status().is_success());
(...skipping 11 matching lines...) Expand all
3889 // intercept the main request and cancel from within the restarted job 3887 // intercept the main request and cancel from within the restarted job
3890 interceptor.cancel_main_request_ = true; 3888 interceptor.cancel_main_request_ = true;
3891 3889
3892 // setup to intercept final response and override it with an OK response 3890 // setup to intercept final response and override it with an OK response
3893 interceptor.intercept_final_response_ = true; 3891 interceptor.intercept_final_response_ = true;
3894 interceptor.final_headers_ = TestInterceptor::ok_headers(); 3892 interceptor.final_headers_ = TestInterceptor::ok_headers();
3895 interceptor.final_data_ = TestInterceptor::ok_data(); 3893 interceptor.final_data_ = TestInterceptor::ok_data();
3896 3894
3897 TestDelegate d; 3895 TestDelegate d;
3898 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3896 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3899 req.set_context(default_context_); 3897 req.set_context(&default_context_);
3900 req.set_method("GET"); 3898 req.set_method("GET");
3901 req.Start(); 3899 req.Start();
3902 MessageLoop::current()->Run(); 3900 MessageLoop::current()->Run();
3903 3901
3904 // Check the interceptor got called as expected 3902 // Check the interceptor got called as expected
3905 EXPECT_TRUE(interceptor.did_cancel_main_); 3903 EXPECT_TRUE(interceptor.did_cancel_main_);
3906 EXPECT_FALSE(interceptor.did_intercept_final_); 3904 EXPECT_FALSE(interceptor.did_intercept_final_);
3907 3905
3908 // Check we see a canceled request 3906 // Check we see a canceled request
3909 EXPECT_FALSE(req.status().is_success()); 3907 EXPECT_FALSE(req.status().is_success());
(...skipping 11 matching lines...) Expand all
3921 // intercept the redirect and cancel from within that job 3919 // intercept the redirect and cancel from within that job
3922 interceptor.cancel_redirect_request_ = true; 3920 interceptor.cancel_redirect_request_ = true;
3923 3921
3924 // setup to intercept final response and override it with an OK response 3922 // setup to intercept final response and override it with an OK response
3925 interceptor.intercept_final_response_ = true; 3923 interceptor.intercept_final_response_ = true;
3926 interceptor.final_headers_ = TestInterceptor::ok_headers(); 3924 interceptor.final_headers_ = TestInterceptor::ok_headers();
3927 interceptor.final_data_ = TestInterceptor::ok_data(); 3925 interceptor.final_data_ = TestInterceptor::ok_data();
3928 3926
3929 TestDelegate d; 3927 TestDelegate d;
3930 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3928 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3931 req.set_context(default_context_); 3929 req.set_context(&default_context_);
3932 req.set_method("GET"); 3930 req.set_method("GET");
3933 req.Start(); 3931 req.Start();
3934 MessageLoop::current()->Run(); 3932 MessageLoop::current()->Run();
3935 3933
3936 // Check the interceptor got called as expected 3934 // Check the interceptor got called as expected
3937 EXPECT_TRUE(interceptor.did_intercept_main_); 3935 EXPECT_TRUE(interceptor.did_intercept_main_);
3938 EXPECT_TRUE(interceptor.did_cancel_redirect_); 3936 EXPECT_TRUE(interceptor.did_cancel_redirect_);
3939 EXPECT_FALSE(interceptor.did_intercept_final_); 3937 EXPECT_FALSE(interceptor.did_intercept_final_);
3940 3938
3941 // Check we see a canceled request 3939 // Check we see a canceled request
3942 EXPECT_FALSE(req.status().is_success()); 3940 EXPECT_FALSE(req.status().is_success());
3943 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); 3941 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
3944 } 3942 }
3945 3943
3946 TEST_F(URLRequestTest, InterceptRespectsCancelFinal) { 3944 TEST_F(URLRequestTest, InterceptRespectsCancelFinal) {
3947 TestInterceptor interceptor; 3945 TestInterceptor interceptor;
3948 3946
3949 // intercept the main request to simulate a network error 3947 // intercept the main request to simulate a network error
3950 interceptor.simulate_main_network_error_ = true; 3948 interceptor.simulate_main_network_error_ = true;
3951 3949
3952 // setup to intercept final response and cancel from within that job 3950 // setup to intercept final response and cancel from within that job
3953 interceptor.cancel_final_request_ = true; 3951 interceptor.cancel_final_request_ = true;
3954 3952
3955 TestDelegate d; 3953 TestDelegate d;
3956 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3954 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3957 req.set_context(default_context_); 3955 req.set_context(&default_context_);
3958 req.set_method("GET"); 3956 req.set_method("GET");
3959 req.Start(); 3957 req.Start();
3960 MessageLoop::current()->Run(); 3958 MessageLoop::current()->Run();
3961 3959
3962 // Check the interceptor got called as expected 3960 // Check the interceptor got called as expected
3963 EXPECT_TRUE(interceptor.did_simulate_error_main_); 3961 EXPECT_TRUE(interceptor.did_simulate_error_main_);
3964 EXPECT_TRUE(interceptor.did_cancel_final_); 3962 EXPECT_TRUE(interceptor.did_cancel_final_);
3965 3963
3966 // Check we see a canceled request 3964 // Check we see a canceled request
3967 EXPECT_FALSE(req.status().is_success()); 3965 EXPECT_FALSE(req.status().is_success());
3968 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); 3966 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
3969 } 3967 }
3970 3968
3971 TEST_F(URLRequestTest, InterceptRespectsCancelInRestart) { 3969 TEST_F(URLRequestTest, InterceptRespectsCancelInRestart) {
3972 TestInterceptor interceptor; 3970 TestInterceptor interceptor;
3973 3971
3974 // intercept the main request and cancel then restart from within that job 3972 // intercept the main request and cancel then restart from within that job
3975 interceptor.cancel_then_restart_main_request_ = true; 3973 interceptor.cancel_then_restart_main_request_ = true;
3976 3974
3977 // setup to intercept final response and override it with an OK response 3975 // setup to intercept final response and override it with an OK response
3978 interceptor.intercept_final_response_ = true; 3976 interceptor.intercept_final_response_ = true;
3979 interceptor.final_headers_ = TestInterceptor::ok_headers(); 3977 interceptor.final_headers_ = TestInterceptor::ok_headers();
3980 interceptor.final_data_ = TestInterceptor::ok_data(); 3978 interceptor.final_data_ = TestInterceptor::ok_data();
3981 3979
3982 TestDelegate d; 3980 TestDelegate d;
3983 TestURLRequest req(GURL("http://test_intercept/foo"), &d); 3981 TestURLRequest req(GURL("http://test_intercept/foo"), &d);
3984 req.set_context(default_context_); 3982 req.set_context(&default_context_);
3985 req.set_method("GET"); 3983 req.set_method("GET");
3986 req.Start(); 3984 req.Start();
3987 MessageLoop::current()->Run(); 3985 MessageLoop::current()->Run();
3988 3986
3989 // Check the interceptor got called as expected 3987 // Check the interceptor got called as expected
3990 EXPECT_TRUE(interceptor.did_cancel_then_restart_main_); 3988 EXPECT_TRUE(interceptor.did_cancel_then_restart_main_);
3991 EXPECT_FALSE(interceptor.did_intercept_final_); 3989 EXPECT_FALSE(interceptor.did_intercept_final_);
3992 3990
3993 // Check we see a canceled request 3991 // Check we see a canceled request
3994 EXPECT_FALSE(req.status().is_success()); 3992 EXPECT_FALSE(req.status().is_success());
3995 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status()); 3993 EXPECT_EQ(URLRequestStatus::CANCELED, req.status().status());
3996 } 3994 }
3997 3995
3998 // Check that two different URL requests have different identifiers. 3996 // Check that two different URL requests have different identifiers.
3999 TEST_F(URLRequestTest, Identifiers) { 3997 TEST_F(URLRequestTest, Identifiers) {
4000 TestDelegate d; 3998 TestDelegate d;
4001 TestURLRequest req(GURL("http://example.com"), &d); 3999 TestURLRequest req(GURL("http://example.com"), &d);
4002 TestURLRequest other_req(GURL("http://example.com"), &d); 4000 TestURLRequest other_req(GURL("http://example.com"), &d);
4003 4001
4004 ASSERT_NE(req.identifier(), other_req.identifier()); 4002 ASSERT_NE(req.identifier(), other_req.identifier());
4005 } 4003 }
4006 4004
4007 // Check that a failure to connect to the proxy is reported to the network 4005 // Check that a failure to connect to the proxy is reported to the network
4008 // delegate. 4006 // delegate.
4009 TEST_F(URLRequestTest, NetworkDelegateProxyError) { 4007 TEST_F(URLRequestTest, NetworkDelegateProxyError) {
4010 MockHostResolver host_resolver; 4008 MockHostResolver host_resolver;
4011 host_resolver.rules()->AddSimulatedFailure("*"); 4009 host_resolver.rules()->AddSimulatedFailure("*");
4012 4010
4013 TestNetworkDelegate network_delegate; // must outlive URLRequests 4011 TestNetworkDelegate network_delegate; // must outlive URLRequests
4014 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 4012 TestURLRequestContext context(true);
4015 context->set_network_delegate(&network_delegate); 4013 context.set_network_delegate(&network_delegate);
4016 context->SetProxyFromString("myproxy:70"); 4014 context.SetProxyFromString("myproxy:70");
4017 context->set_host_resolver(&host_resolver); 4015 context.set_host_resolver(&host_resolver);
4018 context->Init(); 4016 context.Init();
4019 4017
4020 TestDelegate d; 4018 TestDelegate d;
4021 TestURLRequest req(GURL("http://example.com"), &d); 4019 TestURLRequest req(GURL("http://example.com"), &d);
4022 req.set_context(context); 4020 req.set_context(&context);
4023 req.set_method("GET"); 4021 req.set_method("GET");
4024 4022
4025 req.Start(); 4023 req.Start();
4026 MessageLoop::current()->Run(); 4024 MessageLoop::current()->Run();
4027 4025
4028 // Check we see a failed request. 4026 // Check we see a failed request.
4029 EXPECT_FALSE(req.status().is_success()); 4027 EXPECT_FALSE(req.status().is_success());
4030 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); 4028 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status());
4031 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, req.status().error()); 4029 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, req.status().error());
4032 4030
4033 EXPECT_EQ(1, network_delegate.error_count()); 4031 EXPECT_EQ(1, network_delegate.error_count());
4034 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, network_delegate.last_error()); 4032 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, network_delegate.last_error());
4035 EXPECT_EQ(1, network_delegate.completed_requests()); 4033 EXPECT_EQ(1, network_delegate.completed_requests());
4036 } 4034 }
4037 4035
4038 // Check that it is impossible to change the referrer in the extra headers of 4036 // Check that it is impossible to change the referrer in the extra headers of
4039 // an URLRequest. 4037 // an URLRequest.
4040 TEST_F(URLRequestTest, DoNotOverrideReferrer) { 4038 TEST_F(URLRequestTest, DoNotOverrideReferrer) {
4041 LocalHttpTestServer test_server; 4039 LocalHttpTestServer test_server;
4042 ASSERT_TRUE(test_server.Start()); 4040 ASSERT_TRUE(test_server.Start());
4043 4041
4044 // If extra headers contain referer and the request contains a referer, 4042 // If extra headers contain referer and the request contains a referer,
4045 // only the latter shall be respected. 4043 // only the latter shall be respected.
4046 { 4044 {
4047 TestDelegate d; 4045 TestDelegate d;
4048 TestURLRequest req(test_server.GetURL("echoheader?Referer"), &d); 4046 TestURLRequest req(test_server.GetURL("echoheader?Referer"), &d);
4049 req.set_referrer("http://foo.com/"); 4047 req.set_referrer("http://foo.com/");
4050 req.set_context(default_context_); 4048 req.set_context(&default_context_);
4051 4049
4052 HttpRequestHeaders headers; 4050 HttpRequestHeaders headers;
4053 headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/"); 4051 headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/");
4054 req.SetExtraRequestHeaders(headers); 4052 req.SetExtraRequestHeaders(headers);
4055 4053
4056 req.Start(); 4054 req.Start();
4057 MessageLoop::current()->Run(); 4055 MessageLoop::current()->Run();
4058 4056
4059 EXPECT_EQ("http://foo.com/", d.data_received()); 4057 EXPECT_EQ("http://foo.com/", d.data_received());
4060 } 4058 }
4061 4059
4062 // If extra headers contain a referer but the request does not, no referer 4060 // If extra headers contain a referer but the request does not, no referer
4063 // shall be sent in the header. 4061 // shall be sent in the header.
4064 { 4062 {
4065 TestDelegate d; 4063 TestDelegate d;
4066 TestURLRequest req(test_server.GetURL("echoheader?Referer"), &d); 4064 TestURLRequest req(test_server.GetURL("echoheader?Referer"), &d);
4067 req.set_context(default_context_); 4065 req.set_context(&default_context_);
4068 4066
4069 HttpRequestHeaders headers; 4067 HttpRequestHeaders headers;
4070 headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/"); 4068 headers.SetHeader(HttpRequestHeaders::kReferer, "http://bar.com/");
4071 req.SetExtraRequestHeaders(headers); 4069 req.SetExtraRequestHeaders(headers);
4072 req.set_load_flags(LOAD_VALIDATE_CACHE); 4070 req.set_load_flags(LOAD_VALIDATE_CACHE);
4073 4071
4074 req.Start(); 4072 req.Start();
4075 MessageLoop::current()->Run(); 4073 MessageLoop::current()->Run();
4076 4074
4077 EXPECT_EQ("None", d.data_received()); 4075 EXPECT_EQ("None", d.data_received());
4078 } 4076 }
4079 } 4077 }
4080 4078
4081 // Make sure that net::NetworkDelegate::NotifyCompleted is called if 4079 // Make sure that net::NetworkDelegate::NotifyCompleted is called if
4082 // content is empty. 4080 // content is empty.
4083 TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { 4081 TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) {
4084 TestDelegate d; 4082 TestDelegate d;
4085 TestURLRequest req(GURL("data:,"), &d); 4083 TestURLRequest req(GURL("data:,"), &d);
4086 req.set_context(new TestURLRequestContext()); 4084 req.set_context(new TestURLRequestContext());
4087 req.set_context(default_context_); 4085 req.set_context(&default_context_);
4088 req.Start(); 4086 req.Start();
4089 MessageLoop::current()->Run(); 4087 MessageLoop::current()->Run();
4090 EXPECT_EQ("", d.data_received()); 4088 EXPECT_EQ("", d.data_received());
4091 EXPECT_EQ(1, default_network_delegate_.completed_requests()); 4089 EXPECT_EQ(1, default_network_delegate_.completed_requests());
4092 } 4090 }
4093 4091
4094 class URLRequestTestFTP : public URLRequestTest { 4092 class URLRequestTestFTP : public URLRequestTest {
4095 public: 4093 public:
4096 URLRequestTestFTP() 4094 URLRequestTestFTP()
4097 : test_server_(TestServer::TYPE_FTP, TestServer::kLocalhost, FilePath()) { 4095 : test_server_(TestServer::TYPE_FTP, TestServer::kLocalhost, FilePath()) {
4098 } 4096 }
4099 4097
4100 protected: 4098 protected:
4101 TestServer test_server_; 4099 TestServer test_server_;
4102 }; 4100 };
4103 4101
4104 // Flaky, see http://crbug.com/25045. 4102 // Flaky, see http://crbug.com/25045.
4105 TEST_F(URLRequestTestFTP, DISABLED_FTPDirectoryListing) { 4103 TEST_F(URLRequestTestFTP, DISABLED_FTPDirectoryListing) {
4106 ASSERT_TRUE(test_server_.Start()); 4104 ASSERT_TRUE(test_server_.Start());
4107 4105
4108 TestDelegate d; 4106 TestDelegate d;
4109 { 4107 {
4110 TestURLRequest r(test_server_.GetURL("/"), &d); 4108 TestURLRequest r(test_server_.GetURL("/"), &d);
4111 r.set_context(default_context_); 4109 r.set_context(&default_context_);
4112 r.Start(); 4110 r.Start();
4113 EXPECT_TRUE(r.is_pending()); 4111 EXPECT_TRUE(r.is_pending());
4114 4112
4115 MessageLoop::current()->Run(); 4113 MessageLoop::current()->Run();
4116 4114
4117 EXPECT_FALSE(r.is_pending()); 4115 EXPECT_FALSE(r.is_pending());
4118 EXPECT_EQ(1, d.response_started_count()); 4116 EXPECT_EQ(1, d.response_started_count());
4119 EXPECT_FALSE(d.received_data_before_response()); 4117 EXPECT_FALSE(d.received_data_before_response());
4120 EXPECT_LT(0, d.bytes_received()); 4118 EXPECT_LT(0, d.bytes_received());
4121 EXPECT_EQ(test_server_.host_port_pair().host(), 4119 EXPECT_EQ(test_server_.host_port_pair().host(),
4122 r.GetSocketAddress().host()); 4120 r.GetSocketAddress().host());
4123 EXPECT_EQ(test_server_.host_port_pair().port(), 4121 EXPECT_EQ(test_server_.host_port_pair().port(),
4124 r.GetSocketAddress().port()); 4122 r.GetSocketAddress().port());
4125 } 4123 }
4126 } 4124 }
4127 4125
4128 // Flaky, see http://crbug.com/25045. 4126 // Flaky, see http://crbug.com/25045.
4129 TEST_F(URLRequestTestFTP, DISABLED_FTPGetTestAnonymous) { 4127 TEST_F(URLRequestTestFTP, DISABLED_FTPGetTestAnonymous) {
4130 ASSERT_TRUE(test_server_.Start()); 4128 ASSERT_TRUE(test_server_.Start());
4131 4129
4132 FilePath app_path; 4130 FilePath app_path;
4133 PathService::Get(base::DIR_SOURCE_ROOT, &app_path); 4131 PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
4134 app_path = app_path.AppendASCII("LICENSE"); 4132 app_path = app_path.AppendASCII("LICENSE");
4135 TestDelegate d; 4133 TestDelegate d;
4136 { 4134 {
4137 TestURLRequest r(test_server_.GetURL("/LICENSE"), &d); 4135 TestURLRequest r(test_server_.GetURL("/LICENSE"), &d);
4138 r.set_context(default_context_); 4136 r.set_context(&default_context_);
4139 r.Start(); 4137 r.Start();
4140 EXPECT_TRUE(r.is_pending()); 4138 EXPECT_TRUE(r.is_pending());
4141 4139
4142 MessageLoop::current()->Run(); 4140 MessageLoop::current()->Run();
4143 4141
4144 int64 file_size = 0; 4142 int64 file_size = 0;
4145 file_util::GetFileSize(app_path, &file_size); 4143 file_util::GetFileSize(app_path, &file_size);
4146 4144
4147 EXPECT_FALSE(r.is_pending()); 4145 EXPECT_FALSE(r.is_pending());
4148 EXPECT_EQ(1, d.response_started_count()); 4146 EXPECT_EQ(1, d.response_started_count());
(...skipping 11 matching lines...) Expand all
4160 ASSERT_TRUE(test_server_.Start()); 4158 ASSERT_TRUE(test_server_.Start());
4161 4159
4162 FilePath app_path; 4160 FilePath app_path;
4163 PathService::Get(base::DIR_SOURCE_ROOT, &app_path); 4161 PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
4164 app_path = app_path.AppendASCII("LICENSE"); 4162 app_path = app_path.AppendASCII("LICENSE");
4165 TestDelegate d; 4163 TestDelegate d;
4166 { 4164 {
4167 TestURLRequest r( 4165 TestURLRequest r(
4168 test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", "chrome"), 4166 test_server_.GetURLWithUserAndPassword("/LICENSE", "chrome", "chrome"),
4169 &d); 4167 &d);
4170 r.set_context(default_context_); 4168 r.set_context(&default_context_);
4171 r.Start(); 4169 r.Start();
4172 EXPECT_TRUE(r.is_pending()); 4170 EXPECT_TRUE(r.is_pending());
4173 4171
4174 MessageLoop::current()->Run(); 4172 MessageLoop::current()->Run();
4175 4173
4176 int64 file_size = 0; 4174 int64 file_size = 0;
4177 file_util::GetFileSize(app_path, &file_size); 4175 file_util::GetFileSize(app_path, &file_size);
4178 4176
4179 EXPECT_FALSE(r.is_pending()); 4177 EXPECT_FALSE(r.is_pending());
4180 EXPECT_EQ(test_server_.host_port_pair().host(), 4178 EXPECT_EQ(test_server_.host_port_pair().host(),
(...skipping 13 matching lines...) Expand all
4194 FilePath app_path; 4192 FilePath app_path;
4195 PathService::Get(base::DIR_SOURCE_ROOT, &app_path); 4193 PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
4196 app_path = app_path.AppendASCII("LICENSE"); 4194 app_path = app_path.AppendASCII("LICENSE");
4197 TestDelegate d; 4195 TestDelegate d;
4198 { 4196 {
4199 TestURLRequest r( 4197 TestURLRequest r(
4200 test_server_.GetURLWithUserAndPassword("/LICENSE", 4198 test_server_.GetURLWithUserAndPassword("/LICENSE",
4201 "chrome", 4199 "chrome",
4202 "wrong_password"), 4200 "wrong_password"),
4203 &d); 4201 &d);
4204 r.set_context(default_context_); 4202 r.set_context(&default_context_);
4205 r.Start(); 4203 r.Start();
4206 EXPECT_TRUE(r.is_pending()); 4204 EXPECT_TRUE(r.is_pending());
4207 4205
4208 MessageLoop::current()->Run(); 4206 MessageLoop::current()->Run();
4209 4207
4210 int64 file_size = 0; 4208 int64 file_size = 0;
4211 file_util::GetFileSize(app_path, &file_size); 4209 file_util::GetFileSize(app_path, &file_size);
4212 4210
4213 EXPECT_FALSE(r.is_pending()); 4211 EXPECT_FALSE(r.is_pending());
4214 EXPECT_EQ(1, d.response_started_count()); 4212 EXPECT_EQ(1, d.response_started_count());
(...skipping 12 matching lines...) Expand all
4227 TestDelegate d; 4225 TestDelegate d;
4228 // Set correct login credentials. The delegate will be asked for them when 4226 // Set correct login credentials. The delegate will be asked for them when
4229 // the initial login with wrong credentials will fail. 4227 // the initial login with wrong credentials will fail.
4230 d.set_credentials(AuthCredentials(kChrome, kChrome)); 4228 d.set_credentials(AuthCredentials(kChrome, kChrome));
4231 { 4229 {
4232 TestURLRequest r( 4230 TestURLRequest r(
4233 test_server_.GetURLWithUserAndPassword("/LICENSE", 4231 test_server_.GetURLWithUserAndPassword("/LICENSE",
4234 "chrome", 4232 "chrome",
4235 "wrong_password"), 4233 "wrong_password"),
4236 &d); 4234 &d);
4237 r.set_context(default_context_); 4235 r.set_context(&default_context_);
4238 r.Start(); 4236 r.Start();
4239 EXPECT_TRUE(r.is_pending()); 4237 EXPECT_TRUE(r.is_pending());
4240 4238
4241 MessageLoop::current()->Run(); 4239 MessageLoop::current()->Run();
4242 4240
4243 int64 file_size = 0; 4241 int64 file_size = 0;
4244 file_util::GetFileSize(app_path, &file_size); 4242 file_util::GetFileSize(app_path, &file_size);
4245 4243
4246 EXPECT_FALSE(r.is_pending()); 4244 EXPECT_FALSE(r.is_pending());
4247 EXPECT_EQ(1, d.response_started_count()); 4245 EXPECT_EQ(1, d.response_started_count());
4248 EXPECT_FALSE(d.received_data_before_response()); 4246 EXPECT_FALSE(d.received_data_before_response());
4249 EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size)); 4247 EXPECT_EQ(d.bytes_received(), static_cast<int>(file_size));
4250 } 4248 }
4251 } 4249 }
4252 4250
4253 // Flaky, see http://crbug.com/25045. 4251 // Flaky, see http://crbug.com/25045.
4254 TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongUser) { 4252 TEST_F(URLRequestTestFTP, DISABLED_FTPCheckWrongUser) {
4255 ASSERT_TRUE(test_server_.Start()); 4253 ASSERT_TRUE(test_server_.Start());
4256 4254
4257 FilePath app_path; 4255 FilePath app_path;
4258 PathService::Get(base::DIR_SOURCE_ROOT, &app_path); 4256 PathService::Get(base::DIR_SOURCE_ROOT, &app_path);
4259 app_path = app_path.AppendASCII("LICENSE"); 4257 app_path = app_path.AppendASCII("LICENSE");
4260 TestDelegate d; 4258 TestDelegate d;
4261 { 4259 {
4262 TestURLRequest r( 4260 TestURLRequest r(
4263 test_server_.GetURLWithUserAndPassword("/LICENSE", 4261 test_server_.GetURLWithUserAndPassword("/LICENSE",
4264 "wrong_user", 4262 "wrong_user",
4265 "chrome"), 4263 "chrome"),
4266 &d); 4264 &d);
4267 r.set_context(default_context_); 4265 r.set_context(&default_context_);
4268 r.Start(); 4266 r.Start();
4269 EXPECT_TRUE(r.is_pending()); 4267 EXPECT_TRUE(r.is_pending());
4270 4268
4271 MessageLoop::current()->Run(); 4269 MessageLoop::current()->Run();
4272 4270
4273 int64 file_size = 0; 4271 int64 file_size = 0;
4274 file_util::GetFileSize(app_path, &file_size); 4272 file_util::GetFileSize(app_path, &file_size);
4275 4273
4276 EXPECT_FALSE(r.is_pending()); 4274 EXPECT_FALSE(r.is_pending());
4277 EXPECT_EQ(1, d.response_started_count()); 4275 EXPECT_EQ(1, d.response_started_count());
(...skipping 12 matching lines...) Expand all
4290 TestDelegate d; 4288 TestDelegate d;
4291 // Set correct login credentials. The delegate will be asked for them when 4289 // Set correct login credentials. The delegate will be asked for them when
4292 // the initial login with wrong credentials will fail. 4290 // the initial login with wrong credentials will fail.
4293 d.set_credentials(AuthCredentials(kChrome, kChrome)); 4291 d.set_credentials(AuthCredentials(kChrome, kChrome));
4294 { 4292 {
4295 TestURLRequest r( 4293 TestURLRequest r(
4296 test_server_.GetURLWithUserAndPassword("/LICENSE", 4294 test_server_.GetURLWithUserAndPassword("/LICENSE",
4297 "wrong_user", 4295 "wrong_user",
4298 "chrome"), 4296 "chrome"),
4299 &d); 4297 &d);
4300 r.set_context(default_context_); 4298 r.set_context(&default_context_);
4301 r.Start(); 4299 r.Start();
4302 EXPECT_TRUE(r.is_pending()); 4300 EXPECT_TRUE(r.is_pending());
4303 4301
4304 MessageLoop::current()->Run(); 4302 MessageLoop::current()->Run();
4305 4303
4306 int64 file_size = 0; 4304 int64 file_size = 0;
4307 file_util::GetFileSize(app_path, &file_size); 4305 file_util::GetFileSize(app_path, &file_size);
4308 4306
4309 EXPECT_FALSE(r.is_pending()); 4307 EXPECT_FALSE(r.is_pending());
4310 EXPECT_EQ(1, d.response_started_count()); 4308 EXPECT_EQ(1, d.response_started_count());
(...skipping 11 matching lines...) Expand all
4322 app_path = app_path.AppendASCII("LICENSE"); 4320 app_path = app_path.AppendASCII("LICENSE");
4323 4321
4324 scoped_ptr<TestDelegate> d(new TestDelegate); 4322 scoped_ptr<TestDelegate> d(new TestDelegate);
4325 { 4323 {
4326 // Pass correct login identity in the URL. 4324 // Pass correct login identity in the URL.
4327 TestURLRequest r( 4325 TestURLRequest r(
4328 test_server_.GetURLWithUserAndPassword("/LICENSE", 4326 test_server_.GetURLWithUserAndPassword("/LICENSE",
4329 "chrome", 4327 "chrome",
4330 "chrome"), 4328 "chrome"),
4331 d.get()); 4329 d.get());
4332 r.set_context(default_context_); 4330 r.set_context(&default_context_);
4333 r.Start(); 4331 r.Start();
4334 EXPECT_TRUE(r.is_pending()); 4332 EXPECT_TRUE(r.is_pending());
4335 4333
4336 MessageLoop::current()->Run(); 4334 MessageLoop::current()->Run();
4337 4335
4338 int64 file_size = 0; 4336 int64 file_size = 0;
4339 file_util::GetFileSize(app_path, &file_size); 4337 file_util::GetFileSize(app_path, &file_size);
4340 4338
4341 EXPECT_FALSE(r.is_pending()); 4339 EXPECT_FALSE(r.is_pending());
4342 EXPECT_EQ(1, d->response_started_count()); 4340 EXPECT_EQ(1, d->response_started_count());
4343 EXPECT_FALSE(d->received_data_before_response()); 4341 EXPECT_FALSE(d->received_data_before_response());
4344 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); 4342 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size));
4345 } 4343 }
4346 4344
4347 d.reset(new TestDelegate); 4345 d.reset(new TestDelegate);
4348 { 4346 {
4349 // This request should use cached identity from previous request. 4347 // This request should use cached identity from previous request.
4350 TestURLRequest r(test_server_.GetURL("/LICENSE"), d.get()); 4348 TestURLRequest r(test_server_.GetURL("/LICENSE"), d.get());
4351 r.set_context(default_context_); 4349 r.set_context(&default_context_);
4352 r.Start(); 4350 r.Start();
4353 EXPECT_TRUE(r.is_pending()); 4351 EXPECT_TRUE(r.is_pending());
4354 4352
4355 MessageLoop::current()->Run(); 4353 MessageLoop::current()->Run();
4356 4354
4357 int64 file_size = 0; 4355 int64 file_size = 0;
4358 file_util::GetFileSize(app_path, &file_size); 4356 file_util::GetFileSize(app_path, &file_size);
4359 4357
4360 EXPECT_FALSE(r.is_pending()); 4358 EXPECT_FALSE(r.is_pending());
4361 EXPECT_EQ(1, d->response_started_count()); 4359 EXPECT_EQ(1, d->response_started_count());
(...skipping 13 matching lines...) Expand all
4375 scoped_ptr<TestDelegate> d(new TestDelegate); 4373 scoped_ptr<TestDelegate> d(new TestDelegate);
4376 // Set correct login credentials. The delegate will be asked for them when 4374 // Set correct login credentials. The delegate will be asked for them when
4377 // the initial login with wrong credentials will fail. 4375 // the initial login with wrong credentials will fail.
4378 d->set_credentials(AuthCredentials(kChrome, kChrome)); 4376 d->set_credentials(AuthCredentials(kChrome, kChrome));
4379 { 4377 {
4380 TestURLRequest r( 4378 TestURLRequest r(
4381 test_server_.GetURLWithUserAndPassword("/LICENSE", 4379 test_server_.GetURLWithUserAndPassword("/LICENSE",
4382 "chrome", 4380 "chrome",
4383 "wrong_password"), 4381 "wrong_password"),
4384 d.get()); 4382 d.get());
4385 r.set_context(default_context_); 4383 r.set_context(&default_context_);
4386 r.Start(); 4384 r.Start();
4387 EXPECT_TRUE(r.is_pending()); 4385 EXPECT_TRUE(r.is_pending());
4388 4386
4389 MessageLoop::current()->Run(); 4387 MessageLoop::current()->Run();
4390 4388
4391 int64 file_size = 0; 4389 int64 file_size = 0;
4392 file_util::GetFileSize(app_path, &file_size); 4390 file_util::GetFileSize(app_path, &file_size);
4393 4391
4394 EXPECT_FALSE(r.is_pending()); 4392 EXPECT_FALSE(r.is_pending());
4395 EXPECT_EQ(1, d->response_started_count()); 4393 EXPECT_EQ(1, d->response_started_count());
4396 EXPECT_FALSE(d->received_data_before_response()); 4394 EXPECT_FALSE(d->received_data_before_response());
4397 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); 4395 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size));
4398 } 4396 }
4399 4397
4400 // Use a new delegate without explicit credentials. The cached ones should be 4398 // Use a new delegate without explicit credentials. The cached ones should be
4401 // used. 4399 // used.
4402 d.reset(new TestDelegate); 4400 d.reset(new TestDelegate);
4403 { 4401 {
4404 // Don't pass wrong credentials in the URL, they would override valid cached 4402 // Don't pass wrong credentials in the URL, they would override valid cached
4405 // ones. 4403 // ones.
4406 TestURLRequest r(test_server_.GetURL("/LICENSE"), d.get()); 4404 TestURLRequest r(test_server_.GetURL("/LICENSE"), d.get());
4407 r.set_context(default_context_); 4405 r.set_context(&default_context_);
4408 r.Start(); 4406 r.Start();
4409 EXPECT_TRUE(r.is_pending()); 4407 EXPECT_TRUE(r.is_pending());
4410 4408
4411 MessageLoop::current()->Run(); 4409 MessageLoop::current()->Run();
4412 4410
4413 int64 file_size = 0; 4411 int64 file_size = 0;
4414 file_util::GetFileSize(app_path, &file_size); 4412 file_util::GetFileSize(app_path, &file_size);
4415 4413
4416 EXPECT_FALSE(r.is_pending()); 4414 EXPECT_FALSE(r.is_pending());
4417 EXPECT_EQ(1, d->response_started_count()); 4415 EXPECT_EQ(1, d->response_started_count());
4418 EXPECT_FALSE(d->received_data_before_response()); 4416 EXPECT_FALSE(d->received_data_before_response());
4419 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); 4417 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size));
4420 } 4418 }
4421 } 4419 }
4422 4420
4423 // Check that default A-L header is sent. 4421 // Check that default A-L header is sent.
4424 TEST_F(URLRequestTestHTTP, DefaultAcceptLanguage) { 4422 TEST_F(URLRequestTestHTTP, DefaultAcceptLanguage) {
4425 ASSERT_TRUE(test_server_.Start()); 4423 ASSERT_TRUE(test_server_.Start());
4426 4424
4427 TestNetworkDelegate network_delegate; // must outlive URLRequests 4425 TestNetworkDelegate network_delegate; // must outlive URLRequests
4428 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 4426 TestURLRequestContext context(true);
4429 context->set_network_delegate(&network_delegate); 4427 context.set_network_delegate(&network_delegate);
4430 context->set_accept_language("en"); 4428 context.set_accept_language("en");
4431 context->Init(); 4429 context.Init();
4432 4430
4433 TestDelegate d; 4431 TestDelegate d;
4434 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d); 4432 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d);
4435 req.set_context(context); 4433 req.set_context(&context);
4436 req.Start(); 4434 req.Start();
4437 MessageLoop::current()->Run(); 4435 MessageLoop::current()->Run();
4438 EXPECT_EQ("en", d.data_received()); 4436 EXPECT_EQ("en", d.data_received());
4439 } 4437 }
4440 4438
4441 // Check that an empty A-L header is not sent. http://crbug.com/77365. 4439 // Check that an empty A-L header is not sent. http://crbug.com/77365.
4442 TEST_F(URLRequestTestHTTP, EmptyAcceptLanguage) { 4440 TEST_F(URLRequestTestHTTP, EmptyAcceptLanguage) {
4443 ASSERT_TRUE(test_server_.Start()); 4441 ASSERT_TRUE(test_server_.Start());
4444 4442
4445 TestNetworkDelegate network_delegate; // must outlive URLRequests 4443 TestNetworkDelegate network_delegate; // must outlive URLRequests
4446 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 4444 TestURLRequestContext context(true);
4447 context->set_network_delegate(&network_delegate); 4445 context.set_network_delegate(&network_delegate);
4448 context->Init(); 4446 context.Init();
4449 // We override the language after initialization because empty entries 4447 // We override the language after initialization because empty entries
4450 // get overridden by Init(). 4448 // get overridden by Init().
4451 context->set_accept_language(""); 4449 context.set_accept_language("");
4452 4450
4453 TestDelegate d; 4451 TestDelegate d;
4454 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d); 4452 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d);
4455 req.set_context(context); 4453 req.set_context(&context);
4456 req.Start(); 4454 req.Start();
4457 MessageLoop::current()->Run(); 4455 MessageLoop::current()->Run();
4458 EXPECT_EQ("None", d.data_received()); 4456 EXPECT_EQ("None", d.data_received());
4459 } 4457 }
4460 4458
4461 // Check that if request overrides the A-L header, the default is not appended. 4459 // Check that if request overrides the A-L header, the default is not appended.
4462 // See http://crbug.com/20894 4460 // See http://crbug.com/20894
4463 TEST_F(URLRequestTestHTTP, OverrideAcceptLanguage) { 4461 TEST_F(URLRequestTestHTTP, OverrideAcceptLanguage) {
4464 ASSERT_TRUE(test_server_.Start()); 4462 ASSERT_TRUE(test_server_.Start());
4465 4463
4466 TestDelegate d; 4464 TestDelegate d;
4467 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d); 4465 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Language"), &d);
4468 req.set_context(default_context_); 4466 req.set_context(&default_context_);
4469 HttpRequestHeaders headers; 4467 HttpRequestHeaders headers;
4470 headers.SetHeader(HttpRequestHeaders::kAcceptLanguage, "ru"); 4468 headers.SetHeader(HttpRequestHeaders::kAcceptLanguage, "ru");
4471 req.SetExtraRequestHeaders(headers); 4469 req.SetExtraRequestHeaders(headers);
4472 req.Start(); 4470 req.Start();
4473 MessageLoop::current()->Run(); 4471 MessageLoop::current()->Run();
4474 EXPECT_EQ(std::string("ru"), d.data_received()); 4472 EXPECT_EQ(std::string("ru"), d.data_received());
4475 } 4473 }
4476 4474
4477 // Check that default A-E header is sent. 4475 // Check that default A-E header is sent.
4478 TEST_F(URLRequestTestHTTP, DefaultAcceptEncoding) { 4476 TEST_F(URLRequestTestHTTP, DefaultAcceptEncoding) {
4479 ASSERT_TRUE(test_server_.Start()); 4477 ASSERT_TRUE(test_server_.Start());
4480 4478
4481 TestDelegate d; 4479 TestDelegate d;
4482 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), &d); 4480 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), &d);
4483 req.set_context(default_context_); 4481 req.set_context(&default_context_);
4484 HttpRequestHeaders headers; 4482 HttpRequestHeaders headers;
4485 req.SetExtraRequestHeaders(headers); 4483 req.SetExtraRequestHeaders(headers);
4486 req.Start(); 4484 req.Start();
4487 MessageLoop::current()->Run(); 4485 MessageLoop::current()->Run();
4488 EXPECT_TRUE(ContainsString(d.data_received(), "gzip")); 4486 EXPECT_TRUE(ContainsString(d.data_received(), "gzip"));
4489 } 4487 }
4490 4488
4491 // Check that if request overrides the A-E header, the default is not appended. 4489 // Check that if request overrides the A-E header, the default is not appended.
4492 // See http://crbug.com/47381 4490 // See http://crbug.com/47381
4493 TEST_F(URLRequestTestHTTP, OverrideAcceptEncoding) { 4491 TEST_F(URLRequestTestHTTP, OverrideAcceptEncoding) {
4494 ASSERT_TRUE(test_server_.Start()); 4492 ASSERT_TRUE(test_server_.Start());
4495 4493
4496 TestDelegate d; 4494 TestDelegate d;
4497 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), &d); 4495 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Encoding"), &d);
4498 req.set_context(default_context_); 4496 req.set_context(&default_context_);
4499 HttpRequestHeaders headers; 4497 HttpRequestHeaders headers;
4500 headers.SetHeader(HttpRequestHeaders::kAcceptEncoding, "identity"); 4498 headers.SetHeader(HttpRequestHeaders::kAcceptEncoding, "identity");
4501 req.SetExtraRequestHeaders(headers); 4499 req.SetExtraRequestHeaders(headers);
4502 req.Start(); 4500 req.Start();
4503 MessageLoop::current()->Run(); 4501 MessageLoop::current()->Run();
4504 EXPECT_FALSE(ContainsString(d.data_received(), "gzip")); 4502 EXPECT_FALSE(ContainsString(d.data_received(), "gzip"));
4505 EXPECT_TRUE(ContainsString(d.data_received(), "identity")); 4503 EXPECT_TRUE(ContainsString(d.data_received(), "identity"));
4506 } 4504 }
4507 4505
4508 // Check that default A-C header is sent. 4506 // Check that default A-C header is sent.
4509 TEST_F(URLRequestTestHTTP, DefaultAcceptCharset) { 4507 TEST_F(URLRequestTestHTTP, DefaultAcceptCharset) {
4510 ASSERT_TRUE(test_server_.Start()); 4508 ASSERT_TRUE(test_server_.Start());
4511 4509
4512 TestNetworkDelegate network_delegate; // must outlive URLRequests 4510 TestNetworkDelegate network_delegate; // must outlive URLRequests
4513 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 4511 TestURLRequestContext context(true);
4514 context->set_network_delegate(&network_delegate); 4512 context.set_network_delegate(&network_delegate);
4515 context->set_accept_charset("en"); 4513 context.set_accept_charset("en");
4516 context->Init(); 4514 context.Init();
4517 4515
4518 TestDelegate d; 4516 TestDelegate d;
4519 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d); 4517 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d);
4520 req.set_context(context); 4518 req.set_context(&context);
4521 req.Start(); 4519 req.Start();
4522 MessageLoop::current()->Run(); 4520 MessageLoop::current()->Run();
4523 EXPECT_EQ("en", d.data_received()); 4521 EXPECT_EQ("en", d.data_received());
4524 } 4522 }
4525 4523
4526 // Check that an empty A-C header is not sent. http://crbug.com/77365. 4524 // Check that an empty A-C header is not sent. http://crbug.com/77365.
4527 TEST_F(URLRequestTestHTTP, EmptyAcceptCharset) { 4525 TEST_F(URLRequestTestHTTP, EmptyAcceptCharset) {
4528 ASSERT_TRUE(test_server_.Start()); 4526 ASSERT_TRUE(test_server_.Start());
4529 4527
4530 TestNetworkDelegate network_delegate; // must outlive URLRequests 4528 TestNetworkDelegate network_delegate; // must outlive URLRequests
4531 scoped_refptr<TestURLRequestContext> context(new TestURLRequestContext(true)); 4529 TestURLRequestContext context(true);
4532 context->set_network_delegate(&network_delegate); 4530 context.set_network_delegate(&network_delegate);
4533 context->Init(); 4531 context.Init();
4534 // We override the accepted charset after initialization because empty 4532 // We override the accepted charset after initialization because empty
4535 // entries get overridden otherwise. 4533 // entries get overridden otherwise.
4536 context->set_accept_charset(""); 4534 context.set_accept_charset("");
4537 4535
4538 TestDelegate d; 4536 TestDelegate d;
4539 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d); 4537 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d);
4540 req.set_context(context); 4538 req.set_context(&context);
4541 req.Start(); 4539 req.Start();
4542 MessageLoop::current()->Run(); 4540 MessageLoop::current()->Run();
4543 EXPECT_EQ("None", d.data_received()); 4541 EXPECT_EQ("None", d.data_received());
4544 } 4542 }
4545 4543
4546 // Check that if request overrides the A-C header, the default is not appended. 4544 // Check that if request overrides the A-C header, the default is not appended.
4547 // See http://crbug.com/20894 4545 // See http://crbug.com/20894
4548 TEST_F(URLRequestTestHTTP, OverrideAcceptCharset) { 4546 TEST_F(URLRequestTestHTTP, OverrideAcceptCharset) {
4549 ASSERT_TRUE(test_server_.Start()); 4547 ASSERT_TRUE(test_server_.Start());
4550 4548
4551 TestDelegate d; 4549 TestDelegate d;
4552 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d); 4550 TestURLRequest req(test_server_.GetURL("echoheader?Accept-Charset"), &d);
4553 req.set_context(default_context_); 4551 req.set_context(&default_context_);
4554 HttpRequestHeaders headers; 4552 HttpRequestHeaders headers;
4555 headers.SetHeader(HttpRequestHeaders::kAcceptCharset, "koi-8r"); 4553 headers.SetHeader(HttpRequestHeaders::kAcceptCharset, "koi-8r");
4556 req.SetExtraRequestHeaders(headers); 4554 req.SetExtraRequestHeaders(headers);
4557 req.Start(); 4555 req.Start();
4558 MessageLoop::current()->Run(); 4556 MessageLoop::current()->Run();
4559 EXPECT_EQ(std::string("koi-8r"), d.data_received()); 4557 EXPECT_EQ(std::string("koi-8r"), d.data_received());
4560 } 4558 }
4561 4559
4562 // Check that default User-Agent header is sent. 4560 // Check that default User-Agent header is sent.
4563 TEST_F(URLRequestTestHTTP, DefaultUserAgent) { 4561 TEST_F(URLRequestTestHTTP, DefaultUserAgent) {
4564 ASSERT_TRUE(test_server_.Start()); 4562 ASSERT_TRUE(test_server_.Start());
4565 4563
4566 TestDelegate d; 4564 TestDelegate d;
4567 TestURLRequest req(test_server_.GetURL("echoheader?User-Agent"), &d); 4565 TestURLRequest req(test_server_.GetURL("echoheader?User-Agent"), &d);
4568 req.set_context(default_context_); 4566 req.set_context(&default_context_);
4569 req.Start(); 4567 req.Start();
4570 MessageLoop::current()->Run(); 4568 MessageLoop::current()->Run();
4571 EXPECT_EQ(req.context()->GetUserAgent(req.url()), d.data_received()); 4569 EXPECT_EQ(req.context()->GetUserAgent(req.url()), d.data_received());
4572 } 4570 }
4573 4571
4574 // Check that if request overrides the User-Agent header, 4572 // Check that if request overrides the User-Agent header,
4575 // the default is not appended. 4573 // the default is not appended.
4576 TEST_F(URLRequestTestHTTP, OverrideUserAgent) { 4574 TEST_F(URLRequestTestHTTP, OverrideUserAgent) {
4577 ASSERT_TRUE(test_server_.Start()); 4575 ASSERT_TRUE(test_server_.Start());
4578 4576
4579 TestDelegate d; 4577 TestDelegate d;
4580 TestURLRequest req(test_server_.GetURL("echoheader?User-Agent"), &d); 4578 TestURLRequest req(test_server_.GetURL("echoheader?User-Agent"), &d);
4581 req.set_context(default_context_); 4579 req.set_context(&default_context_);
4582 HttpRequestHeaders headers; 4580 HttpRequestHeaders headers;
4583 headers.SetHeader(HttpRequestHeaders::kUserAgent, "Lynx (textmode)"); 4581 headers.SetHeader(HttpRequestHeaders::kUserAgent, "Lynx (textmode)");
4584 req.SetExtraRequestHeaders(headers); 4582 req.SetExtraRequestHeaders(headers);
4585 req.Start(); 4583 req.Start();
4586 MessageLoop::current()->Run(); 4584 MessageLoop::current()->Run();
4587 // If the net tests are being run with ChromeFrame then we need to allow for 4585 // If the net tests are being run with ChromeFrame then we need to allow for
4588 // the 'chromeframe' suffix which is added to the user agent before the 4586 // the 'chromeframe' suffix which is added to the user agent before the
4589 // closing parentheses. 4587 // closing parentheses.
4590 EXPECT_TRUE(StartsWithASCII(d.data_received(), "Lynx (textmode", true)); 4588 EXPECT_TRUE(StartsWithASCII(d.data_received(), "Lynx (textmode", true));
4591 } 4589 }
4592 4590
4593 } // namespace net 4591 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698