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 27ae43c7cb350bf7514158c0deff03a51ca7fcbb..b4a208be45aaccd115b24a874f50b52be541273c 100644 |
--- a/net/proxy/proxy_resolver_mojo_unittest.cc |
+++ b/net/proxy/proxy_resolver_mojo_unittest.cc |
@@ -33,7 +33,6 @@ namespace net { |
namespace { |
const char kScriptData[] = "FooBarBaz"; |
-const char kScriptData2[] = "BlahBlahBlah"; |
const char kExampleUrl[] = "http://www.example.com"; |
struct SetPacScriptAction { |
@@ -252,69 +251,6 @@ void MockMojoProxyResolver::GetProxyForUrl( |
WakeWaiter(); |
} |
-class TestMojoProxyResolverFactory : public MojoProxyResolverFactory { |
- public: |
- TestMojoProxyResolverFactory(); |
- ~TestMojoProxyResolverFactory() override; |
- |
- // Overridden from MojoProxyResolverFactory: |
- void Create(mojo::InterfaceRequest<interfaces::ProxyResolver> req, |
- interfaces::HostResolverPtr host_resolver) override; |
- |
- MockMojoProxyResolver& GetMockResolver() { return *mock_proxy_resolver_; } |
- |
- void AddFuturePacScriptAction(int creation, SetPacScriptAction action); |
- void AddFutureGetProxyAction(int creation, GetProxyForUrlAction action); |
- |
- int num_create_calls() const { return num_create_calls_; } |
- void FailNextCreate() { fail_next_create_ = true; } |
- |
- private: |
- int num_create_calls_; |
- std::map<int, std::list<SetPacScriptAction>> pac_script_actions_; |
- std::map<int, std::list<GetProxyForUrlAction>> get_proxy_actions_; |
- bool fail_next_create_; |
- |
- scoped_ptr<MockMojoProxyResolver> mock_proxy_resolver_; |
-}; |
- |
-TestMojoProxyResolverFactory::TestMojoProxyResolverFactory() |
- : num_create_calls_(0), fail_next_create_(false) { |
-} |
- |
-TestMojoProxyResolverFactory::~TestMojoProxyResolverFactory() { |
-} |
- |
-void TestMojoProxyResolverFactory::Create( |
- mojo::InterfaceRequest<interfaces::ProxyResolver> req, |
- interfaces::HostResolverPtr host_resolver) { |
- if (fail_next_create_) { |
- req = nullptr; |
- fail_next_create_ = false; |
- } else { |
- mock_proxy_resolver_.reset(new MockMojoProxyResolver(req.Pass())); |
- |
- for (const auto& action : pac_script_actions_[num_create_calls_]) |
- mock_proxy_resolver_->AddPacScriptAction(action); |
- |
- for (const auto& action : get_proxy_actions_[num_create_calls_]) |
- mock_proxy_resolver_->AddGetProxyAction(action); |
- } |
- num_create_calls_++; |
-} |
- |
-void TestMojoProxyResolverFactory::AddFuturePacScriptAction( |
- int creation, |
- SetPacScriptAction action) { |
- pac_script_actions_[creation].push_back(action); |
-} |
- |
-void TestMojoProxyResolverFactory::AddFutureGetProxyAction( |
- int creation, |
- GetProxyForUrlAction action) { |
- get_proxy_actions_[creation].push_back(action); |
-} |
- |
class Request { |
public: |
Request(ProxyResolverMojo* resolver, const GURL& url); |
@@ -361,8 +297,13 @@ int Request::WaitForResult() { |
class ProxyResolverMojoTest : public testing::Test { |
public: |
void SetUp() override { |
- proxy_resolver_mojo_.reset(new ProxyResolverMojo( |
- &mojo_proxy_resolver_factory_, &mock_host_resolver_)); |
+ interfaces::ProxyResolverPtr proxy_resolver_ptr; |
+ mock_proxy_resolver_.reset( |
+ new MockMojoProxyResolver(mojo::GetProxy(&proxy_resolver_ptr))); |
+ proxy_resolver_mojo_.reset( |
+ new ProxyResolverMojo(proxy_resolver_ptr.Pass(), |
+ make_scoped_ptr(new base::ScopedClosureRunner( |
+ resolver_destruction_closure_.closure())))); |
} |
scoped_ptr<Request> MakeRequest(const GURL& url) { |
@@ -378,29 +319,6 @@ class ProxyResolverMojoTest : public testing::Test { |
proxy_info.proxy_list().GetAll()); |
} |
- void SetPacScript(int instance) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- instance, SetPacScriptAction::ReturnResult(OK)); |
- TestCompletionCallback callback; |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData)); |
- EXPECT_EQ(OK, callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
- pac_script, callback.callback()))); |
- } |
- |
- void RunCallbackAndSetPacScript(const net::CompletionCallback& callback, |
- const net::CompletionCallback& pac_callback, |
- int instance, |
- int result) { |
- callback.Run(result); |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- instance, SetPacScriptAction::ReturnResult(OK)); |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData)); |
- EXPECT_EQ(ERR_IO_PENDING, |
- proxy_resolver_mojo_->SetPacScript(pac_script, pac_callback)); |
- } |
- |
void DeleteProxyResolverCallback(const CompletionCallback& callback, |
int result) { |
proxy_resolver_mojo_.reset(); |
@@ -408,14 +326,20 @@ class ProxyResolverMojoTest : public testing::Test { |
} |
MockHostResolver mock_host_resolver_; |
- TestMojoProxyResolverFactory mojo_proxy_resolver_factory_; |
+ TestClosure resolver_destruction_closure_; |
scoped_ptr<ProxyResolverMojo> proxy_resolver_mojo_; |
+ scoped_ptr<MockMojoProxyResolver> mock_proxy_resolver_; |
}; |
TEST_F(ProxyResolverMojoTest, SetPacScript) { |
- SetPacScript(0); |
- EXPECT_EQ(kScriptData, |
- mojo_proxy_resolver_factory_.GetMockResolver().pac_script_data()); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(OK)); |
+ TestCompletionCallback callback; |
+ scoped_refptr<ProxyResolverScriptData> pac_script( |
+ ProxyResolverScriptData::FromUTF8(kScriptData)); |
+ EXPECT_EQ(OK, callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
+ pac_script, callback.callback()))); |
+ EXPECT_EQ(kScriptData, mock_proxy_resolver_->pac_script_data()); |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_Empty) { |
@@ -437,8 +361,8 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_Url) { |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_Failed) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(ERR_PAC_STATUS_NOT_OK)); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(ERR_PAC_STATUS_NOT_OK)); |
TestCompletionCallback callback; |
scoped_refptr<ProxyResolverScriptData> pac_script( |
@@ -449,8 +373,7 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_Failed) { |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_Disconnected) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::Disconnect()); |
+ mock_proxy_resolver_->AddPacScriptAction(SetPacScriptAction::Disconnect()); |
scoped_refptr<ProxyResolverScriptData> pac_script( |
ProxyResolverScriptData::FromUTF8(kScriptData)); |
@@ -460,48 +383,9 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_Disconnected) { |
EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, callback.GetResult(ERR_IO_PENDING)); |
} |
-TEST_F(ProxyResolverMojoTest, SetPacScript_SuccessThenDisconnect) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(OK)); |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::Disconnect()); |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 1, SetPacScriptAction::ReturnResult(ERR_FAILED)); |
- { |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData)); |
- TestCompletionCallback callback; |
- EXPECT_EQ(OK, callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
- pac_script, callback.callback()))); |
- EXPECT_EQ(kScriptData, |
- mojo_proxy_resolver_factory_.GetMockResolver().pac_script_data()); |
- } |
- |
- { |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData2)); |
- TestCompletionCallback callback; |
- EXPECT_EQ(ERR_IO_PENDING, proxy_resolver_mojo_->SetPacScript( |
- pac_script, callback.callback())); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, callback.GetResult(ERR_IO_PENDING)); |
- } |
- |
- { |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData2)); |
- TestCompletionCallback callback; |
- EXPECT_EQ(ERR_IO_PENDING, proxy_resolver_mojo_->SetPacScript( |
- pac_script, callback.callback())); |
- EXPECT_EQ(ERR_FAILED, callback.GetResult(ERR_IO_PENDING)); |
- } |
- |
- // The service should have been recreated on the last SetPacScript call. |
- EXPECT_EQ(2, mojo_proxy_resolver_factory_.num_create_calls()); |
-} |
- |
TEST_F(ProxyResolverMojoTest, SetPacScript_Cancel) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(OK)); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(OK)); |
scoped_refptr<ProxyResolverScriptData> pac_script( |
ProxyResolverScriptData::FromUTF8(kScriptData)); |
@@ -511,14 +395,14 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_Cancel) { |
proxy_resolver_mojo_->CancelSetPacScript(); |
// The Mojo request is still made. |
- mojo_proxy_resolver_factory_.GetMockResolver().WaitForNextRequest(); |
+ mock_proxy_resolver_->WaitForNextRequest(); |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_CancelAndSetAgain) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(ERR_FAILED)); |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(ERR_UNEXPECTED)); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(ERR_FAILED)); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(ERR_UNEXPECTED)); |
scoped_refptr<ProxyResolverScriptData> pac_script( |
ProxyResolverScriptData::FromUTF8(kScriptData)); |
@@ -534,8 +418,8 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_CancelAndSetAgain) { |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallback) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::ReturnResult(OK)); |
+ mock_proxy_resolver_->AddPacScriptAction( |
+ SetPacScriptAction::ReturnResult(OK)); |
scoped_refptr<ProxyResolverScriptData> pac_script( |
ProxyResolverScriptData::FromUTF8(kScriptData)); |
TestCompletionCallback callback; |
@@ -544,12 +428,11 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallback) { |
pac_script, |
base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
base::Unretained(this), callback.callback())))); |
- EXPECT_EQ(1, mojo_proxy_resolver_factory_.num_create_calls()); |
+ resolver_destruction_closure_.WaitForResult(); |
} |
TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallbackFromDisconnect) { |
- mojo_proxy_resolver_factory_.AddFuturePacScriptAction( |
- 0, SetPacScriptAction::Disconnect()); |
+ mock_proxy_resolver_->AddPacScriptAction(SetPacScriptAction::Disconnect()); |
scoped_refptr<ProxyResolverScriptData> pac_script( |
ProxyResolverScriptData::FromUTF8(kScriptData)); |
TestCompletionCallback callback; |
@@ -558,14 +441,12 @@ TEST_F(ProxyResolverMojoTest, SetPacScript_DeleteInCallbackFromDisconnect) { |
pac_script, |
base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
base::Unretained(this), callback.callback())))); |
- EXPECT_EQ(1, mojo_proxy_resolver_factory_.num_create_calls()); |
+ resolver_destruction_closure_.WaitForResult(); |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::ReturnServers( |
- GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction(GetProxyForUrlAction::ReturnServers( |
+ GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
@@ -574,15 +455,9 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL) { |
EXPECT_EQ("DIRECT", request->results().ToPacString()); |
} |
-TEST_F(ProxyResolverMojoTest, GetProxyForURL_WithoutSetPacScript) { |
- scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request->Resolve()); |
-} |
- |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_LoadState) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::SendLoadStateChanged(GURL(kExampleUrl))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::SendLoadStateChanged(GURL(kExampleUrl))); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
@@ -590,7 +465,7 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_LoadState) { |
while (request->load_state() == LOAD_STATE_RESOLVING_PROXY_FOR_URL) |
base::RunLoop().RunUntilIdle(); |
EXPECT_EQ(LOAD_STATE_RESOLVING_HOST_IN_PROXY_SCRIPT, request->load_state()); |
- mojo_proxy_resolver_factory_.GetMockResolver().ClearBlockedClients(); |
+ mock_proxy_resolver_->ClearBlockedClients(); |
EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request->WaitForResult()); |
} |
@@ -598,10 +473,8 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_MultipleResults) { |
static const char kPacString[] = |
"PROXY foo1:80;DIRECT;SOCKS foo2:1234;" |
"SOCKS5 foo3:1080;HTTPS foo4:443;QUIC foo6:8888"; |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::ReturnServers( |
- GURL(kExampleUrl), ProxyServersFromPacString(kPacString))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction(GetProxyForUrlAction::ReturnServers( |
+ GURL(kExampleUrl), ProxyServersFromPacString(kPacString))); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
@@ -611,9 +484,8 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_MultipleResults) { |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_Error) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::ReturnError(GURL(kExampleUrl), ERR_UNEXPECTED)); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::ReturnError(GURL(kExampleUrl), ERR_UNEXPECTED)); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
@@ -623,27 +495,23 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_Error) { |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_Cancel) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::WaitForClientDisconnect(GURL(kExampleUrl))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::WaitForClientDisconnect(GURL(kExampleUrl))); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
request->Cancel(); |
// The Mojo request is still made. |
- mojo_proxy_resolver_factory_.GetMockResolver().WaitForNextRequest(); |
+ mock_proxy_resolver_->WaitForNextRequest(); |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_MultipleRequests) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::ReturnServers( |
- GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::ReturnServers( |
- GURL("https://www.chromium.org"), |
- ProxyServersFromPacString("HTTPS foo:443"))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction(GetProxyForUrlAction::ReturnServers( |
+ GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
+ mock_proxy_resolver_->AddGetProxyAction(GetProxyForUrlAction::ReturnServers( |
+ GURL("https://www.chromium.org"), |
+ ProxyServersFromPacString("HTTPS foo:443"))); |
scoped_ptr<Request> request1(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request1->Resolve()); |
@@ -658,119 +526,29 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_MultipleRequests) { |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_Disconnect) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 1, GetProxyForUrlAction::ReturnServers( |
- GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
{ |
- SetPacScript(0); |
scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request->WaitForResult()); |
EXPECT_TRUE(request->results().is_empty()); |
} |
- |
- { |
- // Calling GetProxyForURL without first setting the pac script should fail. |
- scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request->Resolve()); |
- } |
- |
- { |
- SetPacScript(1); |
- scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
- EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
- EXPECT_EQ(OK, request->WaitForResult()); |
- EXPECT_EQ("DIRECT", request->results().ToPacString()); |
- } |
- |
- EXPECT_EQ(2, mojo_proxy_resolver_factory_.num_create_calls()); |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_ClientClosed) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::DropRequest(GURL(kExampleUrl))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::DropRequest(GURL(kExampleUrl))); |
scoped_ptr<Request> request1(MakeRequest(GURL(kExampleUrl))); |
EXPECT_EQ(ERR_IO_PENDING, request1->Resolve()); |
EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request1->WaitForResult()); |
- EXPECT_EQ(1, mojo_proxy_resolver_factory_.num_create_calls()); |
-} |
- |
-TEST_F(ProxyResolverMojoTest, DisconnectAndFailCreate) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
- |
- { |
- SetPacScript(0); |
- scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
- EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, request->WaitForResult()); |
- EXPECT_TRUE(request->results().is_empty()); |
- } |
- |
- // The service should attempt to create a new connection, but that should |
- // fail. |
- { |
- scoped_refptr<ProxyResolverScriptData> pac_script( |
- ProxyResolverScriptData::FromUTF8(kScriptData)); |
- TestCompletionCallback callback; |
- mojo_proxy_resolver_factory_.FailNextCreate(); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, |
- callback.GetResult(proxy_resolver_mojo_->SetPacScript( |
- pac_script, callback.callback()))); |
- } |
- |
- // A third attempt should succeed. |
- SetPacScript(2); |
- |
- EXPECT_EQ(3, mojo_proxy_resolver_factory_.num_create_calls()); |
-} |
- |
-TEST_F(ProxyResolverMojoTest, DisconnectAndReconnectInCallback) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 1, GetProxyForUrlAction::ReturnServers( |
- GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
- |
- // In this first resolve request, the Mojo service is disconnected causing the |
- // request to return ERR_PAC_SCRIPT_TERMINATED. In the request callback, form |
- // a new connection to a Mojo resolver service by calling SetPacScript(). |
- SetPacScript(0); |
- ProxyInfo results; |
- TestCompletionCallback resolve_callback; |
- TestCompletionCallback pac_callback; |
- ProxyResolver::RequestHandle handle; |
- BoundNetLog net_log; |
- int error = proxy_resolver_mojo_->GetProxyForURL( |
- GURL(kExampleUrl), &results, |
- base::Bind(&ProxyResolverMojoTest::RunCallbackAndSetPacScript, |
- base::Unretained(this), resolve_callback.callback(), |
- pac_callback.callback(), 1), |
- &handle, net_log); |
- EXPECT_EQ(ERR_IO_PENDING, error); |
- EXPECT_EQ(ERR_PAC_SCRIPT_TERMINATED, resolve_callback.WaitForResult()); |
- EXPECT_EQ(OK, pac_callback.WaitForResult()); |
- |
- // Setting the PAC script above should have been successful and let us send a |
- // resolve request. |
- scoped_ptr<Request> request(MakeRequest(GURL(kExampleUrl))); |
- EXPECT_EQ(ERR_IO_PENDING, request->Resolve()); |
- EXPECT_EQ(OK, request->WaitForResult()); |
- EXPECT_EQ("DIRECT", request->results().ToPacString()); |
- |
- 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); |
+ mock_proxy_resolver_->AddGetProxyAction(GetProxyForUrlAction::ReturnServers( |
+ GURL(kExampleUrl), ProxyServersFromPacString("DIRECT"))); |
ProxyInfo results; |
TestCompletionCallback callback; |
ProxyResolver::RequestHandle handle; |
@@ -781,12 +559,12 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallback) { |
base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
base::Unretained(this), callback.callback()), |
&handle, net_log))); |
+ resolver_destruction_closure_.WaitForResult(); |
} |
TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallbackFromDisconnect) { |
- mojo_proxy_resolver_factory_.AddFutureGetProxyAction( |
- 0, GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
- SetPacScript(0); |
+ mock_proxy_resolver_->AddGetProxyAction( |
+ GetProxyForUrlAction::Disconnect(GURL(kExampleUrl))); |
ProxyInfo results; |
TestCompletionCallback callback; |
ProxyResolver::RequestHandle handle; |
@@ -797,6 +575,11 @@ TEST_F(ProxyResolverMojoTest, GetProxyForURL_DeleteInCallbackFromDisconnect) { |
base::Bind(&ProxyResolverMojoTest::DeleteProxyResolverCallback, |
base::Unretained(this), callback.callback()), |
&handle, net_log))); |
+ resolver_destruction_closure_.WaitForResult(); |
} |
+TEST_F(ProxyResolverMojoTest, DeleteResolver) { |
+ proxy_resolver_mojo_.reset(); |
+ resolver_destruction_closure_.WaitForResult(); |
+} |
} // namespace net |