| Index: net/proxy/proxy_script_decider_unittest.cc
|
| diff --git a/net/proxy/proxy_script_decider_unittest.cc b/net/proxy/proxy_script_decider_unittest.cc
|
| index dfcfeda300a26d6c72c8c69880eedf2759327118..1a2a368b8ea274c9681499429b56a7795fefba5c 100644
|
| --- a/net/proxy/proxy_script_decider_unittest.cc
|
| +++ b/net/proxy/proxy_script_decider_unittest.cc
|
| @@ -128,6 +128,8 @@ class RuleBasedProxyScriptFetcher : public ProxyScriptFetcher {
|
|
|
| void Cancel() override {}
|
|
|
| + void OnShutdown() override { request_context_ = nullptr; }
|
| +
|
| URLRequestContext* GetRequestContext() const override {
|
| return request_context_;
|
| }
|
| @@ -146,6 +148,7 @@ class MockDhcpProxyScriptFetcher : public DhcpProxyScriptFetcher {
|
| int Fetch(base::string16* utf16_text,
|
| const CompletionCallback& callback) override;
|
| void Cancel() override;
|
| + void OnShutdown() override;
|
| const GURL& GetPacURL() const override;
|
|
|
| virtual void SetPacURL(const GURL& url);
|
| @@ -172,6 +175,8 @@ int MockDhcpProxyScriptFetcher::Fetch(base::string16* utf16_text,
|
|
|
| void MockDhcpProxyScriptFetcher::Cancel() { }
|
|
|
| +void MockDhcpProxyScriptFetcher::OnShutdown() {}
|
| +
|
| const GURL& MockDhcpProxyScriptFetcher::GetPacURL() const {
|
| return gurl_;
|
| }
|
| @@ -333,7 +338,6 @@ class ProxyScriptDeciderQuickCheckTest : public ::testing::Test {
|
| }
|
|
|
| protected:
|
| - std::unique_ptr<ProxyScriptDecider> decider_;
|
| MockHostResolver resolver_;
|
| Rules rules_;
|
| Rules::Rule rule_;
|
| @@ -341,6 +345,7 @@ class ProxyScriptDeciderQuickCheckTest : public ::testing::Test {
|
| RuleBasedProxyScriptFetcher fetcher_;
|
| ProxyConfig config_;
|
| DoNothingDhcpProxyScriptFetcher dhcp_fetcher_;
|
| + std::unique_ptr<ProxyScriptDecider> decider_;
|
|
|
| private:
|
| URLRequestContext request_context_;
|
| @@ -438,6 +443,17 @@ TEST_F(ProxyScriptDeciderQuickCheckTest, ExplicitPacUrl) {
|
| EXPECT_EQ(rule.url, decider_->effective_config().pac_url());
|
| }
|
|
|
| +TEST_F(ProxyScriptDeciderQuickCheckTest, ShutdownDuringResolve) {
|
| + resolver_.set_ondemand_mode(true);
|
| +
|
| + EXPECT_THAT(StartDecider(), IsError(ERR_IO_PENDING));
|
| + EXPECT_TRUE(resolver_.has_pending_requests());
|
| +
|
| + decider_->OnShutdown();
|
| + EXPECT_FALSE(resolver_.has_pending_requests());
|
| + EXPECT_EQ(ERR_CONTEXT_SHUT_DOWN, callback_.WaitForResult());
|
| +}
|
| +
|
| // Regression test for http://crbug.com/409698.
|
| // This test lets the state machine get into state QUICK_CHECK_COMPLETE, then
|
| // destroys the decider, causing a cancel.
|
| @@ -670,6 +686,8 @@ class SynchronousSuccessDhcpFetcher : public DhcpProxyScriptFetcher {
|
|
|
| void Cancel() override {}
|
|
|
| + void OnShutdown() override {}
|
| +
|
| const GURL& GetPacURL() const override { return gurl_; }
|
|
|
| const base::string16& expected_text() const {
|
| @@ -752,6 +770,8 @@ class AsyncFailDhcpFetcher
|
|
|
| void Cancel() override { callback_.Reset(); }
|
|
|
| + void OnShutdown() override {}
|
| +
|
| const GURL& GetPacURL() const override { return dummy_gurl_; }
|
|
|
| void CallbackWithFailure() {
|
|
|