OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "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 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 } | 655 } |
656 | 656 |
657 const GURL& latest_report_uri() { return latest_report_uri_; } | 657 const GURL& latest_report_uri() { return latest_report_uri_; } |
658 const std::string& latest_report() { return latest_report_; } | 658 const std::string& latest_report() { return latest_report_; } |
659 | 659 |
660 private: | 660 private: |
661 GURL latest_report_uri_; | 661 GURL latest_report_uri_; |
662 std::string latest_report_; | 662 std::string latest_report_; |
663 }; | 663 }; |
664 | 664 |
665 class TestExperimentalFeaturesNetworkDelegate : public TestNetworkDelegate { | |
666 public: | |
667 bool OnAreExperimentalCookieFeaturesEnabled() const override { return true; } | |
668 }; | |
669 | |
670 } // namespace | 665 } // namespace |
671 | 666 |
672 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. | 667 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. |
673 class URLRequestTest : public PlatformTest { | 668 class URLRequestTest : public PlatformTest { |
674 public: | 669 public: |
675 URLRequestTest() : default_context_(true) { | 670 URLRequestTest() : default_context_(true) { |
676 default_context_.set_network_delegate(&default_network_delegate_); | 671 default_context_.set_network_delegate(&default_network_delegate_); |
677 default_context_.set_net_log(&net_log_); | 672 default_context_.set_net_log(&net_log_); |
678 job_factory_impl_ = new URLRequestJobFactoryImpl(); | 673 job_factory_impl_ = new URLRequestJobFactoryImpl(); |
679 job_factory_.reset(job_factory_impl_); | 674 job_factory_.reset(job_factory_impl_); |
(...skipping 2040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2720 req->Start(); | 2715 req->Start(); |
2721 base::RunLoop().Run(); | 2716 base::RunLoop().Run(); |
2722 | 2717 |
2723 EXPECT_TRUE(d.data_received().find("FirstPartyCookieToSet=1") != | 2718 EXPECT_TRUE(d.data_received().find("FirstPartyCookieToSet=1") != |
2724 std::string::npos); | 2719 std::string::npos); |
2725 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | 2720 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); |
2726 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | 2721 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); |
2727 } | 2722 } |
2728 } | 2723 } |
2729 | 2724 |
2730 // Tests that $Secure- cookies can't be set on non-secure origins. | |
2731 TEST_F(URLRequestTest, SecureCookiePrefixOnNonsecureOrigin) { | |
2732 LocalHttpTestServer test_server; | |
2733 ASSERT_TRUE(test_server.Start()); | |
2734 SpawnedTestServer test_server_https( | |
2735 SpawnedTestServer::TYPE_HTTPS, SpawnedTestServer::kLocalhost, | |
2736 base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); | |
2737 ASSERT_TRUE(test_server_https.Start()); | |
2738 | |
2739 TestExperimentalFeaturesNetworkDelegate network_delegate; | |
2740 TestURLRequestContext context(true); | |
2741 context.set_network_delegate(&network_delegate); | |
2742 context.Init(); | |
2743 | |
2744 // Try to set a Secure $Secure- cookie, with experimental features | |
2745 // enabled. | |
2746 { | |
2747 TestDelegate d; | |
2748 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2749 test_server.GetURL("set-cookie?$Secure-nonsecure-origin=1;Secure"), | |
2750 DEFAULT_PRIORITY, &d)); | |
2751 req->Start(); | |
2752 base::RunLoop().Run(); | |
2753 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2754 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2755 } | |
2756 | |
2757 // Verify that the cookie is not set. | |
2758 { | |
2759 TestDelegate d; | |
2760 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2761 test_server_https.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d)); | |
2762 req->Start(); | |
2763 base::RunLoop().Run(); | |
2764 | |
2765 EXPECT_TRUE(d.data_received().find("$Secure-nonsecure-origin=1") == | |
2766 std::string::npos); | |
2767 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2768 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2769 } | |
2770 } | |
2771 | |
2772 TEST_F(URLRequestTest, SecureCookiePrefixNonexperimental) { | |
2773 SpawnedTestServer test_server( | |
2774 SpawnedTestServer::TYPE_HTTPS, SpawnedTestServer::kLocalhost, | |
2775 base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); | |
2776 ASSERT_TRUE(test_server.Start()); | |
2777 | |
2778 TestNetworkDelegate network_delegate; | |
2779 TestURLRequestContext context(true); | |
2780 context.set_network_delegate(&network_delegate); | |
2781 context.Init(); | |
2782 | |
2783 // Without experimental features, there should be no restrictions on | |
2784 // $Secure- cookies. | |
2785 | |
2786 // Set a non-Secure cookie with the $Secure- prefix. | |
2787 { | |
2788 TestDelegate d; | |
2789 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2790 test_server.GetURL("set-cookie?$Secure-nonsecure-not-experimental=1"), | |
2791 DEFAULT_PRIORITY, &d)); | |
2792 req->Start(); | |
2793 base::RunLoop().Run(); | |
2794 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2795 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2796 } | |
2797 | |
2798 // Set a Secure cookie with the $Secure- prefix. | |
2799 { | |
2800 TestDelegate d; | |
2801 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2802 test_server.GetURL( | |
2803 "set-cookie?$Secure-secure-not-experimental=1;Secure"), | |
2804 DEFAULT_PRIORITY, &d)); | |
2805 req->Start(); | |
2806 base::RunLoop().Run(); | |
2807 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2808 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2809 } | |
2810 | |
2811 // Verify that the cookies are set. Neither should have any | |
2812 // restrictions because the experimental flag is off. | |
2813 { | |
2814 TestDelegate d; | |
2815 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2816 test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d)); | |
2817 req->Start(); | |
2818 base::RunLoop().Run(); | |
2819 | |
2820 EXPECT_TRUE(d.data_received().find("$Secure-secure-not-experimental=1") != | |
2821 std::string::npos); | |
2822 EXPECT_TRUE( | |
2823 d.data_received().find("$Secure-nonsecure-not-experimental=1") != | |
2824 std::string::npos); | |
2825 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2826 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2827 } | |
2828 } | |
2829 | |
2830 TEST_F(URLRequestTest, SecureCookiePrefixExperimentalNonsecure) { | |
2831 SpawnedTestServer test_server( | |
2832 SpawnedTestServer::TYPE_HTTPS, SpawnedTestServer::kLocalhost, | |
2833 base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); | |
2834 ASSERT_TRUE(test_server.Start()); | |
2835 | |
2836 TestExperimentalFeaturesNetworkDelegate network_delegate; | |
2837 TestURLRequestContext context(true); | |
2838 context.set_network_delegate(&network_delegate); | |
2839 context.Init(); | |
2840 | |
2841 // Try to set a non-Secure $Secure- cookie, with experimental features | |
2842 // enabled. | |
2843 { | |
2844 TestDelegate d; | |
2845 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2846 test_server.GetURL("set-cookie?$Secure-foo=1"), DEFAULT_PRIORITY, &d)); | |
2847 req->Start(); | |
2848 base::RunLoop().Run(); | |
2849 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2850 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2851 } | |
2852 | |
2853 // Verify that the cookie is not set. | |
2854 { | |
2855 TestDelegate d; | |
2856 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2857 test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d)); | |
2858 req->Start(); | |
2859 base::RunLoop().Run(); | |
2860 | |
2861 EXPECT_TRUE(d.data_received().find("$Secure-foo=1") == std::string::npos); | |
2862 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2863 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2864 } | |
2865 } | |
2866 | |
2867 TEST_F(URLRequestTest, SecureCookiePrefixExperimentalSecure) { | |
2868 SpawnedTestServer test_server( | |
2869 SpawnedTestServer::TYPE_HTTPS, SpawnedTestServer::kLocalhost, | |
2870 base::FilePath(FILE_PATH_LITERAL("net/data/ssl"))); | |
2871 ASSERT_TRUE(test_server.Start()); | |
2872 | |
2873 TestExperimentalFeaturesNetworkDelegate network_delegate; | |
2874 TestURLRequestContext context(true); | |
2875 context.set_network_delegate(&network_delegate); | |
2876 context.Init(); | |
2877 | |
2878 // Try to set a Secure $Secure- cookie, with experimental features | |
2879 // enabled. | |
2880 { | |
2881 TestDelegate d; | |
2882 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2883 test_server.GetURL("set-cookie?$Secure-bar=1;Secure"), DEFAULT_PRIORITY, | |
2884 &d)); | |
2885 req->Start(); | |
2886 base::RunLoop().Run(); | |
2887 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2888 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2889 } | |
2890 | |
2891 // Verify that the cookie is set. | |
2892 { | |
2893 TestDelegate d; | |
2894 scoped_ptr<URLRequest> req(context.CreateRequest( | |
2895 test_server.GetURL("echoheader?Cookie"), DEFAULT_PRIORITY, &d)); | |
2896 req->Start(); | |
2897 base::RunLoop().Run(); | |
2898 | |
2899 EXPECT_TRUE(d.data_received().find("$Secure-bar=1") != std::string::npos); | |
2900 EXPECT_EQ(0, network_delegate.blocked_get_cookies_count()); | |
2901 EXPECT_EQ(0, network_delegate.blocked_set_cookie_count()); | |
2902 } | |
2903 } | |
2904 | |
2905 // Tests that a request is cancelled while entering suspend mode. Uses mocks | 2725 // Tests that a request is cancelled while entering suspend mode. Uses mocks |
2906 // rather than a spawned test server because the connection used to talk to | 2726 // rather than a spawned test server because the connection used to talk to |
2907 // the test server is affected by entering suspend mode on Android. | 2727 // the test server is affected by entering suspend mode on Android. |
2908 TEST_F(URLRequestTest, CancelOnSuspend) { | 2728 TEST_F(URLRequestTest, CancelOnSuspend) { |
2909 TestPowerMonitorSource* power_monitor_source = new TestPowerMonitorSource(); | 2729 TestPowerMonitorSource* power_monitor_source = new TestPowerMonitorSource(); |
2910 base::PowerMonitor power_monitor(make_scoped_ptr(power_monitor_source)); | 2730 base::PowerMonitor power_monitor(make_scoped_ptr(power_monitor_source)); |
2911 | 2731 |
2912 URLRequestFailedJob::AddUrlHandler(); | 2732 URLRequestFailedJob::AddUrlHandler(); |
2913 | 2733 |
2914 TestDelegate d; | 2734 TestDelegate d; |
(...skipping 6779 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9694 | 9514 |
9695 req->Start(); | 9515 req->Start(); |
9696 req->Cancel(); | 9516 req->Cancel(); |
9697 job->DetachRequest(); | 9517 job->DetachRequest(); |
9698 base::RunLoop().RunUntilIdle(); | 9518 base::RunLoop().RunUntilIdle(); |
9699 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); | 9519 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); |
9700 EXPECT_EQ(0, d.received_redirect_count()); | 9520 EXPECT_EQ(0, d.received_redirect_count()); |
9701 } | 9521 } |
9702 | 9522 |
9703 } // namespace net | 9523 } // namespace net |
OLD | NEW |