Index: net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc |
diff --git a/net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc b/net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc |
index 3c5c4f0584f4fce3c20ec7b36d5982d8689809c1..03ed2c9d118d24ea57037006b4b0c097175f2130 100644 |
--- a/net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc |
+++ b/net/proxy/dhcp_proxy_script_fetcher_win_unittest.cc |
@@ -392,6 +392,15 @@ class FetcherClient { |
ASSERT_THAT(result, IsError(ERR_IO_PENDING)); |
} |
+ int RunTestThatMayFailSync() { |
+ int result = fetcher_.Fetch( |
+ &pac_text_, |
+ base::Bind(&FetcherClient::OnCompletion, base::Unretained(this))); |
+ if (result != ERR_IO_PENDING) |
+ result_ = result; |
+ return result; |
+ } |
+ |
void RunMessageLoopUntilComplete() { |
while (!finished_) { |
base::RunLoop().RunUntilIdle(); |
@@ -650,6 +659,24 @@ TEST(DhcpProxyScriptFetcherWin, ReuseFetcher) { |
(*test_functions.begin())(&client); |
} |
+TEST(DhcpProxyScriptFetcherWin, OnShutdown) { |
+ FetcherClient client; |
+ TestURLRequestContext context; |
+ std::unique_ptr<DummyDhcpProxyScriptAdapterFetcher> adapter_fetcher( |
+ new DummyDhcpProxyScriptAdapterFetcher(&context, client.GetTaskRunner())); |
+ adapter_fetcher->Configure(true, OK, L"bingo", 1); |
+ client.fetcher_.PushBackAdapter("a", adapter_fetcher.release()); |
+ client.RunTest(); |
+ |
+ client.fetcher_.OnShutdown(); |
+ EXPECT_TRUE(client.finished_); |
+ EXPECT_THAT(client.result_, IsError(ERR_CONTEXT_SHUT_DOWN)); |
+ |
+ client.ResetTestState(); |
+ EXPECT_THAT(client.RunTestThatMayFailSync(), IsError(ERR_CONTEXT_SHUT_DOWN)); |
+ EXPECT_EQ(0u, context.url_requests().size()); |
+} |
+ |
} // namespace |
} // namespace net |