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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
59 #include "net/http/http_request_headers.h" | 59 #include "net/http/http_request_headers.h" |
60 #include "net/http/http_response_headers.h" | 60 #include "net/http/http_response_headers.h" |
61 #include "net/http/http_util.h" | 61 #include "net/http/http_util.h" |
62 #include "net/ocsp/nss_ocsp.h" | 62 #include "net/ocsp/nss_ocsp.h" |
63 #include "net/proxy/proxy_service.h" | 63 #include "net/proxy/proxy_service.h" |
64 #include "net/socket/ssl_client_socket.h" | 64 #include "net/socket/ssl_client_socket.h" |
65 #include "net/ssl/ssl_connection_status_flags.h" | 65 #include "net/ssl/ssl_connection_status_flags.h" |
66 #include "net/test/cert_test_util.h" | 66 #include "net/test/cert_test_util.h" |
67 #include "net/test/spawned_test_server/spawned_test_server.h" | 67 #include "net/test/spawned_test_server/spawned_test_server.h" |
68 #include "net/url_request/data_protocol_handler.h" | 68 #include "net/url_request/data_protocol_handler.h" |
69 #include "net/url_request/file_protocol_handler.h" | |
70 #include "net/url_request/ftp_protocol_handler.h" | |
71 #include "net/url_request/static_http_user_agent_settings.h" | 69 #include "net/url_request/static_http_user_agent_settings.h" |
72 #include "net/url_request/url_request.h" | 70 #include "net/url_request/url_request.h" |
73 #include "net/url_request/url_request_file_dir_job.h" | |
74 #include "net/url_request/url_request_http_job.h" | 71 #include "net/url_request/url_request_http_job.h" |
75 #include "net/url_request/url_request_job_factory_impl.h" | 72 #include "net/url_request/url_request_job_factory_impl.h" |
76 #include "net/url_request/url_request_redirect_job.h" | 73 #include "net/url_request/url_request_redirect_job.h" |
77 #include "net/url_request/url_request_test_job.h" | 74 #include "net/url_request/url_request_test_job.h" |
78 #include "net/url_request/url_request_test_util.h" | 75 #include "net/url_request/url_request_test_util.h" |
79 #include "testing/gtest/include/gtest/gtest.h" | 76 #include "testing/gtest/include/gtest/gtest.h" |
80 #include "testing/platform_test.h" | 77 #include "testing/platform_test.h" |
81 | 78 |
79 #if !defined(DISABLE_FILE_SUPPORT) | |
80 #include "net/url_request/file_protocol_handler.h" | |
81 #include "net/url_request/url_request_file_dir_job.h" | |
82 #endif | |
83 | |
84 #if !defined(DISABLE_FTP_SUPPORT) | |
85 #include "net/url_request/ftp_protocol_handler.h" | |
86 #endif | |
87 | |
82 #if defined(OS_WIN) | 88 #if defined(OS_WIN) |
83 #include "base/win/scoped_com_initializer.h" | 89 #include "base/win/scoped_com_initializer.h" |
84 #include "base/win/scoped_comptr.h" | 90 #include "base/win/scoped_comptr.h" |
85 #include "base/win/windows_version.h" | 91 #include "base/win/windows_version.h" |
86 #endif | 92 #endif |
87 | 93 |
88 using base::ASCIIToUTF16; | 94 using base::ASCIIToUTF16; |
89 using base::Time; | 95 using base::Time; |
90 | 96 |
91 namespace net { | 97 namespace net { |
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
591 | 597 |
592 } // namespace | 598 } // namespace |
593 | 599 |
594 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. | 600 // Inherit PlatformTest since we require the autorelease pool on Mac OS X. |
595 class URLRequestTest : public PlatformTest { | 601 class URLRequestTest : public PlatformTest { |
596 public: | 602 public: |
597 URLRequestTest() : default_context_(true) { | 603 URLRequestTest() : default_context_(true) { |
598 default_context_.set_network_delegate(&default_network_delegate_); | 604 default_context_.set_network_delegate(&default_network_delegate_); |
599 default_context_.set_net_log(&net_log_); | 605 default_context_.set_net_log(&net_log_); |
600 job_factory_.SetProtocolHandler("data", new DataProtocolHandler); | 606 job_factory_.SetProtocolHandler("data", new DataProtocolHandler); |
607 #if !defined(DISABLE_FILE_SUPPORT) | |
601 job_factory_.SetProtocolHandler( | 608 job_factory_.SetProtocolHandler( |
602 "file", new FileProtocolHandler(base::MessageLoopProxy::current())); | 609 "file", new FileProtocolHandler(base::MessageLoopProxy::current())); |
610 #endif | |
603 default_context_.set_job_factory(&job_factory_); | 611 default_context_.set_job_factory(&job_factory_); |
604 default_context_.Init(); | 612 default_context_.Init(); |
605 } | 613 } |
606 virtual ~URLRequestTest() { | 614 virtual ~URLRequestTest() { |
607 // URLRequestJobs may post clean-up tasks on destruction. | 615 // URLRequestJobs may post clean-up tasks on destruction. |
608 base::RunLoop().RunUntilIdle(); | 616 base::RunLoop().RunUntilIdle(); |
609 } | 617 } |
610 | 618 |
611 // Adds the TestJobInterceptor to the default context. | 619 // Adds the TestJobInterceptor to the default context. |
612 TestJobInterceptor* AddTestInterceptor() { | 620 TestJobInterceptor* AddTestInterceptor() { |
(...skipping 4530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
5143 EXPECT_EQ("text/html", mime_type); | 5151 EXPECT_EQ("text/html", mime_type); |
5144 | 5152 |
5145 std::string charset; | 5153 std::string charset; |
5146 req.GetCharset(&charset); | 5154 req.GetCharset(&charset); |
5147 EXPECT_EQ("utf-8", charset); | 5155 EXPECT_EQ("utf-8", charset); |
5148 req.Cancel(); | 5156 req.Cancel(); |
5149 } | 5157 } |
5150 | 5158 |
5151 TEST_F(URLRequestTestHTTP, ProtocolHandlerAndFactoryRestrictRedirects) { | 5159 TEST_F(URLRequestTestHTTP, ProtocolHandlerAndFactoryRestrictRedirects) { |
5152 // Test URLRequestJobFactory::ProtocolHandler::IsSafeRedirectTarget(). | 5160 // Test URLRequestJobFactory::ProtocolHandler::IsSafeRedirectTarget(). |
5153 GURL file_url("file:///foo.txt"); | |
5154 GURL data_url("data:,foo"); | 5161 GURL data_url("data:,foo"); |
5155 FileProtocolHandler file_protocol_handler(base::MessageLoopProxy::current()); | |
5156 EXPECT_FALSE(file_protocol_handler.IsSafeRedirectTarget(file_url)); | |
5157 DataProtocolHandler data_protocol_handler; | 5162 DataProtocolHandler data_protocol_handler; |
5158 EXPECT_FALSE(data_protocol_handler.IsSafeRedirectTarget(data_url)); | 5163 EXPECT_FALSE(data_protocol_handler.IsSafeRedirectTarget(data_url)); |
5159 | 5164 |
5160 // Test URLRequestJobFactoryImpl::IsSafeRedirectTarget(). | 5165 // Test URLRequestJobFactoryImpl::IsSafeRedirectTarget(). |
5166 EXPECT_FALSE(job_factory_.IsSafeRedirectTarget(data_url)); | |
5167 | |
5168 #if !defined(DISABLE_FILE_SUPPORT) | |
mef
2014/05/06 15:21:30
Should this be a separate test?
mmenke
2014/05/06 18:13:06
Good idea, done.
| |
5169 // Test URLRequestJobFactory::ProtocolHandler::IsSafeRedirectTarget(). | |
5170 GURL file_url("file:///foo.txt"); | |
5171 FileProtocolHandler file_protocol_handler(base::MessageLoopProxy::current()); | |
5172 EXPECT_FALSE(file_protocol_handler.IsSafeRedirectTarget(file_url)); | |
5173 | |
5174 // Test URLRequestJobFactoryImpl::IsSafeRedirectTarget(). | |
5161 EXPECT_FALSE(job_factory_.IsSafeRedirectTarget(file_url)); | 5175 EXPECT_FALSE(job_factory_.IsSafeRedirectTarget(file_url)); |
5162 EXPECT_FALSE(job_factory_.IsSafeRedirectTarget(data_url)); | 5176 #endif // !defined(DISABLE_FILE_SUPPORT) |
5163 } | 5177 } |
5164 | 5178 |
5179 #if !defined(DISABLE_FILE_SUPPORT) | |
5165 TEST_F(URLRequestTestHTTP, RestrictFileRedirects) { | 5180 TEST_F(URLRequestTestHTTP, RestrictFileRedirects) { |
5166 ASSERT_TRUE(test_server_.Start()); | 5181 ASSERT_TRUE(test_server_.Start()); |
5167 | 5182 |
5168 TestDelegate d; | 5183 TestDelegate d; |
5169 URLRequest req(test_server_.GetURL("files/redirect-to-file.html"), | 5184 URLRequest req(test_server_.GetURL("files/redirect-to-file.html"), |
5170 DEFAULT_PRIORITY, | 5185 DEFAULT_PRIORITY, |
5171 &d, | 5186 &d, |
5172 &default_context_); | 5187 &default_context_); |
5173 req.Start(); | 5188 req.Start(); |
5174 base::RunLoop().Run(); | 5189 base::RunLoop().Run(); |
5175 | 5190 |
5176 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); | 5191 EXPECT_EQ(URLRequestStatus::FAILED, req.status().status()); |
5177 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error()); | 5192 EXPECT_EQ(ERR_UNSAFE_REDIRECT, req.status().error()); |
5178 } | 5193 } |
5194 #endif // !defined(DISABLE_FILE_SUPPORT) | |
5179 | 5195 |
5180 TEST_F(URLRequestTestHTTP, RestrictDataRedirects) { | 5196 TEST_F(URLRequestTestHTTP, RestrictDataRedirects) { |
5181 ASSERT_TRUE(test_server_.Start()); | 5197 ASSERT_TRUE(test_server_.Start()); |
5182 | 5198 |
5183 TestDelegate d; | 5199 TestDelegate d; |
5184 URLRequest req(test_server_.GetURL("files/redirect-to-data.html"), | 5200 URLRequest req(test_server_.GetURL("files/redirect-to-data.html"), |
5185 DEFAULT_PRIORITY, | 5201 DEFAULT_PRIORITY, |
5186 &d, | 5202 &d, |
5187 &default_context_); | 5203 &default_context_); |
5188 req.Start(); | 5204 req.Start(); |
(...skipping 2805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7994 | 8010 |
7995 EXPECT_FALSE(r.is_pending()); | 8011 EXPECT_FALSE(r.is_pending()); |
7996 EXPECT_EQ(1, d->response_started_count()); | 8012 EXPECT_EQ(1, d->response_started_count()); |
7997 EXPECT_FALSE(d->received_data_before_response()); | 8013 EXPECT_FALSE(d->received_data_before_response()); |
7998 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); | 8014 EXPECT_EQ(d->bytes_received(), static_cast<int>(file_size)); |
7999 } | 8015 } |
8000 } | 8016 } |
8001 #endif // !defined(DISABLE_FTP_SUPPORT) | 8017 #endif // !defined(DISABLE_FTP_SUPPORT) |
8002 | 8018 |
8003 } // namespace net | 8019 } // namespace net |
OLD | NEW |