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 2c0af0b141d4bf652bf0294e2359085f29595a6c..46bb5c7ed55a52778bd027d9caa9f6566e2d80f6 100644 |
--- a/net/url_request/url_request_unittest.cc |
+++ b/net/url_request/url_request_unittest.cc |
@@ -9210,4 +9210,26 @@ TEST_F(URLRequestTest, NetworkAccessedSetOnHostResolutionFailure) { |
EXPECT_TRUE(req->response_info().network_accessed); |
} |
+// Test that URLRequest is canceled correctly and with detached request |
+// URLRequestRedirectJob does not crash in StartAsync. |
+// See http://crbug.com/508900 |
+TEST_F(URLRequestTest, URLRequestRedirectJobDetachRequestNoCrash) { |
+ TestDelegate d; |
+ scoped_ptr<URLRequest> req(default_context_.CreateRequest( |
+ GURL("http://not-a-real-domain/"), DEFAULT_PRIORITY, &d)); |
+ |
+ URLRequestRedirectJob* job = new URLRequestRedirectJob( |
+ req.get(), &default_network_delegate_, |
+ GURL("http://this-should-never-be-navigated-to/"), |
+ URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT, "Jumbo shrimp"); |
+ AddTestInterceptor()->set_main_intercept_job(job); |
+ |
+ req->Start(); |
+ req->Cancel(); |
+ job->DetachRequest(); |
+ base::RunLoop().RunUntilIdle(); |
+ EXPECT_EQ(URLRequestStatus::CANCELED, req->status().status()); |
+ EXPECT_EQ(0, d.received_redirect_count()); |
+} |
+ |
} // namespace net |