| Index: net/proxy/proxy_service_unittest.cc
|
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
|
| index d41f48cea48b2ec1a10e7727f1407d52567f6a03..b2345d5715803c5bd36fb50e485b152bfb78e02d 100644
|
| --- a/net/proxy/proxy_service_unittest.cc
|
| +++ b/net/proxy/proxy_service_unittest.cc
|
| @@ -541,6 +541,9 @@ TEST(ProxyServiceTest, ProxyFallback) {
|
|
|
| // The second proxy should be specified.
|
| EXPECT_EQ("foopy2:9090", info.proxy_server().ToURI());
|
| + // Report back that the second proxy worked. This will globally mark the
|
| + // first proxy as bad.
|
| + service.ReportSuccess(info);
|
|
|
| TestCompletionCallback callback3;
|
| rv = service.ResolveProxy(url, &info, &callback3, NULL, BoundNetLog());
|
| @@ -584,6 +587,25 @@ TEST(ProxyServiceTest, ProxyFallback) {
|
| EXPECT_FALSE(info.is_direct());
|
| EXPECT_TRUE(info.is_empty());
|
|
|
| + // Look up proxies again
|
| + TestCompletionCallback callback7;
|
| + rv = service.ResolveProxy(url, &info, &callback7, NULL, BoundNetLog());
|
| + EXPECT_EQ(ERR_IO_PENDING, rv);
|
| +
|
| + ASSERT_EQ(1u, resolver->pending_requests().size());
|
| + EXPECT_EQ(url, resolver->pending_requests()[0]->url());
|
| +
|
| + // This time, the first 3 results have been found to be bad, but only the
|
| + // first proxy has been confirmed ...
|
| + resolver->pending_requests()[0]->results()->UseNamedProxy(
|
| + "foopy1:8080;foopy3:7070;foopy2:9090;foopy4:9091");
|
| + resolver->pending_requests()[0]->CompleteNow(OK);
|
| +
|
| + // ... therefore, we should see the second proxy first.
|
| + EXPECT_EQ(OK, callback7.WaitForResult());
|
| + EXPECT_FALSE(info.is_direct());
|
| + EXPECT_EQ("foopy3:7070", info.proxy_server().ToURI());
|
| +
|
| // TODO(nsylvain): Test that the proxy can be retried after the delay.
|
| }
|
|
|
|
|