Index: net/url_request/url_request_unittest.cc |
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc |
index dec3ba269d22eb6c5614d7d7413f661a94739eaa..8f7864fe0b42fb4e52bbf508e9f2666a631cc13b 100644 |
--- a/net/url_request/url_request_unittest.cc |
+++ b/net/url_request/url_request_unittest.cc |
@@ -58,6 +58,8 @@ |
#include "net/ssl/ssl_connection_status_flags.h" |
#include "net/test/cert_test_util.h" |
#include "net/test/spawned_test_server/spawned_test_server.h" |
+#include "net/url_request/data_protocol_handler.h" |
+#include "net/url_request/file_protocol_handler.h" |
#include "net/url_request/ftp_protocol_handler.h" |
#include "net/url_request/static_http_user_agent_settings.h" |
#include "net/url_request/url_request.h" |
@@ -558,6 +560,9 @@ class URLRequestTest : public PlatformTest { |
URLRequestTest() : default_context_(true) { |
default_context_.set_network_delegate(&default_network_delegate_); |
default_context_.set_net_log(&net_log_); |
+ job_factory_.SetProtocolHandler("data", new DataProtocolHandler); |
+ job_factory_.SetProtocolHandler("file", new FileProtocolHandler); |
+ default_context_.set_job_factory(&job_factory_); |
default_context_.Init(); |
} |
virtual ~URLRequestTest() {} |
@@ -565,16 +570,15 @@ class URLRequestTest : public PlatformTest { |
// Adds the TestJobInterceptor to the default context. |
TestJobInterceptor* AddTestInterceptor() { |
TestJobInterceptor* protocol_handler_ = new TestJobInterceptor(); |
- job_factory_.reset(new URLRequestJobFactoryImpl); |
- job_factory_->SetProtocolHandler("http", protocol_handler_); |
- default_context_.set_job_factory(job_factory_.get()); |
+ job_factory_.SetProtocolHandler("http", NULL); |
+ job_factory_.SetProtocolHandler("http", protocol_handler_); |
return protocol_handler_; |
} |
protected: |
CapturingNetLog net_log_; |
TestNetworkDelegate default_network_delegate_; // Must outlive URLRequest. |
- scoped_ptr<URLRequestJobFactoryImpl> job_factory_; |
+ URLRequestJobFactoryImpl job_factory_; |
TestURLRequestContext default_context_; |
}; |
@@ -3862,6 +3866,20 @@ TEST_F(URLRequestTestHTTP, ContentTypeNormalizationTest) { |
req.Cancel(); |
} |
+TEST_F(URLRequestTestHTTP, ProtocolHandlerAndFactoryRestrictRedirects) { |
+ // Test URLRequestJobFactory::ProtocolHandler::IsSafeRedirectTarget(). |
+ GURL file_url("file:///foo.txt"); |
+ GURL data_url("data:,foo"); |
+ FileProtocolHandler file_protocol_handler; |
+ EXPECT_FALSE(file_protocol_handler.IsSafeRedirectTarget(file_url)); |
+ DataProtocolHandler data_protocol_handler; |
+ EXPECT_TRUE(data_protocol_handler.IsSafeRedirectTarget(data_url)); |
+ |
+ // Test URLRequestJobFactoryImpl::IsSafeRedirectTarget(). |
+ EXPECT_FALSE(job_factory_.IsSafeRedirectTarget(file_url)); |
+ EXPECT_TRUE(job_factory_.IsSafeRedirectTarget(data_url)); |
+} |
+ |
TEST_F(URLRequestTestHTTP, RestrictRedirects) { |
ASSERT_TRUE(test_server_.Start()); |
@@ -5452,15 +5470,12 @@ TEST_F(URLRequestTestFTP, UnsafePort) { |
ASSERT_TRUE(test_server_.Start()); |
URLRequestJobFactoryImpl job_factory; |
+ FtpNetworkLayer ftp_transaction_factory(default_context_.host_resolver()); |
GURL url("ftp://127.0.0.1:7"); |
- FtpProtocolHandler ftp_protocol_handler( |
- default_context_.ftp_transaction_factory(), |
- default_context_.ftp_auth_cache()); |
job_factory.SetProtocolHandler( |
"ftp", |
- new FtpProtocolHandler(default_context_.ftp_transaction_factory(), |
- default_context_.ftp_auth_cache())); |
+ new FtpProtocolHandler(&ftp_transaction_factory)); |
default_context_.set_job_factory(&job_factory); |
TestDelegate d; |