| 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
|
|
|