Index: net/url_request/url_request_unittest.cc |
=================================================================== |
--- net/url_request/url_request_unittest.cc (revision 264191) |
+++ net/url_request/url_request_unittest.cc (working copy) |
@@ -6018,6 +6018,36 @@ |
HTTPRedirectMethodTest(url, "HEAD", "HEAD", false); |
} |
+TEST_F(URLRequestTestHTTP, Redirect308Tests) { |
+ ASSERT_TRUE(test_server_.Start()); |
+ |
+ const GURL url = test_server_.GetURL("files/redirect308-to-echo"); |
+ |
+ HTTPRedirectMethodTest(url, "POST", "POST", true); |
+ HTTPRedirectMethodTest(url, "PUT", "PUT", true); |
+ HTTPRedirectMethodTest(url, "HEAD", "HEAD", false); |
+} |
+ |
+// Make sure that 308 responses without bodies are not treated as redirects. |
+// Certain legacy apis that pre-date the response code expect this behavior |
+// (Like Google Drive). |
+TEST_F(URLRequestTestHTTP, NoRedirectOn308WithoutLocationHeader) { |
+ ASSERT_TRUE(test_server_.Start()); |
+ |
+ TestDelegate d; |
+ const GURL url = test_server_.GetURL("files/308-without-location-header"); |
+ |
+ URLRequest request(url, DEFAULT_PRIORITY, &d, &default_context_); |
+ |
+ request.Start(); |
+ base::RunLoop().Run(); |
+ EXPECT_EQ(URLRequestStatus::SUCCESS, request.status().status()); |
+ EXPECT_EQ(OK, request.status().error()); |
+ EXPECT_EQ(0, d.received_redirect_count()); |
+ EXPECT_EQ(308, request.response_headers()->response_code()); |
+ EXPECT_EQ("This is not a redirect.", d.data_received()); |
+} |
+ |
TEST_F(URLRequestTestHTTP, Redirect302PreserveReferenceFragment) { |
ASSERT_TRUE(test_server_.Start()); |