Index: net/proxy/proxy_resolver_mojo_unittest.cc |
diff --git a/net/proxy/proxy_resolver_mojo_unittest.cc b/net/proxy/proxy_resolver_mojo_unittest.cc |
index 8702236c0399355f6f9886079b7066a7a185d553..27ae43c7cb350bf7514158c0deff03a51ca7fcbb 100644 |
--- a/net/proxy/proxy_resolver_mojo_unittest.cc |
+++ b/net/proxy/proxy_resolver_mojo_unittest.cc |
@@ -401,6 +401,12 @@ class ProxyResolverMojoTest : public testing::Test { |
proxy_resolver_mojo_->SetPacScript(pac_script, pac_callback)); |
} |
+ void DeleteProxyResolverCallback(const CompletionCallback& callback, |
+ int result) { |
+ proxy_resolver_mojo_.reset(); |
+ callback.Run(result); |
+ } |
+ |
MockHostResolver mock_host_resolver_; |
TestMojoProxyResolverFactory mojo_proxy_resolver_factory_; |
scoped_ptr<ProxyResolverMojo> proxy_resolver_mojo_; |
@@ -527,6 +533,34 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_CancelAndSetAgain) { |
EXPECT_EQ(ERR_UNEXPECTED, callback2.GetResult(ERR_IO_PENDING)); |
} |
+TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallback) { |
+ mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
+ 0, SetPacScriptAction::ReturnResult(OK)); |
+ scoped_refptr<ProxyResolverScriptData> pac_script( |
+ ProxyResolverScriptData::FromUTF8(kScriptData)); |
+ TestCompletionCallback callback; |
+ EXPECT_EQ(OK, |
+ callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
+ pac_script, |
+ base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
+ base::Unretained(this), callback.callback())))); |
+ EXPECT_EQ(1, mojo_proxy_resolver_factory_.num_create_calls()); |
+} |
+ |
+TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallbackFromDisconnect) { |
+ mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
+ 0, SetPacScriptAction::Disconnect()); |
+ scoped_refptr<ProxyResolverScriptData> pac_script( |
+ ProxyResolverScriptData::FromUTF8(kScriptData)); |
+ TestCompletionCallback callback; |
+ EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, |
+ callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
+ pac_script, |
+ base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
+ base::Unretained(this), callback.callback())))); |
+ EXPECT_EQ(1, mojo_proxy_resolver_factory_.num_create_calls()); |
+} |
+ |
TEST_F(ProxyResolverMojoTest, GetProxyForURL) { |
mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
0, GetProxyForUrlAction::ReturnServers( |
@@ -732,4 +766,37 @@ TEST_F(ProxyResolverMojoTest, DisconnectAndReconnectInCallback) { |
EXPECT_EQ(2, mojo_proxy_resolver_factory_.num_create_calls()); |
} |
+TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallback) { |
+ mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
+ 0, GetProxyForUrlAction::ReturnServers( |
+ GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
+ SetPacScript(0); |
+ ProxyInfo results; |
+ TestCompletionCallback callback; |
+ ProxyResolver::RequestHandle handle; |
+ BoundNetLog net_log; |
+ EXPECT_EQ(OK, |
+ callback.GetResult(proxy_resolver_mojo_->GetProxyForURL( |
+ GURL(kExampleUrl), &results, |
+ base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
+ base::Unretained(this), callback.callback()), |
+ &handle, net_log))); |
+} |
+ |
+TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallbackFromDisconnect) { |
+ mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
+ 0, GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
+ SetPacScript(0); |
+ ProxyInfo results; |
+ TestCompletionCallback callback; |
+ ProxyResolver::RequestHandle handle; |
+ BoundNetLog net_log; |
+ EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, |
+ callback.GetResult(proxy_resolver_mojo_->GetProxyForURL( |
+ GURL(kExampleUrl), &results, |
+ base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
+ base::Unretained(this), callback.callback()), |
+ &handle, net_log))); |
+} |
+ |
} // namespace net |