| 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 cf9ad7d6651907ddc0490679cf0172c19d6a0c62..83bdf004d406cc5a525533445302212edd3baa0a 100644
|
| --- a/net/proxy/proxy_resolver_mojo_unittest.cc
|
| +++ b/net/proxy/proxy_resolver_mojo_unittest.cc
|
| @@ -18,6 +18,7 @@
|
| #include "net/base/net_errors.h"
|
| #include "net/base/test_completion_callback.h"
|
| #include "net/log/net_log.h"
|
| +#include "net/proxy/mojo_proxy_resolver_factory.h"
|
| #include "net/proxy/mojo_proxy_type_converters.h"
|
| #include "net/proxy/proxy_info.h"
|
| #include "net/proxy/proxy_resolver_script_data.h"
|
| @@ -402,19 +403,31 @@ void MockMojoProxyResolverFactory::CreateResolver(
|
|
|
| } // namespace
|
|
|
| -class ProxyResolverMojoTest : public testing::Test {
|
| +class ProxyResolverMojoTest : public testing::Test,
|
| + public MojoProxyResolverFactory {
|
| public:
|
| void SetUp() override {
|
| mock_proxy_resolver_factory_.reset(new MockMojoProxyResolverFactory(
|
| &mock_proxy_resolver_, mojo::GetProxy(&factory_ptr_)));
|
| proxy_resolver_factory_mojo_.reset(
|
| - new ProxyResolverFactoryMojo(factory_ptr_.get(), nullptr));
|
| + new ProxyResolverFactoryMojo(this, nullptr));
|
| }
|
|
|
| scoped_ptr<Request> MakeRequest(const GURL& url) {
|
| return make_scoped_ptr(new Request(proxy_resolver_mojo_.get(), url));
|
| }
|
|
|
| + scoped_ptr<base::ScopedClosureRunner> CreateResolver(
|
| + const mojo::String& pac_script,
|
| + mojo::InterfaceRequest<interfaces::ProxyResolver> req,
|
| + interfaces::HostResolverPtr host_resolver,
|
| + interfaces::ProxyResolverFactoryRequestClientPtr client) override {
|
| + factory_ptr_->CreateResolver(pac_script, req.Pass(), host_resolver.Pass(),
|
| + client.Pass());
|
| + return make_scoped_ptr(
|
| + new base::ScopedClosureRunner(on_delete_callback_.closure()));
|
| + }
|
| +
|
| mojo::Array<interfaces::ProxyServerPtr> ProxyServersFromPacString(
|
| const std::string& pac_string) {
|
| ProxyInfo proxy_info;
|
| @@ -439,12 +452,19 @@ class ProxyResolverMojoTest : public testing::Test {
|
| ASSERT_TRUE(proxy_resolver_mojo_);
|
| }
|
|
|
| + void DeleteProxyResolverCallback(const CompletionCallback& callback,
|
| + int result) {
|
| + proxy_resolver_mojo_.reset();
|
| + callback.Run(result);
|
| + }
|
| +
|
| scoped_ptr<MockMojoProxyResolverFactory> mock_proxy_resolver_factory_;
|
| interfaces::ProxyResolverFactoryPtr factory_ptr_;
|
| scoped_ptr<ProxyResolverFactory> proxy_resolver_factory_mojo_;
|
|
|
| MockMojoProxyResolver mock_proxy_resolver_;
|
| scoped_ptr<ProxyResolver> proxy_resolver_mojo_;
|
| + TestClosure on_delete_callback_;
|
| };
|
|
|
| TEST_F(ProxyResolverMojoTest, CreateProxyResolver) {
|
| @@ -489,6 +509,7 @@ TEST_F(ProxyResolverMojoTest, CreateProxyResolver_Failed) {
|
| callback.GetResult(proxy_resolver_factory_mojo_->CreateProxyResolver(
|
| pac_script, &proxy_resolver_mojo_, callback.callback(), &request)));
|
| EXPECT_TRUE(request);
|
| + on_delete_callback_.WaitForResult();
|
|
|
| // A second attempt succeeds.
|
| CreateProxyResolver();
|
| @@ -537,6 +558,7 @@ TEST_F(ProxyResolverMojoTest, CreateProxyResolver_ResolverDisconnected) {
|
| callback.GetResult(proxy_resolver_factory_mojo_->CreateProxyResolver(
|
| pac_script, &proxy_resolver_mojo_, callback.callback(), &request)));
|
| EXPECT_TRUE(request);
|
| + on_delete_callback_.WaitForResult();
|
| }
|
|
|
| TEST_F(ProxyResolverMojoTest, CreateProxyResolver_Cancel) {
|
| @@ -555,6 +577,7 @@ TEST_F(ProxyResolverMojoTest, CreateProxyResolver_Cancel) {
|
|
|
| // The Mojo request is still made.
|
| mock_proxy_resolver_factory_->WaitForNextRequest();
|
| + on_delete_callback_.WaitForResult();
|
| }
|
|
|
| TEST_F(ProxyResolverMojoTest, GetProxyForURL) {
|
| @@ -673,4 +696,45 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_ClientClosed) {
|
| EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request1->WaitForResult());
|
| }
|
|
|
| +TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallback) {
|
| + mock_proxy_resolver_.AddGetProxyAction(GetProxyForUrlAction::ReturnServers(
|
| + GURL(kExampleUrl), ProxyServersFromPacString("DIRECT")));
|
| + CreateProxyResolver();
|
| +
|
| + 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)));
|
| + on_delete_callback_.WaitForResult();
|
| +}
|
| +
|
| +TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallbackFromDisconnect) {
|
| + mock_proxy_resolver_.AddGetProxyAction(
|
| + GetProxyForUrlAction::Disconnect(GURL(kExampleUrl)));
|
| + CreateProxyResolver();
|
| +
|
| + 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)));
|
| + on_delete_callback_.WaitForResult();
|
| +}
|
| +
|
| +TEST_F(ProxyResolverMojoTest, DeleteResolver) {
|
| + CreateProxyResolver();
|
| + proxy_resolver_mojo_.reset();
|
| + on_delete_callback_.WaitForResult();
|
| +}
|
| } // namespace net
|
|
|