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 <memory> | 5 #include <memory> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 #include "net/socket/ssl_client_socket.h" | 86 #include "net/socket/ssl_client_socket.h" |
87 #include "net/ssl/channel_id_service.h" | 87 #include "net/ssl/channel_id_service.h" |
88 #include "net/ssl/default_channel_id_store.h" | 88 #include "net/ssl/default_channel_id_store.h" |
89 #include "net/ssl/ssl_connection_status_flags.h" | 89 #include "net/ssl/ssl_connection_status_flags.h" |
90 #include "net/ssl/ssl_server_config.h" | 90 #include "net/ssl/ssl_server_config.h" |
91 #include "net/ssl/token_binding.h" | 91 #include "net/ssl/token_binding.h" |
92 #include "net/test/cert_test_util.h" | 92 #include "net/test/cert_test_util.h" |
93 #include "net/test/embedded_test_server/embedded_test_server.h" | 93 #include "net/test/embedded_test_server/embedded_test_server.h" |
94 #include "net/test/embedded_test_server/http_request.h" | 94 #include "net/test/embedded_test_server/http_request.h" |
95 #include "net/test/embedded_test_server/http_response.h" | 95 #include "net/test/embedded_test_server/http_response.h" |
| 96 #include "net/test/gtest_util.h" |
96 #include "net/test/spawned_test_server/spawned_test_server.h" | 97 #include "net/test/spawned_test_server/spawned_test_server.h" |
97 #include "net/test/test_data_directory.h" | 98 #include "net/test/test_data_directory.h" |
98 #include "net/test/url_request/url_request_failed_job.h" | 99 #include "net/test/url_request/url_request_failed_job.h" |
99 #include "net/url_request/data_protocol_handler.h" | 100 #include "net/url_request/data_protocol_handler.h" |
100 #include "net/url_request/static_http_user_agent_settings.h" | 101 #include "net/url_request/static_http_user_agent_settings.h" |
101 #include "net/url_request/url_request.h" | 102 #include "net/url_request/url_request.h" |
102 #include "net/url_request/url_request_filter.h" | 103 #include "net/url_request/url_request_filter.h" |
103 #include "net/url_request/url_request_http_job.h" | 104 #include "net/url_request/url_request_http_job.h" |
104 #include "net/url_request/url_request_intercepting_job_factory.h" | 105 #include "net/url_request/url_request_intercepting_job_factory.h" |
105 #include "net/url_request/url_request_interceptor.h" | 106 #include "net/url_request/url_request_interceptor.h" |
106 #include "net/url_request/url_request_job_factory_impl.h" | 107 #include "net/url_request/url_request_job_factory_impl.h" |
107 #include "net/url_request/url_request_redirect_job.h" | 108 #include "net/url_request/url_request_redirect_job.h" |
108 #include "net/url_request/url_request_test_job.h" | 109 #include "net/url_request/url_request_test_job.h" |
109 #include "net/url_request/url_request_test_util.h" | 110 #include "net/url_request/url_request_test_util.h" |
| 111 #include "testing/gmock/include/gmock/gmock.h" |
110 #include "testing/gtest/include/gtest/gtest.h" | 112 #include "testing/gtest/include/gtest/gtest.h" |
111 #include "testing/platform_test.h" | 113 #include "testing/platform_test.h" |
112 | 114 |
113 #if !defined(DISABLE_FILE_SUPPORT) | 115 #if !defined(DISABLE_FILE_SUPPORT) |
114 #include "net/base/filename_util.h" | 116 #include "net/base/filename_util.h" |
115 #include "net/url_request/file_protocol_handler.h" | 117 #include "net/url_request/file_protocol_handler.h" |
116 #include "net/url_request/url_request_file_dir_job.h" | 118 #include "net/url_request/url_request_file_dir_job.h" |
117 #endif | 119 #endif |
118 | 120 |
119 #if !defined(DISABLE_FTP_SUPPORT) && !defined(OS_ANDROID) | 121 #if !defined(DISABLE_FTP_SUPPORT) && !defined(OS_ANDROID) |
120 #include "net/ftp/ftp_network_layer.h" | 122 #include "net/ftp/ftp_network_layer.h" |
121 #include "net/url_request/ftp_protocol_handler.h" | 123 #include "net/url_request/ftp_protocol_handler.h" |
122 #endif | 124 #endif |
123 | 125 |
124 #if defined(OS_WIN) | 126 #if defined(OS_WIN) |
125 #include "base/win/scoped_com_initializer.h" | 127 #include "base/win/scoped_com_initializer.h" |
126 #include "base/win/scoped_comptr.h" | 128 #include "base/win/scoped_comptr.h" |
127 #endif | 129 #endif |
128 | 130 |
| 131 using net::test::IsError; |
| 132 using net::test::IsOk; |
| 133 |
129 using base::ASCIIToUTF16; | 134 using base::ASCIIToUTF16; |
130 using base::Time; | 135 using base::Time; |
131 using std::string; | 136 using std::string; |
132 | 137 |
133 namespace net { | 138 namespace net { |
134 | 139 |
135 namespace { | 140 namespace { |
136 | 141 |
137 const base::string16 kChrome(ASCIIToUTF16("chrome")); | 142 const base::string16 kChrome(ASCIIToUTF16("chrome")); |
138 const base::string16 kSecret(ASCIIToUTF16("secret")); | 143 const base::string16 kSecret(ASCIIToUTF16("secret")); |
(...skipping 1983 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2122 req->set_method("GET"); | 2127 req->set_method("GET"); |
2123 | 2128 |
2124 req->Start(); | 2129 req->Start(); |
2125 base::RunLoop().Run(); | 2130 base::RunLoop().Run(); |
2126 | 2131 |
2127 // Check we see a failed request. | 2132 // Check we see a failed request. |
2128 EXPECT_FALSE(req->status().is_success()); | 2133 EXPECT_FALSE(req->status().is_success()); |
2129 // The proxy server is not set before failure. | 2134 // The proxy server is not set before failure. |
2130 EXPECT_TRUE(req->proxy_server().IsEmpty()); | 2135 EXPECT_TRUE(req->proxy_server().IsEmpty()); |
2131 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); | 2136 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); |
2132 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, req->status().error()); | 2137 EXPECT_THAT(req->status().error(), IsError(ERR_PROXY_CONNECTION_FAILED)); |
2133 | 2138 |
2134 EXPECT_EQ(1, network_delegate.error_count()); | 2139 EXPECT_EQ(1, network_delegate.error_count()); |
2135 EXPECT_EQ(ERR_PROXY_CONNECTION_FAILED, network_delegate.last_error()); | 2140 EXPECT_THAT(network_delegate.last_error(), |
| 2141 IsError(ERR_PROXY_CONNECTION_FAILED)); |
2136 EXPECT_EQ(1, network_delegate.completed_requests()); | 2142 EXPECT_EQ(1, network_delegate.completed_requests()); |
2137 } | 2143 } |
2138 | 2144 |
2139 // Make sure that NetworkDelegate::NotifyCompleted is called if | 2145 // Make sure that NetworkDelegate::NotifyCompleted is called if |
2140 // content is empty. | 2146 // content is empty. |
2141 TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { | 2147 TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { |
2142 TestDelegate d; | 2148 TestDelegate d; |
2143 std::unique_ptr<URLRequest> req( | 2149 std::unique_ptr<URLRequest> req( |
2144 default_context_.CreateRequest(GURL("data:,"), DEFAULT_PRIORITY, &d)); | 2150 default_context_.CreateRequest(GURL("data:,"), DEFAULT_PRIORITY, &d)); |
2145 req->Start(); | 2151 req->Start(); |
(...skipping 1014 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3160 HttpRequestHeaders headers; | 3166 HttpRequestHeaders headers; |
3161 headers.SetHeader(HttpRequestHeaders::kContentLength, | 3167 headers.SetHeader(HttpRequestHeaders::kContentLength, |
3162 base::SizeTToString(arraysize(kData) - 1)); | 3168 base::SizeTToString(arraysize(kData) - 1)); |
3163 headers.SetHeader(HttpRequestHeaders::kContentType, "text/plain"); | 3169 headers.SetHeader(HttpRequestHeaders::kContentType, "text/plain"); |
3164 req->SetExtraRequestHeaders(headers); | 3170 req->SetExtraRequestHeaders(headers); |
3165 } | 3171 } |
3166 req->Start(); | 3172 req->Start(); |
3167 base::RunLoop().Run(); | 3173 base::RunLoop().Run(); |
3168 EXPECT_EQ(redirect_method, req->method()); | 3174 EXPECT_EQ(redirect_method, req->method()); |
3169 EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); | 3175 EXPECT_EQ(URLRequestStatus::SUCCESS, req->status().status()); |
3170 EXPECT_EQ(OK, req->status().error()); | 3176 EXPECT_THAT(req->status().error(), IsOk()); |
3171 if (include_data) { | 3177 if (include_data) { |
3172 if (request_method == redirect_method) { | 3178 if (request_method == redirect_method) { |
3173 EXPECT_TRUE(req->extra_request_headers().HasHeader( | 3179 EXPECT_TRUE(req->extra_request_headers().HasHeader( |
3174 HttpRequestHeaders::kContentLength)); | 3180 HttpRequestHeaders::kContentLength)); |
3175 EXPECT_TRUE(req->extra_request_headers().HasHeader( | 3181 EXPECT_TRUE(req->extra_request_headers().HasHeader( |
3176 HttpRequestHeaders::kContentType)); | 3182 HttpRequestHeaders::kContentType)); |
3177 EXPECT_EQ(kData, d.data_received()); | 3183 EXPECT_EQ(kData, d.data_received()); |
3178 } else { | 3184 } else { |
3179 EXPECT_FALSE(req->extra_request_headers().HasHeader( | 3185 EXPECT_FALSE(req->extra_request_headers().HasHeader( |
3180 HttpRequestHeaders::kContentLength)); | 3186 HttpRequestHeaders::kContentLength)); |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3564 std::unique_ptr<URLRequest> r(context.CreateRequest( | 3570 std::unique_ptr<URLRequest> r(context.CreateRequest( |
3565 GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d)); | 3571 GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d)); |
3566 r->Start(); | 3572 r->Start(); |
3567 EXPECT_TRUE(r->is_pending()); | 3573 EXPECT_TRUE(r->is_pending()); |
3568 | 3574 |
3569 base::RunLoop().Run(); | 3575 base::RunLoop().Run(); |
3570 | 3576 |
3571 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 3577 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
3572 // The proxy server is not set before failure. | 3578 // The proxy server is not set before failure. |
3573 EXPECT_TRUE(r->proxy_server().IsEmpty()); | 3579 EXPECT_TRUE(r->proxy_server().IsEmpty()); |
3574 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); | 3580 EXPECT_THAT(r->status().error(), IsError(ERR_TUNNEL_CONNECTION_FAILED)); |
3575 EXPECT_EQ(1, d.response_started_count()); | 3581 EXPECT_EQ(1, d.response_started_count()); |
3576 // We should not have followed the redirect. | 3582 // We should not have followed the redirect. |
3577 EXPECT_EQ(0, d.received_redirect_count()); | 3583 EXPECT_EQ(0, d.received_redirect_count()); |
3578 } | 3584 } |
3579 } | 3585 } |
3580 | 3586 |
3581 // This is the same as the previous test, but checks that the network delegate | 3587 // This is the same as the previous test, but checks that the network delegate |
3582 // registers the error. | 3588 // registers the error. |
3583 TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) { | 3589 TEST_F(URLRequestTestHTTP, NetworkDelegateTunnelConnectionFailed) { |
3584 ASSERT_TRUE(http_test_server()->Start()); | 3590 ASSERT_TRUE(http_test_server()->Start()); |
3585 | 3591 |
3586 TestNetworkDelegate network_delegate; // Must outlive URLRequest. | 3592 TestNetworkDelegate network_delegate; // Must outlive URLRequest. |
3587 TestURLRequestContextWithProxy context( | 3593 TestURLRequestContextWithProxy context( |
3588 http_test_server()->host_port_pair().ToString(), &network_delegate); | 3594 http_test_server()->host_port_pair().ToString(), &network_delegate); |
3589 | 3595 |
3590 TestDelegate d; | 3596 TestDelegate d; |
3591 { | 3597 { |
3592 std::unique_ptr<URLRequest> r(context.CreateRequest( | 3598 std::unique_ptr<URLRequest> r(context.CreateRequest( |
3593 GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d)); | 3599 GURL("https://www.redirect.com/"), DEFAULT_PRIORITY, &d)); |
3594 r->Start(); | 3600 r->Start(); |
3595 EXPECT_TRUE(r->is_pending()); | 3601 EXPECT_TRUE(r->is_pending()); |
3596 | 3602 |
3597 base::RunLoop().Run(); | 3603 base::RunLoop().Run(); |
3598 | 3604 |
3599 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 3605 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
3600 // The proxy server is not set before failure. | 3606 // The proxy server is not set before failure. |
3601 EXPECT_TRUE(r->proxy_server().IsEmpty()); | 3607 EXPECT_TRUE(r->proxy_server().IsEmpty()); |
3602 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); | 3608 EXPECT_THAT(r->status().error(), IsError(ERR_TUNNEL_CONNECTION_FAILED)); |
3603 EXPECT_EQ(1, d.response_started_count()); | 3609 EXPECT_EQ(1, d.response_started_count()); |
3604 // We should not have followed the redirect. | 3610 // We should not have followed the redirect. |
3605 EXPECT_EQ(0, d.received_redirect_count()); | 3611 EXPECT_EQ(0, d.received_redirect_count()); |
3606 | 3612 |
3607 EXPECT_EQ(1, network_delegate.error_count()); | 3613 EXPECT_EQ(1, network_delegate.error_count()); |
3608 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, network_delegate.last_error()); | 3614 EXPECT_THAT(network_delegate.last_error(), |
| 3615 IsError(ERR_TUNNEL_CONNECTION_FAILED)); |
3609 } | 3616 } |
3610 } | 3617 } |
3611 | 3618 |
3612 // Tests that we can block and asynchronously return OK in various stages. | 3619 // Tests that we can block and asynchronously return OK in various stages. |
3613 TEST_F(URLRequestTestHTTP, NetworkDelegateBlockAsynchronously) { | 3620 TEST_F(URLRequestTestHTTP, NetworkDelegateBlockAsynchronously) { |
3614 static const BlockingNetworkDelegate::Stage blocking_stages[] = { | 3621 static const BlockingNetworkDelegate::Stage blocking_stages[] = { |
3615 BlockingNetworkDelegate::ON_BEFORE_URL_REQUEST, | 3622 BlockingNetworkDelegate::ON_BEFORE_URL_REQUEST, |
3616 BlockingNetworkDelegate::ON_BEFORE_SEND_HEADERS, | 3623 BlockingNetworkDelegate::ON_BEFORE_SEND_HEADERS, |
3617 BlockingNetworkDelegate::ON_HEADERS_RECEIVED | 3624 BlockingNetworkDelegate::ON_HEADERS_RECEIVED |
3618 }; | 3625 }; |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3668 { | 3675 { |
3669 std::unique_ptr<URLRequest> r(context.CreateRequest( | 3676 std::unique_ptr<URLRequest> r(context.CreateRequest( |
3670 http_test_server()->GetURL("/"), DEFAULT_PRIORITY, &d)); | 3677 http_test_server()->GetURL("/"), DEFAULT_PRIORITY, &d)); |
3671 | 3678 |
3672 r->Start(); | 3679 r->Start(); |
3673 base::RunLoop().Run(); | 3680 base::RunLoop().Run(); |
3674 | 3681 |
3675 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 3682 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
3676 // The proxy server is not set before cancellation. | 3683 // The proxy server is not set before cancellation. |
3677 EXPECT_TRUE(r->proxy_server().IsEmpty()); | 3684 EXPECT_TRUE(r->proxy_server().IsEmpty()); |
3678 EXPECT_EQ(ERR_EMPTY_RESPONSE, r->status().error()); | 3685 EXPECT_THAT(r->status().error(), IsError(ERR_EMPTY_RESPONSE)); |
3679 EXPECT_EQ(1, network_delegate.created_requests()); | 3686 EXPECT_EQ(1, network_delegate.created_requests()); |
3680 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 3687 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
3681 } | 3688 } |
3682 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 3689 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
3683 } | 3690 } |
3684 | 3691 |
3685 // Helper function for NetworkDelegateCancelRequestAsynchronously and | 3692 // Helper function for NetworkDelegateCancelRequestAsynchronously and |
3686 // NetworkDelegateCancelRequestSynchronously. Sets up a blocking network | 3693 // NetworkDelegateCancelRequestSynchronously. Sets up a blocking network |
3687 // delegate operating in |block_mode| and a request for |url|. It blocks the | 3694 // delegate operating in |block_mode| and a request for |url|. It blocks the |
3688 // request in |stage| and cancels it with ERR_BLOCKED_BY_CLIENT. | 3695 // request in |stage| and cancels it with ERR_BLOCKED_BY_CLIENT. |
(...skipping 12 matching lines...) Expand all Loading... |
3701 { | 3708 { |
3702 std::unique_ptr<URLRequest> r( | 3709 std::unique_ptr<URLRequest> r( |
3703 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 3710 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
3704 | 3711 |
3705 r->Start(); | 3712 r->Start(); |
3706 base::RunLoop().Run(); | 3713 base::RunLoop().Run(); |
3707 | 3714 |
3708 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 3715 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
3709 // The proxy server is not set before cancellation. | 3716 // The proxy server is not set before cancellation. |
3710 EXPECT_TRUE(r->proxy_server().IsEmpty()); | 3717 EXPECT_TRUE(r->proxy_server().IsEmpty()); |
3711 EXPECT_EQ(ERR_BLOCKED_BY_CLIENT, r->status().error()); | 3718 EXPECT_THAT(r->status().error(), IsError(ERR_BLOCKED_BY_CLIENT)); |
3712 EXPECT_EQ(1, network_delegate.created_requests()); | 3719 EXPECT_EQ(1, network_delegate.created_requests()); |
3713 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 3720 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
3714 } | 3721 } |
3715 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 3722 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
3716 } | 3723 } |
3717 | 3724 |
3718 // The following 3 tests check that the network delegate can cancel a request | 3725 // The following 3 tests check that the network delegate can cancel a request |
3719 // synchronously in various stages of the request. | 3726 // synchronously in various stages of the request. |
3720 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestSynchronously1) { | 3727 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestSynchronously1) { |
3721 ASSERT_TRUE(http_test_server()->Start()); | 3728 ASSERT_TRUE(http_test_server()->Start()); |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3953 base::RunLoop().Run(); | 3960 base::RunLoop().Run(); |
3954 | 3961 |
3955 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 3962 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
3956 EXPECT_TRUE(r->proxy_server().Equals(http_test_server()->host_port_pair())); | 3963 EXPECT_TRUE(r->proxy_server().Equals(http_test_server()->host_port_pair())); |
3957 // before_send_headers_with_proxy_count only increments for headers sent | 3964 // before_send_headers_with_proxy_count only increments for headers sent |
3958 // through an untunneled proxy. | 3965 // through an untunneled proxy. |
3959 EXPECT_EQ(2, network_delegate.before_send_headers_with_proxy_count()); | 3966 EXPECT_EQ(2, network_delegate.before_send_headers_with_proxy_count()); |
3960 EXPECT_TRUE(network_delegate.last_observed_proxy().Equals( | 3967 EXPECT_TRUE(network_delegate.last_observed_proxy().Equals( |
3961 http_test_server()->host_port_pair())); | 3968 http_test_server()->host_port_pair())); |
3962 | 3969 |
3963 EXPECT_EQ(OK, r->status().error()); | 3970 EXPECT_THAT(r->status().error(), IsOk()); |
3964 EXPECT_EQ(redirect_url, r->url()); | 3971 EXPECT_EQ(redirect_url, r->url()); |
3965 EXPECT_EQ(original_url, r->original_url()); | 3972 EXPECT_EQ(original_url, r->original_url()); |
3966 EXPECT_EQ(2U, r->url_chain().size()); | 3973 EXPECT_EQ(2U, r->url_chain().size()); |
3967 EXPECT_EQ(2, network_delegate.created_requests()); | 3974 EXPECT_EQ(2, network_delegate.created_requests()); |
3968 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 3975 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
3969 } | 3976 } |
3970 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 3977 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
3971 } | 3978 } |
3972 | 3979 |
3973 // Tests that the network delegate can synchronously complete OnAuthRequired | 3980 // Tests that the network delegate can synchronously complete OnAuthRequired |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4137 context.Init(); | 4144 context.Init(); |
4138 | 4145 |
4139 { | 4146 { |
4140 GURL url(http_test_server()->GetURL("/auth-basic")); | 4147 GURL url(http_test_server()->GetURL("/auth-basic")); |
4141 std::unique_ptr<URLRequest> r( | 4148 std::unique_ptr<URLRequest> r( |
4142 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 4149 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
4143 r->Start(); | 4150 r->Start(); |
4144 base::RunLoop().Run(); | 4151 base::RunLoop().Run(); |
4145 | 4152 |
4146 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 4153 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
4147 EXPECT_EQ(OK, r->status().error()); | 4154 EXPECT_THAT(r->status().error(), IsOk()); |
4148 EXPECT_EQ(401, r->GetResponseCode()); | 4155 EXPECT_EQ(401, r->GetResponseCode()); |
4149 EXPECT_FALSE(d.auth_required_called()); | 4156 EXPECT_FALSE(d.auth_required_called()); |
4150 EXPECT_EQ(1, network_delegate.created_requests()); | 4157 EXPECT_EQ(1, network_delegate.created_requests()); |
4151 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4158 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4152 } | 4159 } |
4153 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4160 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4154 } | 4161 } |
4155 | 4162 |
4156 // Tests that the network delegate can asynchronously complete OnAuthRequired | 4163 // Tests that the network delegate can asynchronously complete OnAuthRequired |
4157 // by taking no action. This indicates that the NetworkDelegate does not want | 4164 // by taking no action. This indicates that the NetworkDelegate does not want |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4242 context.Init(); | 4249 context.Init(); |
4243 | 4250 |
4244 { | 4251 { |
4245 GURL url(http_test_server()->GetURL("/auth-basic")); | 4252 GURL url(http_test_server()->GetURL("/auth-basic")); |
4246 std::unique_ptr<URLRequest> r( | 4253 std::unique_ptr<URLRequest> r( |
4247 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 4254 context.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
4248 r->Start(); | 4255 r->Start(); |
4249 base::RunLoop().Run(); | 4256 base::RunLoop().Run(); |
4250 | 4257 |
4251 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 4258 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
4252 EXPECT_EQ(OK, r->status().error()); | 4259 EXPECT_THAT(r->status().error(), IsOk()); |
4253 EXPECT_EQ(401, r->GetResponseCode()); | 4260 EXPECT_EQ(401, r->GetResponseCode()); |
4254 EXPECT_FALSE(d.auth_required_called()); | 4261 EXPECT_FALSE(d.auth_required_called()); |
4255 EXPECT_EQ(1, network_delegate.created_requests()); | 4262 EXPECT_EQ(1, network_delegate.created_requests()); |
4256 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4263 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4257 } | 4264 } |
4258 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4265 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4259 } | 4266 } |
4260 | 4267 |
4261 // Tests that we can handle when a network request was canceled while we were | 4268 // Tests that we can handle when a network request was canceled while we were |
4262 // waiting for the network delegate. | 4269 // waiting for the network delegate. |
(...skipping 17 matching lines...) Expand all Loading... |
4280 r->Start(); | 4287 r->Start(); |
4281 base::RunLoop().Run(); | 4288 base::RunLoop().Run(); |
4282 EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_URL_REQUEST, | 4289 EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_URL_REQUEST, |
4283 network_delegate.stage_blocked_for_callback()); | 4290 network_delegate.stage_blocked_for_callback()); |
4284 EXPECT_EQ(0, network_delegate.completed_requests()); | 4291 EXPECT_EQ(0, network_delegate.completed_requests()); |
4285 // Cancel before callback. | 4292 // Cancel before callback. |
4286 r->Cancel(); | 4293 r->Cancel(); |
4287 // Ensure that network delegate is notified. | 4294 // Ensure that network delegate is notified. |
4288 EXPECT_EQ(1, network_delegate.completed_requests()); | 4295 EXPECT_EQ(1, network_delegate.completed_requests()); |
4289 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); | 4296 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); |
4290 EXPECT_EQ(ERR_ABORTED, r->status().error()); | 4297 EXPECT_THAT(r->status().error(), IsError(ERR_ABORTED)); |
4291 EXPECT_EQ(1, network_delegate.created_requests()); | 4298 EXPECT_EQ(1, network_delegate.created_requests()); |
4292 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4299 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4293 } | 4300 } |
4294 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4301 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4295 } | 4302 } |
4296 | 4303 |
4297 // Tests that we can handle when a network request was canceled while we were | 4304 // Tests that we can handle when a network request was canceled while we were |
4298 // waiting for the network delegate. | 4305 // waiting for the network delegate. |
4299 // Part 2: Request is cancelled while waiting for OnBeforeStartTransaction | 4306 // Part 2: Request is cancelled while waiting for OnBeforeStartTransaction |
4300 // callback. | 4307 // callback. |
(...skipping 17 matching lines...) Expand all Loading... |
4318 r->Start(); | 4325 r->Start(); |
4319 base::RunLoop().Run(); | 4326 base::RunLoop().Run(); |
4320 EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_SEND_HEADERS, | 4327 EXPECT_EQ(BlockingNetworkDelegate::ON_BEFORE_SEND_HEADERS, |
4321 network_delegate.stage_blocked_for_callback()); | 4328 network_delegate.stage_blocked_for_callback()); |
4322 EXPECT_EQ(0, network_delegate.completed_requests()); | 4329 EXPECT_EQ(0, network_delegate.completed_requests()); |
4323 // Cancel before callback. | 4330 // Cancel before callback. |
4324 r->Cancel(); | 4331 r->Cancel(); |
4325 // Ensure that network delegate is notified. | 4332 // Ensure that network delegate is notified. |
4326 EXPECT_EQ(1, network_delegate.completed_requests()); | 4333 EXPECT_EQ(1, network_delegate.completed_requests()); |
4327 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); | 4334 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); |
4328 EXPECT_EQ(ERR_ABORTED, r->status().error()); | 4335 EXPECT_THAT(r->status().error(), IsError(ERR_ABORTED)); |
4329 EXPECT_EQ(1, network_delegate.created_requests()); | 4336 EXPECT_EQ(1, network_delegate.created_requests()); |
4330 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4337 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4331 } | 4338 } |
4332 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4339 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4333 } | 4340 } |
4334 | 4341 |
4335 // Tests that we can handle when a network request was canceled while we were | 4342 // Tests that we can handle when a network request was canceled while we were |
4336 // waiting for the network delegate. | 4343 // waiting for the network delegate. |
4337 // Part 3: Request is cancelled while waiting for OnHeadersReceived callback. | 4344 // Part 3: Request is cancelled while waiting for OnHeadersReceived callback. |
4338 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting3) { | 4345 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting3) { |
(...skipping 15 matching lines...) Expand all Loading... |
4354 r->Start(); | 4361 r->Start(); |
4355 base::RunLoop().Run(); | 4362 base::RunLoop().Run(); |
4356 EXPECT_EQ(BlockingNetworkDelegate::ON_HEADERS_RECEIVED, | 4363 EXPECT_EQ(BlockingNetworkDelegate::ON_HEADERS_RECEIVED, |
4357 network_delegate.stage_blocked_for_callback()); | 4364 network_delegate.stage_blocked_for_callback()); |
4358 EXPECT_EQ(0, network_delegate.completed_requests()); | 4365 EXPECT_EQ(0, network_delegate.completed_requests()); |
4359 // Cancel before callback. | 4366 // Cancel before callback. |
4360 r->Cancel(); | 4367 r->Cancel(); |
4361 // Ensure that network delegate is notified. | 4368 // Ensure that network delegate is notified. |
4362 EXPECT_EQ(1, network_delegate.completed_requests()); | 4369 EXPECT_EQ(1, network_delegate.completed_requests()); |
4363 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); | 4370 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); |
4364 EXPECT_EQ(ERR_ABORTED, r->status().error()); | 4371 EXPECT_THAT(r->status().error(), IsError(ERR_ABORTED)); |
4365 EXPECT_EQ(1, network_delegate.created_requests()); | 4372 EXPECT_EQ(1, network_delegate.created_requests()); |
4366 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4373 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4367 } | 4374 } |
4368 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4375 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4369 } | 4376 } |
4370 | 4377 |
4371 // Tests that we can handle when a network request was canceled while we were | 4378 // Tests that we can handle when a network request was canceled while we were |
4372 // waiting for the network delegate. | 4379 // waiting for the network delegate. |
4373 // Part 4: Request is cancelled while waiting for OnAuthRequired callback. | 4380 // Part 4: Request is cancelled while waiting for OnAuthRequired callback. |
4374 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting4) { | 4381 TEST_F(URLRequestTestHTTP, NetworkDelegateCancelWhileWaiting4) { |
(...skipping 15 matching lines...) Expand all Loading... |
4390 r->Start(); | 4397 r->Start(); |
4391 base::RunLoop().Run(); | 4398 base::RunLoop().Run(); |
4392 EXPECT_EQ(BlockingNetworkDelegate::ON_AUTH_REQUIRED, | 4399 EXPECT_EQ(BlockingNetworkDelegate::ON_AUTH_REQUIRED, |
4393 network_delegate.stage_blocked_for_callback()); | 4400 network_delegate.stage_blocked_for_callback()); |
4394 EXPECT_EQ(0, network_delegate.completed_requests()); | 4401 EXPECT_EQ(0, network_delegate.completed_requests()); |
4395 // Cancel before callback. | 4402 // Cancel before callback. |
4396 r->Cancel(); | 4403 r->Cancel(); |
4397 // Ensure that network delegate is notified. | 4404 // Ensure that network delegate is notified. |
4398 EXPECT_EQ(1, network_delegate.completed_requests()); | 4405 EXPECT_EQ(1, network_delegate.completed_requests()); |
4399 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); | 4406 EXPECT_EQ(URLRequestStatus::CANCELED, r->status().status()); |
4400 EXPECT_EQ(ERR_ABORTED, r->status().error()); | 4407 EXPECT_THAT(r->status().error(), IsError(ERR_ABORTED)); |
4401 EXPECT_EQ(1, network_delegate.created_requests()); | 4408 EXPECT_EQ(1, network_delegate.created_requests()); |
4402 EXPECT_EQ(0, network_delegate.destroyed_requests()); | 4409 EXPECT_EQ(0, network_delegate.destroyed_requests()); |
4403 } | 4410 } |
4404 EXPECT_EQ(1, network_delegate.destroyed_requests()); | 4411 EXPECT_EQ(1, network_delegate.destroyed_requests()); |
4405 } | 4412 } |
4406 | 4413 |
4407 namespace { | 4414 namespace { |
4408 | 4415 |
4409 std::unique_ptr<test_server::HttpResponse> HandleServerAuthConnect( | 4416 std::unique_ptr<test_server::HttpResponse> HandleServerAuthConnect( |
4410 const test_server::HttpRequest& request) { | 4417 const test_server::HttpRequest& request) { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4442 GURL("https://www.server-auth.com/"), DEFAULT_PRIORITY, &d)); | 4449 GURL("https://www.server-auth.com/"), DEFAULT_PRIORITY, &d)); |
4443 | 4450 |
4444 r->Start(); | 4451 r->Start(); |
4445 EXPECT_TRUE(r->is_pending()); | 4452 EXPECT_TRUE(r->is_pending()); |
4446 | 4453 |
4447 base::RunLoop().Run(); | 4454 base::RunLoop().Run(); |
4448 | 4455 |
4449 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 4456 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
4450 // The proxy server is not set before failure. | 4457 // The proxy server is not set before failure. |
4451 EXPECT_TRUE(r->proxy_server().IsEmpty()); | 4458 EXPECT_TRUE(r->proxy_server().IsEmpty()); |
4452 EXPECT_EQ(ERR_TUNNEL_CONNECTION_FAILED, r->status().error()); | 4459 EXPECT_THAT(r->status().error(), IsError(ERR_TUNNEL_CONNECTION_FAILED)); |
4453 } | 4460 } |
4454 } | 4461 } |
4455 | 4462 |
4456 TEST_F(URLRequestTestHTTP, GetTest_NoCache) { | 4463 TEST_F(URLRequestTestHTTP, GetTest_NoCache) { |
4457 ASSERT_TRUE(http_test_server()->Start()); | 4464 ASSERT_TRUE(http_test_server()->Start()); |
4458 | 4465 |
4459 TestDelegate d; | 4466 TestDelegate d; |
4460 { | 4467 { |
4461 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( | 4468 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
4462 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); | 4469 http_test_server()->GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); |
(...skipping 1292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5755 | 5762 |
5756 r->Start(); | 5763 r->Start(); |
5757 EXPECT_TRUE(r->is_pending()); | 5764 EXPECT_TRUE(r->is_pending()); |
5758 | 5765 |
5759 base::RunLoop().Run(); | 5766 base::RunLoop().Run(); |
5760 | 5767 |
5761 EXPECT_TRUE(d.request_failed()); | 5768 EXPECT_TRUE(d.request_failed()); |
5762 EXPECT_FALSE(d.received_data_before_response()); | 5769 EXPECT_FALSE(d.received_data_before_response()); |
5763 EXPECT_EQ(0, d.bytes_received()); | 5770 EXPECT_EQ(0, d.bytes_received()); |
5764 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 5771 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
5765 EXPECT_EQ(ERR_FILE_NOT_FOUND, r->status().error()); | 5772 EXPECT_THAT(r->status().error(), IsError(ERR_FILE_NOT_FOUND)); |
5766 } | 5773 } |
5767 } | 5774 } |
5768 | 5775 |
5769 namespace { | 5776 namespace { |
5770 | 5777 |
5771 // Adds a standard set of data to an upload for chunked upload integration | 5778 // Adds a standard set of data to an upload for chunked upload integration |
5772 // tests. | 5779 // tests. |
5773 void AddDataToUpload(ChunkedUploadDataStream::Writer* writer) { | 5780 void AddDataToUpload(ChunkedUploadDataStream::Writer* writer) { |
5774 writer->AppendData("a", 1, false); | 5781 writer->AppendData("a", 1, false); |
5775 writer->AppendData("bcd", 3, false); | 5782 writer->AppendData("bcd", 3, false); |
(...skipping 773 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6549 ASSERT_TRUE(http_test_server()->Start()); | 6556 ASSERT_TRUE(http_test_server()->Start()); |
6550 | 6557 |
6551 TestDelegate d; | 6558 TestDelegate d; |
6552 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 6559 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
6553 http_test_server()->GetURL("/redirect-to-file.html"), DEFAULT_PRIORITY, | 6560 http_test_server()->GetURL("/redirect-to-file.html"), DEFAULT_PRIORITY, |
6554 &d)); | 6561 &d)); |
6555 req->Start(); | 6562 req->Start(); |
6556 base::RunLoop().Run(); | 6563 base::RunLoop().Run(); |
6557 | 6564 |
6558 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); | 6565 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); |
6559 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req->status().error()); | 6566 EXPECT_THAT(req->status().error(), IsError(ERR_UNSAFE_REDIRECT)); |
6560 } | 6567 } |
6561 #endif // !defined(DISABLE_FILE_SUPPORT) | 6568 #endif // !defined(DISABLE_FILE_SUPPORT) |
6562 | 6569 |
6563 TEST_F(URLRequestTestHTTP, RestrictDataRedirects) { | 6570 TEST_F(URLRequestTestHTTP, RestrictDataRedirects) { |
6564 ASSERT_TRUE(http_test_server()->Start()); | 6571 ASSERT_TRUE(http_test_server()->Start()); |
6565 | 6572 |
6566 TestDelegate d; | 6573 TestDelegate d; |
6567 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 6574 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
6568 http_test_server()->GetURL("/redirect-to-data.html"), DEFAULT_PRIORITY, | 6575 http_test_server()->GetURL("/redirect-to-data.html"), DEFAULT_PRIORITY, |
6569 &d)); | 6576 &d)); |
6570 req->Start(); | 6577 req->Start(); |
6571 base::RunLoop().Run(); | 6578 base::RunLoop().Run(); |
6572 | 6579 |
6573 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); | 6580 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); |
6574 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req->status().error()); | 6581 EXPECT_THAT(req->status().error(), IsError(ERR_UNSAFE_REDIRECT)); |
6575 } | 6582 } |
6576 | 6583 |
6577 TEST_F(URLRequestTestHTTP, RedirectToInvalidURL) { | 6584 TEST_F(URLRequestTestHTTP, RedirectToInvalidURL) { |
6578 ASSERT_TRUE(http_test_server()->Start()); | 6585 ASSERT_TRUE(http_test_server()->Start()); |
6579 | 6586 |
6580 TestDelegate d; | 6587 TestDelegate d; |
6581 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 6588 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
6582 http_test_server()->GetURL("/redirect-to-invalid-url.html"), | 6589 http_test_server()->GetURL("/redirect-to-invalid-url.html"), |
6583 DEFAULT_PRIORITY, &d)); | 6590 DEFAULT_PRIORITY, &d)); |
6584 req->Start(); | 6591 req->Start(); |
6585 base::RunLoop().Run(); | 6592 base::RunLoop().Run(); |
6586 | 6593 |
6587 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); | 6594 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); |
6588 EXPECT_EQ(ERR_INVALID_URL, req->status().error()); | 6595 EXPECT_THAT(req->status().error(), IsError(ERR_INVALID_URL)); |
6589 } | 6596 } |
6590 | 6597 |
6591 // Make sure redirects are cached, despite not reading their bodies. | 6598 // Make sure redirects are cached, despite not reading their bodies. |
6592 TEST_F(URLRequestTestHTTP, CacheRedirect) { | 6599 TEST_F(URLRequestTestHTTP, CacheRedirect) { |
6593 ASSERT_TRUE(http_test_server()->Start()); | 6600 ASSERT_TRUE(http_test_server()->Start()); |
6594 GURL redirect_url = | 6601 GURL redirect_url = |
6595 http_test_server()->GetURL("/redirect302-to-echo-cacheable"); | 6602 http_test_server()->GetURL("/redirect302-to-echo-cacheable"); |
6596 | 6603 |
6597 { | 6604 { |
6598 TestDelegate d; | 6605 TestDelegate d; |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6676 { | 6683 { |
6677 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( | 6684 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
6678 http_test_server()->GetURL("/whatever"), DEFAULT_PRIORITY, &d)); | 6685 http_test_server()->GetURL("/whatever"), DEFAULT_PRIORITY, &d)); |
6679 | 6686 |
6680 r->Start(); | 6687 r->Start(); |
6681 base::RunLoop().Run(); | 6688 base::RunLoop().Run(); |
6682 | 6689 |
6683 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 6690 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
6684 | 6691 |
6685 EXPECT_EQ(2U, r->url_chain().size()); | 6692 EXPECT_EQ(2U, r->url_chain().size()); |
6686 EXPECT_EQ(OK, r->status().error()); | 6693 EXPECT_THAT(r->status().error(), IsOk()); |
6687 EXPECT_EQ(unsafe_url, r->url()); | 6694 EXPECT_EQ(unsafe_url, r->url()); |
6688 EXPECT_EQ("this-is-considered-an-unsafe-url", d.data_received()); | 6695 EXPECT_EQ("this-is-considered-an-unsafe-url", d.data_received()); |
6689 } | 6696 } |
6690 } | 6697 } |
6691 | 6698 |
6692 // Tests that a redirect to a different unsafe URL is blocked, even after adding | 6699 // Tests that a redirect to a different unsafe URL is blocked, even after adding |
6693 // some other URL to the whitelist. | 6700 // some other URL to the whitelist. |
6694 TEST_F(URLRequestTestHTTP, UnsafeRedirectToDifferentUnsafeURL) { | 6701 TEST_F(URLRequestTestHTTP, UnsafeRedirectToDifferentUnsafeURL) { |
6695 ASSERT_TRUE(http_test_server()->Start()); | 6702 ASSERT_TRUE(http_test_server()->Start()); |
6696 | 6703 |
6697 GURL unsafe_url("data:text/html,something"); | 6704 GURL unsafe_url("data:text/html,something"); |
6698 GURL different_unsafe_url("data:text/html,something-else"); | 6705 GURL different_unsafe_url("data:text/html,something-else"); |
6699 default_network_delegate_.set_redirect_on_headers_received_url(unsafe_url); | 6706 default_network_delegate_.set_redirect_on_headers_received_url(unsafe_url); |
6700 default_network_delegate_.set_allowed_unsafe_redirect_url( | 6707 default_network_delegate_.set_allowed_unsafe_redirect_url( |
6701 different_unsafe_url); | 6708 different_unsafe_url); |
6702 | 6709 |
6703 TestDelegate d; | 6710 TestDelegate d; |
6704 { | 6711 { |
6705 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( | 6712 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
6706 http_test_server()->GetURL("/whatever"), DEFAULT_PRIORITY, &d)); | 6713 http_test_server()->GetURL("/whatever"), DEFAULT_PRIORITY, &d)); |
6707 | 6714 |
6708 r->Start(); | 6715 r->Start(); |
6709 base::RunLoop().Run(); | 6716 base::RunLoop().Run(); |
6710 | 6717 |
6711 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 6718 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
6712 EXPECT_EQ(ERR_UNSAFE_REDIRECT, r->status().error()); | 6719 EXPECT_THAT(r->status().error(), IsError(ERR_UNSAFE_REDIRECT)); |
6713 } | 6720 } |
6714 } | 6721 } |
6715 | 6722 |
6716 // Redirects from an URL with fragment to an unsafe URL with fragment should | 6723 // Redirects from an URL with fragment to an unsafe URL with fragment should |
6717 // be allowed, and the reference fragment of the target URL should be preserved. | 6724 // be allowed, and the reference fragment of the target URL should be preserved. |
6718 TEST_F(URLRequestTestHTTP, UnsafeRedirectWithDifferentReferenceFragment) { | 6725 TEST_F(URLRequestTestHTTP, UnsafeRedirectWithDifferentReferenceFragment) { |
6719 ASSERT_TRUE(http_test_server()->Start()); | 6726 ASSERT_TRUE(http_test_server()->Start()); |
6720 | 6727 |
6721 GURL original_url(http_test_server()->GetURL("/original#fragment1")); | 6728 GURL original_url(http_test_server()->GetURL("/original#fragment1")); |
6722 GURL unsafe_url("data:,url-marked-safe-and-used-in-redirect#fragment2"); | 6729 GURL unsafe_url("data:,url-marked-safe-and-used-in-redirect#fragment2"); |
6723 GURL expected_url("data:,url-marked-safe-and-used-in-redirect#fragment2"); | 6730 GURL expected_url("data:,url-marked-safe-and-used-in-redirect#fragment2"); |
6724 | 6731 |
6725 default_network_delegate_.set_redirect_on_headers_received_url(unsafe_url); | 6732 default_network_delegate_.set_redirect_on_headers_received_url(unsafe_url); |
6726 default_network_delegate_.set_allowed_unsafe_redirect_url(unsafe_url); | 6733 default_network_delegate_.set_allowed_unsafe_redirect_url(unsafe_url); |
6727 | 6734 |
6728 TestDelegate d; | 6735 TestDelegate d; |
6729 { | 6736 { |
6730 std::unique_ptr<URLRequest> r( | 6737 std::unique_ptr<URLRequest> r( |
6731 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 6738 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
6732 | 6739 |
6733 r->Start(); | 6740 r->Start(); |
6734 base::RunLoop().Run(); | 6741 base::RunLoop().Run(); |
6735 | 6742 |
6736 EXPECT_EQ(2U, r->url_chain().size()); | 6743 EXPECT_EQ(2U, r->url_chain().size()); |
6737 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 6744 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
6738 EXPECT_EQ(OK, r->status().error()); | 6745 EXPECT_THAT(r->status().error(), IsOk()); |
6739 EXPECT_EQ(original_url, r->original_url()); | 6746 EXPECT_EQ(original_url, r->original_url()); |
6740 EXPECT_EQ(expected_url, r->url()); | 6747 EXPECT_EQ(expected_url, r->url()); |
6741 } | 6748 } |
6742 } | 6749 } |
6743 | 6750 |
6744 // When a delegate has specified a safe redirect URL, but it does not match the | 6751 // When a delegate has specified a safe redirect URL, but it does not match the |
6745 // redirect target, then do not prevent the reference fragment from being added. | 6752 // redirect target, then do not prevent the reference fragment from being added. |
6746 TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragmentAndUnrelatedUnsafeUrl) { | 6753 TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragmentAndUnrelatedUnsafeUrl) { |
6747 ASSERT_TRUE(http_test_server()->Start()); | 6754 ASSERT_TRUE(http_test_server()->Start()); |
6748 | 6755 |
6749 GURL original_url(http_test_server()->GetURL("/original#expected-fragment")); | 6756 GURL original_url(http_test_server()->GetURL("/original#expected-fragment")); |
6750 GURL unsafe_url("data:text/html,this-url-does-not-match-redirect-url"); | 6757 GURL unsafe_url("data:text/html,this-url-does-not-match-redirect-url"); |
6751 GURL redirect_url(http_test_server()->GetURL("/target")); | 6758 GURL redirect_url(http_test_server()->GetURL("/target")); |
6752 GURL expected_redirect_url( | 6759 GURL expected_redirect_url( |
6753 http_test_server()->GetURL("/target#expected-fragment")); | 6760 http_test_server()->GetURL("/target#expected-fragment")); |
6754 | 6761 |
6755 default_network_delegate_.set_redirect_on_headers_received_url(redirect_url); | 6762 default_network_delegate_.set_redirect_on_headers_received_url(redirect_url); |
6756 default_network_delegate_.set_allowed_unsafe_redirect_url(unsafe_url); | 6763 default_network_delegate_.set_allowed_unsafe_redirect_url(unsafe_url); |
6757 | 6764 |
6758 TestDelegate d; | 6765 TestDelegate d; |
6759 { | 6766 { |
6760 std::unique_ptr<URLRequest> r( | 6767 std::unique_ptr<URLRequest> r( |
6761 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 6768 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
6762 | 6769 |
6763 r->Start(); | 6770 r->Start(); |
6764 base::RunLoop().Run(); | 6771 base::RunLoop().Run(); |
6765 | 6772 |
6766 EXPECT_EQ(2U, r->url_chain().size()); | 6773 EXPECT_EQ(2U, r->url_chain().size()); |
6767 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 6774 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
6768 EXPECT_EQ(OK, r->status().error()); | 6775 EXPECT_THAT(r->status().error(), IsOk()); |
6769 EXPECT_EQ(original_url, r->original_url()); | 6776 EXPECT_EQ(original_url, r->original_url()); |
6770 EXPECT_EQ(expected_redirect_url, r->url()); | 6777 EXPECT_EQ(expected_redirect_url, r->url()); |
6771 } | 6778 } |
6772 } | 6779 } |
6773 | 6780 |
6774 // When a delegate has specified a safe redirect URL, assume that the redirect | 6781 // When a delegate has specified a safe redirect URL, assume that the redirect |
6775 // URL should not be changed. In particular, the reference fragment should not | 6782 // URL should not be changed. In particular, the reference fragment should not |
6776 // be modified. | 6783 // be modified. |
6777 TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragment) { | 6784 TEST_F(URLRequestTestHTTP, RedirectWithReferenceFragment) { |
6778 ASSERT_TRUE(http_test_server()->Start()); | 6785 ASSERT_TRUE(http_test_server()->Start()); |
6779 | 6786 |
6780 GURL original_url( | 6787 GURL original_url( |
6781 http_test_server()->GetURL("/original#should-not-be-appended")); | 6788 http_test_server()->GetURL("/original#should-not-be-appended")); |
6782 GURL redirect_url("data:text/html,expect-no-reference-fragment"); | 6789 GURL redirect_url("data:text/html,expect-no-reference-fragment"); |
6783 | 6790 |
6784 default_network_delegate_.set_redirect_on_headers_received_url(redirect_url); | 6791 default_network_delegate_.set_redirect_on_headers_received_url(redirect_url); |
6785 default_network_delegate_.set_allowed_unsafe_redirect_url(redirect_url); | 6792 default_network_delegate_.set_allowed_unsafe_redirect_url(redirect_url); |
6786 | 6793 |
6787 TestDelegate d; | 6794 TestDelegate d; |
6788 { | 6795 { |
6789 std::unique_ptr<URLRequest> r( | 6796 std::unique_ptr<URLRequest> r( |
6790 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 6797 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
6791 | 6798 |
6792 r->Start(); | 6799 r->Start(); |
6793 base::RunLoop().Run(); | 6800 base::RunLoop().Run(); |
6794 | 6801 |
6795 EXPECT_EQ(2U, r->url_chain().size()); | 6802 EXPECT_EQ(2U, r->url_chain().size()); |
6796 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 6803 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
6797 EXPECT_EQ(OK, r->status().error()); | 6804 EXPECT_THAT(r->status().error(), IsOk()); |
6798 EXPECT_EQ(original_url, r->original_url()); | 6805 EXPECT_EQ(original_url, r->original_url()); |
6799 EXPECT_EQ(redirect_url, r->url()); | 6806 EXPECT_EQ(redirect_url, r->url()); |
6800 } | 6807 } |
6801 } | 6808 } |
6802 | 6809 |
6803 // When a URLRequestRedirectJob is created, the redirection must be followed and | 6810 // When a URLRequestRedirectJob is created, the redirection must be followed and |
6804 // the reference fragment of the target URL must not be modified. | 6811 // the reference fragment of the target URL must not be modified. |
6805 TEST_F(URLRequestTestHTTP, RedirectJobWithReferenceFragment) { | 6812 TEST_F(URLRequestTestHTTP, RedirectJobWithReferenceFragment) { |
6806 ASSERT_TRUE(http_test_server()->Start()); | 6813 ASSERT_TRUE(http_test_server()->Start()); |
6807 | 6814 |
6808 GURL original_url( | 6815 GURL original_url( |
6809 http_test_server()->GetURL("/original#should-not-be-appended")); | 6816 http_test_server()->GetURL("/original#should-not-be-appended")); |
6810 GURL redirect_url(http_test_server()->GetURL("/echo")); | 6817 GURL redirect_url(http_test_server()->GetURL("/echo")); |
6811 | 6818 |
6812 TestDelegate d; | 6819 TestDelegate d; |
6813 std::unique_ptr<URLRequest> r( | 6820 std::unique_ptr<URLRequest> r( |
6814 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 6821 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
6815 | 6822 |
6816 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( | 6823 std::unique_ptr<URLRequestRedirectJob> job(new URLRequestRedirectJob( |
6817 r.get(), &default_network_delegate_, redirect_url, | 6824 r.get(), &default_network_delegate_, redirect_url, |
6818 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); | 6825 URLRequestRedirectJob::REDIRECT_302_FOUND, "Very Good Reason")); |
6819 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 6826 AddTestInterceptor()->set_main_intercept_job(std::move(job)); |
6820 | 6827 |
6821 r->Start(); | 6828 r->Start(); |
6822 base::RunLoop().Run(); | 6829 base::RunLoop().Run(); |
6823 | 6830 |
6824 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 6831 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
6825 EXPECT_EQ(OK, r->status().error()); | 6832 EXPECT_THAT(r->status().error(), IsOk()); |
6826 EXPECT_EQ(original_url, r->original_url()); | 6833 EXPECT_EQ(original_url, r->original_url()); |
6827 EXPECT_EQ(redirect_url, r->url()); | 6834 EXPECT_EQ(redirect_url, r->url()); |
6828 } | 6835 } |
6829 | 6836 |
6830 TEST_F(URLRequestTestHTTP, UnsupportedReferrerScheme) { | 6837 TEST_F(URLRequestTestHTTP, UnsupportedReferrerScheme) { |
6831 ASSERT_TRUE(http_test_server()->Start()); | 6838 ASSERT_TRUE(http_test_server()->Start()); |
6832 | 6839 |
6833 const std::string referrer("foobar://totally.legit.referrer"); | 6840 const std::string referrer("foobar://totally.legit.referrer"); |
6834 TestDelegate d; | 6841 TestDelegate d; |
6835 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( | 6842 std::unique_ptr<URLRequest> req(default_context_.CreateRequest( |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7456 | 7463 |
7457 TestDelegate d; | 7464 TestDelegate d; |
7458 const GURL url = http_test_server()->GetURL("/308-without-location-header"); | 7465 const GURL url = http_test_server()->GetURL("/308-without-location-header"); |
7459 | 7466 |
7460 std::unique_ptr<URLRequest> request( | 7467 std::unique_ptr<URLRequest> request( |
7461 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 7468 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
7462 | 7469 |
7463 request->Start(); | 7470 request->Start(); |
7464 base::RunLoop().Run(); | 7471 base::RunLoop().Run(); |
7465 EXPECT_EQ(URLRequestStatus::SUCCESS, request->status().status()); | 7472 EXPECT_EQ(URLRequestStatus::SUCCESS, request->status().status()); |
7466 EXPECT_EQ(OK, request->status().error()); | 7473 EXPECT_THAT(request->status().error(), IsOk()); |
7467 EXPECT_EQ(0, d.received_redirect_count()); | 7474 EXPECT_EQ(0, d.received_redirect_count()); |
7468 EXPECT_EQ(308, request->response_headers()->response_code()); | 7475 EXPECT_EQ(308, request->response_headers()->response_code()); |
7469 EXPECT_EQ("This is not a redirect.", d.data_received()); | 7476 EXPECT_EQ("This is not a redirect.", d.data_received()); |
7470 } | 7477 } |
7471 | 7478 |
7472 TEST_F(URLRequestTestHTTP, Redirect302PreserveReferenceFragment) { | 7479 TEST_F(URLRequestTestHTTP, Redirect302PreserveReferenceFragment) { |
7473 ASSERT_TRUE(http_test_server()->Start()); | 7480 ASSERT_TRUE(http_test_server()->Start()); |
7474 | 7481 |
7475 GURL original_url( | 7482 GURL original_url( |
7476 http_test_server()->GetURL("/redirect302-to-echo#fragment")); | 7483 http_test_server()->GetURL("/redirect302-to-echo#fragment")); |
7477 GURL expected_url(http_test_server()->GetURL("/echo#fragment")); | 7484 GURL expected_url(http_test_server()->GetURL("/echo#fragment")); |
7478 | 7485 |
7479 TestDelegate d; | 7486 TestDelegate d; |
7480 { | 7487 { |
7481 std::unique_ptr<URLRequest> r( | 7488 std::unique_ptr<URLRequest> r( |
7482 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); | 7489 default_context_.CreateRequest(original_url, DEFAULT_PRIORITY, &d)); |
7483 | 7490 |
7484 r->Start(); | 7491 r->Start(); |
7485 base::RunLoop().Run(); | 7492 base::RunLoop().Run(); |
7486 | 7493 |
7487 EXPECT_EQ(2U, r->url_chain().size()); | 7494 EXPECT_EQ(2U, r->url_chain().size()); |
7488 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 7495 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
7489 EXPECT_EQ(OK, r->status().error()); | 7496 EXPECT_THAT(r->status().error(), IsOk()); |
7490 EXPECT_EQ(original_url, r->original_url()); | 7497 EXPECT_EQ(original_url, r->original_url()); |
7491 EXPECT_EQ(expected_url, r->url()); | 7498 EXPECT_EQ(expected_url, r->url()); |
7492 } | 7499 } |
7493 } | 7500 } |
7494 | 7501 |
7495 TEST_F(URLRequestTestHTTP, RedirectPreserveFirstPartyURL) { | 7502 TEST_F(URLRequestTestHTTP, RedirectPreserveFirstPartyURL) { |
7496 ASSERT_TRUE(http_test_server()->Start()); | 7503 ASSERT_TRUE(http_test_server()->Start()); |
7497 | 7504 |
7498 GURL url(http_test_server()->GetURL("/redirect302-to-echo")); | 7505 GURL url(http_test_server()->GetURL("/redirect302-to-echo")); |
7499 GURL first_party_url("http://example.com"); | 7506 GURL first_party_url("http://example.com"); |
7500 | 7507 |
7501 TestDelegate d; | 7508 TestDelegate d; |
7502 { | 7509 { |
7503 std::unique_ptr<URLRequest> r( | 7510 std::unique_ptr<URLRequest> r( |
7504 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 7511 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
7505 r->set_first_party_for_cookies(first_party_url); | 7512 r->set_first_party_for_cookies(first_party_url); |
7506 | 7513 |
7507 r->Start(); | 7514 r->Start(); |
7508 base::RunLoop().Run(); | 7515 base::RunLoop().Run(); |
7509 | 7516 |
7510 EXPECT_EQ(2U, r->url_chain().size()); | 7517 EXPECT_EQ(2U, r->url_chain().size()); |
7511 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 7518 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
7512 EXPECT_EQ(OK, r->status().error()); | 7519 EXPECT_THAT(r->status().error(), IsOk()); |
7513 EXPECT_EQ(first_party_url, r->first_party_for_cookies()); | 7520 EXPECT_EQ(first_party_url, r->first_party_for_cookies()); |
7514 } | 7521 } |
7515 } | 7522 } |
7516 | 7523 |
7517 TEST_F(URLRequestTestHTTP, RedirectUpdateFirstPartyURL) { | 7524 TEST_F(URLRequestTestHTTP, RedirectUpdateFirstPartyURL) { |
7518 ASSERT_TRUE(http_test_server()->Start()); | 7525 ASSERT_TRUE(http_test_server()->Start()); |
7519 | 7526 |
7520 GURL url(http_test_server()->GetURL("/redirect302-to-echo")); | 7527 GURL url(http_test_server()->GetURL("/redirect302-to-echo")); |
7521 GURL original_first_party_url("http://example.com"); | 7528 GURL original_first_party_url("http://example.com"); |
7522 GURL expected_first_party_url(http_test_server()->GetURL("/echo")); | 7529 GURL expected_first_party_url(http_test_server()->GetURL("/echo")); |
7523 | 7530 |
7524 TestDelegate d; | 7531 TestDelegate d; |
7525 { | 7532 { |
7526 std::unique_ptr<URLRequest> r( | 7533 std::unique_ptr<URLRequest> r( |
7527 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 7534 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
7528 r->set_first_party_for_cookies(original_first_party_url); | 7535 r->set_first_party_for_cookies(original_first_party_url); |
7529 r->set_first_party_url_policy( | 7536 r->set_first_party_url_policy( |
7530 URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT); | 7537 URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT); |
7531 | 7538 |
7532 r->Start(); | 7539 r->Start(); |
7533 base::RunLoop().Run(); | 7540 base::RunLoop().Run(); |
7534 | 7541 |
7535 EXPECT_EQ(2U, r->url_chain().size()); | 7542 EXPECT_EQ(2U, r->url_chain().size()); |
7536 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); | 7543 EXPECT_EQ(URLRequestStatus::SUCCESS, r->status().status()); |
7537 EXPECT_EQ(OK, r->status().error()); | 7544 EXPECT_THAT(r->status().error(), IsOk()); |
7538 EXPECT_EQ(expected_first_party_url, r->first_party_for_cookies()); | 7545 EXPECT_EQ(expected_first_party_url, r->first_party_for_cookies()); |
7539 } | 7546 } |
7540 } | 7547 } |
7541 | 7548 |
7542 TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { | 7549 TEST_F(URLRequestTestHTTP, InterceptPost302RedirectGet) { |
7543 ASSERT_TRUE(http_test_server()->Start()); | 7550 ASSERT_TRUE(http_test_server()->Start()); |
7544 | 7551 |
7545 const char kData[] = "hello world"; | 7552 const char kData[] = "hello world"; |
7546 | 7553 |
7547 TestDelegate d; | 7554 TestDelegate d; |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7818 context.Init(); | 7825 context.Init(); |
7819 | 7826 |
7820 TestDelegate d; | 7827 TestDelegate d; |
7821 std::unique_ptr<URLRequest> req( | 7828 std::unique_ptr<URLRequest> req( |
7822 context.CreateRequest(GURL("http://127.0.0.1/"), DEFAULT_PRIORITY, &d)); | 7829 context.CreateRequest(GURL("http://127.0.0.1/"), DEFAULT_PRIORITY, &d)); |
7823 req->Start(); | 7830 req->Start(); |
7824 base::RunLoop().Run(); | 7831 base::RunLoop().Run(); |
7825 | 7832 |
7826 EXPECT_TRUE(d.request_failed()); | 7833 EXPECT_TRUE(d.request_failed()); |
7827 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); | 7834 EXPECT_EQ(URLRequestStatus::FAILED, req->status().status()); |
7828 EXPECT_EQ(ERR_NETWORK_IO_SUSPENDED, req->status().error()); | 7835 EXPECT_THAT(req->status().error(), IsError(ERR_NETWORK_IO_SUSPENDED)); |
7829 } | 7836 } |
7830 | 7837 |
7831 namespace { | 7838 namespace { |
7832 | 7839 |
7833 // HttpTransactionFactory that synchronously fails to create transactions. | 7840 // HttpTransactionFactory that synchronously fails to create transactions. |
7834 class FailingHttpTransactionFactory : public HttpTransactionFactory { | 7841 class FailingHttpTransactionFactory : public HttpTransactionFactory { |
7835 public: | 7842 public: |
7836 explicit FailingHttpTransactionFactory(HttpNetworkSession* network_session) | 7843 explicit FailingHttpTransactionFactory(HttpNetworkSession* network_session) |
7837 : network_session_(network_session) {} | 7844 : network_session_(network_session) {} |
7838 | 7845 |
(...skipping 823 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8662 test_server.GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); | 8669 test_server.GetURL("/defaultresponse"), DEFAULT_PRIORITY, &d)); |
8663 | 8670 |
8664 r->Start(); | 8671 r->Start(); |
8665 EXPECT_TRUE(r->is_pending()); | 8672 EXPECT_TRUE(r->is_pending()); |
8666 | 8673 |
8667 base::RunLoop().Run(); | 8674 base::RunLoop().Run(); |
8668 | 8675 |
8669 EXPECT_EQ(1, d.response_started_count()); | 8676 EXPECT_EQ(1, d.response_started_count()); |
8670 EXPECT_FALSE(r->status().is_success()); | 8677 EXPECT_FALSE(r->status().is_success()); |
8671 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 8678 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
8672 EXPECT_EQ(ERR_SSL_OBSOLETE_CIPHER, r->status().error()); | 8679 EXPECT_THAT(r->status().error(), IsError(ERR_SSL_OBSOLETE_CIPHER)); |
8673 } | 8680 } |
8674 } | 8681 } |
8675 | 8682 |
8676 namespace { | 8683 namespace { |
8677 | 8684 |
8678 class SSLClientAuthTestDelegate : public TestDelegate { | 8685 class SSLClientAuthTestDelegate : public TestDelegate { |
8679 public: | 8686 public: |
8680 SSLClientAuthTestDelegate() : on_certificate_requested_count_(0) { | 8687 SSLClientAuthTestDelegate() : on_certificate_requested_count_(0) { |
8681 } | 8688 } |
8682 void OnCertificateRequested(URLRequest* request, | 8689 void OnCertificateRequested(URLRequest* request, |
(...skipping 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9650 { | 9657 { |
9651 std::unique_ptr<URLRequest> r( | 9658 std::unique_ptr<URLRequest> r( |
9652 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); | 9659 default_context_.CreateRequest(url, DEFAULT_PRIORITY, &d)); |
9653 r->Start(); | 9660 r->Start(); |
9654 EXPECT_TRUE(r->is_pending()); | 9661 EXPECT_TRUE(r->is_pending()); |
9655 | 9662 |
9656 base::RunLoop().Run(); | 9663 base::RunLoop().Run(); |
9657 | 9664 |
9658 EXPECT_FALSE(r->is_pending()); | 9665 EXPECT_FALSE(r->is_pending()); |
9659 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); | 9666 EXPECT_EQ(URLRequestStatus::FAILED, r->status().status()); |
9660 EXPECT_EQ(ERR_UNSAFE_PORT, r->status().error()); | 9667 EXPECT_THAT(r->status().error(), IsError(ERR_UNSAFE_PORT)); |
9661 } | 9668 } |
9662 } | 9669 } |
9663 | 9670 |
9664 TEST_F(URLRequestTestFTP, FTPDirectoryListing) { | 9671 TEST_F(URLRequestTestFTP, FTPDirectoryListing) { |
9665 ASSERT_TRUE(ftp_test_server_.Start()); | 9672 ASSERT_TRUE(ftp_test_server_.Start()); |
9666 | 9673 |
9667 TestDelegate d; | 9674 TestDelegate d; |
9668 { | 9675 { |
9669 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( | 9676 std::unique_ptr<URLRequest> r(default_context_.CreateRequest( |
9670 ftp_test_server_.GetURL("/"), DEFAULT_PRIORITY, &d)); | 9677 ftp_test_server_.GetURL("/"), DEFAULT_PRIORITY, &d)); |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9988 AddTestInterceptor()->set_main_intercept_job(std::move(job)); | 9995 AddTestInterceptor()->set_main_intercept_job(std::move(job)); |
9989 | 9996 |
9990 req->Start(); | 9997 req->Start(); |
9991 req->Cancel(); | 9998 req->Cancel(); |
9992 base::RunLoop().RunUntilIdle(); | 9999 base::RunLoop().RunUntilIdle(); |
9993 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); | 10000 EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); |
9994 EXPECT_EQ(0, d.received_redirect_count()); | 10001 EXPECT_EQ(0, d.received_redirect_count()); |
9995 } | 10002 } |
9996 | 10003 |
9997 } // namespace net | 10004 } // namespace net |
OLD | NEW |