Chromium Code Reviews| 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 089721786f44602a36d9ec3da26a2d2debcef4d3..227ea24228fc289080bb6914a75980f57fe55ca3 100644 |
| --- a/net/url_request/url_request_unittest.cc |
| +++ b/net/url_request/url_request_unittest.cc |
| @@ -696,6 +696,43 @@ TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestSynchronously) { |
| EXPECT_EQ(1, network_delegate.destroyed_requests()); |
| } |
| +// Tests that the network delegate can cancel a request asynchronously in |
| +// various stages of the request. |
| +TEST_F(URLRequestTestHTTP, NetworkDelegateCancelRequestAsynchronously) { |
| + ASSERT_TRUE(test_server_.Start()); |
| + |
| + static const BlockingNetworkDelegateWithManualCallback::State |
| + blocking_states[] = { |
| + //BlockingNetworkDelegateWithManualCallback::ON_BEFORE_URL_REQUEST, |
|
vabr (Chromium)
2012/09/10 15:32:59
I'm not sure why, but if blocking ON_BEFORE_URL_RE
|
| + BlockingNetworkDelegateWithManualCallback::ON_BEFORE_SEND_HEADERS, |
| + BlockingNetworkDelegateWithManualCallback::ON_HEADERS_RECEIVED |
| + }; |
| + |
| + for (size_t i = 0; i < arraysize(blocking_states); ++i) { |
| + TestDelegate d; |
| + BlockingNetworkDelegateWithManualCallback network_delegate; |
| + network_delegate.BlockOn(blocking_states[i]); |
| + |
| + TestURLRequestContextWithProxy context( |
| + test_server_.host_port_pair().ToString(), |
| + &network_delegate); |
| + |
| + { |
| + URLRequest r(test_server_.GetURL(""), &d, &context); |
| + |
| + r.Start(); |
| + network_delegate.WaitForState(blocking_states[i]); |
| + network_delegate.DoCallback(ERR_BLOCKED_BY_CLIENT); |
| + |
| + EXPECT_EQ(URLRequestStatus::FAILED, r.status().status()); |
| + EXPECT_EQ(ERR_BLOCKED_BY_CLIENT, r.status().error()); |
| + EXPECT_EQ(1, network_delegate.created_requests()); |
| + EXPECT_EQ(0, network_delegate.destroyed_requests()); |
| + } |
| + EXPECT_EQ(1, network_delegate.destroyed_requests()); |
| + } |
| +} |
| + |
| // Tests that the network delegate can block and redirect a request to a new |
| // URL. |
| TEST_F(URLRequestTestHTTP, NetworkDelegateRedirectRequest) { |