Chromium Code Reviews| Index: net/proxy/proxy_service_unittest.cc |
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc |
| index c57b23834f90683b68f594eb962f5dd284b2adfd..bffd00033dc8520aee49c1d56c87eab2e5bbbe87 100644 |
| --- a/net/proxy/proxy_service_unittest.cc |
| +++ b/net/proxy/proxy_service_unittest.cc |
| @@ -3685,4 +3685,65 @@ TEST_F(ProxyServiceTest, SanitizeUrlForPacScriptCryptographic) { |
| } |
| } |
| +TEST_F(ProxyServiceTest, OnShutdownWithLiveRequest) { |
|
mmenke
2017/05/01 16:52:14
The tests don't test all paths - this one depends
|
| + MockProxyConfigService* config_service = |
| + new MockProxyConfigService("http://foopy/proxy.pac"); |
| + |
| + MockAsyncProxyResolver resolver; |
| + MockAsyncProxyResolverFactory* factory = |
| + new MockAsyncProxyResolverFactory(true); |
| + |
| + ProxyService service(base::WrapUnique(config_service), |
| + base::WrapUnique(factory), nullptr); |
| + |
| + MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
| + service.SetProxyScriptFetchers( |
| + fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher())); |
| + |
| + ProxyInfo info; |
| + TestCompletionCallback callback; |
| + ProxyService::PacRequest* request; |
| + int rv = service.ResolveProxy(GURL("http://request/"), std::string(), &info, |
| + callback.callback(), &request, nullptr, |
| + NetLogWithSource()); |
| + EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
| + |
| + // The first request should have triggered download of PAC script. |
| + EXPECT_TRUE(fetcher->has_pending_request()); |
| + EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |
| + |
| + service.OnShutdown(); |
| + EXPECT_THAT(callback.WaitForResult(), IsOk()); |
| + EXPECT_FALSE(fetcher->has_pending_request()); |
| + EXPECT_TRUE(info.is_direct()); |
| +} |
| + |
| +TEST_F(ProxyServiceTest, OnShutdownFollowedByRequest) { |
| + MockProxyConfigService* config_service = |
| + new MockProxyConfigService("http://foopy/proxy.pac"); |
| + |
| + MockAsyncProxyResolver resolver; |
| + MockAsyncProxyResolverFactory* factory = |
| + new MockAsyncProxyResolverFactory(true); |
| + |
| + ProxyService service(base::WrapUnique(config_service), |
| + base::WrapUnique(factory), nullptr); |
| + |
| + MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; |
| + service.SetProxyScriptFetchers( |
| + fetcher, base::WrapUnique(new DoNothingDhcpProxyScriptFetcher())); |
| + |
| + service.OnShutdown(); |
| + |
| + ProxyInfo info; |
| + TestCompletionCallback callback; |
| + ProxyService::PacRequest* request; |
| + int rv = service.ResolveProxy(GURL("http://request/"), std::string(), &info, |
| + callback.callback(), &request, nullptr, |
| + NetLogWithSource()); |
| + EXPECT_THAT(rv, IsOk()); |
| + EXPECT_FALSE(fetcher->has_pending_request()); |
| + EXPECT_TRUE(info.is_direct()); |
| +} |
| + |
| } // namespace net |