| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/proxy/mojo_proxy_resolver_factory_impl.h" | 5 #include "net/proxy/mojo_proxy_resolver_factory_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 } // namespace | 94 } // namespace |
| 95 | 95 |
| 96 class MojoProxyResolverFactoryImplTest | 96 class MojoProxyResolverFactoryImplTest |
| 97 : public testing::Test, | 97 : public testing::Test, |
| 98 public interfaces::ProxyResolverFactoryRequestClient { | 98 public interfaces::ProxyResolverFactoryRequestClient { |
| 99 public: | 99 public: |
| 100 void SetUp() override { | 100 void SetUp() override { |
| 101 mock_factory_ = new TestProxyResolverFactory(&waiter_); | 101 mock_factory_ = new TestProxyResolverFactory(&waiter_); |
| 102 mojo::MakeStrongBinding(base::MakeUnique<MojoProxyResolverFactoryImpl>( | 102 mojo::MakeStrongBinding(base::MakeUnique<MojoProxyResolverFactoryImpl>( |
| 103 base::WrapUnique(mock_factory_)), | 103 base::WrapUnique(mock_factory_)), |
| 104 mojo::GetProxy(&factory_)); | 104 mojo::MakeRequest(&factory_)); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void OnConnectionError() { waiter_.NotifyEvent(CONNECTION_ERROR); } | 107 void OnConnectionError() { waiter_.NotifyEvent(CONNECTION_ERROR); } |
| 108 | 108 |
| 109 void OnFakeProxyInstanceDestroyed() { | 109 void OnFakeProxyInstanceDestroyed() { |
| 110 instances_destroyed_++; | 110 instances_destroyed_++; |
| 111 waiter_.NotifyEvent(RESOLVER_DESTROYED); | 111 waiter_.NotifyEvent(RESOLVER_DESTROYED); |
| 112 } | 112 } |
| 113 | 113 |
| 114 void ReportResult(int32_t error) override { create_callback_.Run(error); } | 114 void ReportResult(int32_t error) override { create_callback_.Run(error); } |
| (...skipping 13 matching lines...) Expand all Loading... |
| 128 int instances_destroyed_ = 0; | 128 int instances_destroyed_ = 0; |
| 129 CompletionCallback create_callback_; | 129 CompletionCallback create_callback_; |
| 130 | 130 |
| 131 EventWaiter<Event> waiter_; | 131 EventWaiter<Event> waiter_; |
| 132 }; | 132 }; |
| 133 | 133 |
| 134 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { | 134 TEST_F(MojoProxyResolverFactoryImplTest, DisconnectProxyResolverClient) { |
| 135 interfaces::ProxyResolverPtr proxy_resolver; | 135 interfaces::ProxyResolverPtr proxy_resolver; |
| 136 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 136 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 137 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 137 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 138 this, mojo::GetProxy(&client_ptr)); | 138 this, mojo::MakeRequest(&client_ptr)); |
| 139 factory_->CreateResolver(kScriptData, mojo::GetProxy(&proxy_resolver), | 139 factory_->CreateResolver(kScriptData, mojo::MakeRequest(&proxy_resolver), |
| 140 std::move(client_ptr)); | 140 std::move(client_ptr)); |
| 141 proxy_resolver.set_connection_error_handler( | 141 proxy_resolver.set_connection_error_handler( |
| 142 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, | 142 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, |
| 143 base::Unretained(this))); | 143 base::Unretained(this))); |
| 144 waiter_.WaitForEvent(RESOLVER_CREATED); | 144 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 145 EXPECT_EQ(0, instances_destroyed_); | 145 EXPECT_EQ(0, instances_destroyed_); |
| 146 ASSERT_EQ(1u, mock_factory_->requests_handled()); | 146 ASSERT_EQ(1u, mock_factory_->requests_handled()); |
| 147 TestCompletionCallback create_callback; | 147 TestCompletionCallback create_callback; |
| 148 create_callback_ = create_callback.callback(); | 148 create_callback_ = create_callback.callback(); |
| 149 ASSERT_TRUE(mock_factory_->pending_request()); | 149 ASSERT_TRUE(mock_factory_->pending_request()); |
| 150 mock_factory_->pending_request()->resolver->reset( | 150 mock_factory_->pending_request()->resolver->reset( |
| 151 new FakeProxyResolver(base::Bind( | 151 new FakeProxyResolver(base::Bind( |
| 152 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, | 152 &MojoProxyResolverFactoryImplTest::OnFakeProxyInstanceDestroyed, |
| 153 base::Unretained(this)))); | 153 base::Unretained(this)))); |
| 154 mock_factory_->pending_request()->callback.Run(OK); | 154 mock_factory_->pending_request()->callback.Run(OK); |
| 155 EXPECT_THAT(create_callback.WaitForResult(), IsOk()); | 155 EXPECT_THAT(create_callback.WaitForResult(), IsOk()); |
| 156 proxy_resolver.reset(); | 156 proxy_resolver.reset(); |
| 157 waiter_.WaitForEvent(RESOLVER_DESTROYED); | 157 waiter_.WaitForEvent(RESOLVER_DESTROYED); |
| 158 EXPECT_EQ(1, instances_destroyed_); | 158 EXPECT_EQ(1, instances_destroyed_); |
| 159 } | 159 } |
| 160 | 160 |
| 161 TEST_F(MojoProxyResolverFactoryImplTest, Error) { | 161 TEST_F(MojoProxyResolverFactoryImplTest, Error) { |
| 162 interfaces::ProxyResolverPtr proxy_resolver; | 162 interfaces::ProxyResolverPtr proxy_resolver; |
| 163 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 163 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 164 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 164 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 165 this, mojo::GetProxy(&client_ptr)); | 165 this, mojo::MakeRequest(&client_ptr)); |
| 166 factory_->CreateResolver(kScriptData, mojo::GetProxy(&proxy_resolver), | 166 factory_->CreateResolver(kScriptData, mojo::MakeRequest(&proxy_resolver), |
| 167 std::move(client_ptr)); | 167 std::move(client_ptr)); |
| 168 proxy_resolver.set_connection_error_handler( | 168 proxy_resolver.set_connection_error_handler( |
| 169 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, | 169 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, |
| 170 base::Unretained(this))); | 170 base::Unretained(this))); |
| 171 waiter_.WaitForEvent(RESOLVER_CREATED); | 171 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 172 EXPECT_EQ(0, instances_destroyed_); | 172 EXPECT_EQ(0, instances_destroyed_); |
| 173 ASSERT_EQ(1u, mock_factory_->requests_handled()); | 173 ASSERT_EQ(1u, mock_factory_->requests_handled()); |
| 174 TestCompletionCallback create_callback; | 174 TestCompletionCallback create_callback; |
| 175 create_callback_ = create_callback.callback(); | 175 create_callback_ = create_callback.callback(); |
| 176 ASSERT_TRUE(mock_factory_->pending_request()); | 176 ASSERT_TRUE(mock_factory_->pending_request()); |
| 177 mock_factory_->pending_request()->callback.Run(ERR_PAC_SCRIPT_FAILED); | 177 mock_factory_->pending_request()->callback.Run(ERR_PAC_SCRIPT_FAILED); |
| 178 EXPECT_THAT(create_callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED)); | 178 EXPECT_THAT(create_callback.WaitForResult(), IsError(ERR_PAC_SCRIPT_FAILED)); |
| 179 } | 179 } |
| 180 | 180 |
| 181 TEST_F(MojoProxyResolverFactoryImplTest, | 181 TEST_F(MojoProxyResolverFactoryImplTest, |
| 182 DisconnectClientDuringResolverCreation) { | 182 DisconnectClientDuringResolverCreation) { |
| 183 interfaces::ProxyResolverPtr proxy_resolver; | 183 interfaces::ProxyResolverPtr proxy_resolver; |
| 184 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 184 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 185 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 185 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 186 this, mojo::GetProxy(&client_ptr)); | 186 this, mojo::MakeRequest(&client_ptr)); |
| 187 factory_->CreateResolver(kScriptData, mojo::GetProxy(&proxy_resolver), | 187 factory_->CreateResolver(kScriptData, mojo::MakeRequest(&proxy_resolver), |
| 188 std::move(client_ptr)); | 188 std::move(client_ptr)); |
| 189 proxy_resolver.set_connection_error_handler( | 189 proxy_resolver.set_connection_error_handler( |
| 190 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, | 190 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, |
| 191 base::Unretained(this))); | 191 base::Unretained(this))); |
| 192 waiter_.WaitForEvent(RESOLVER_CREATED); | 192 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 193 EXPECT_EQ(0, instances_destroyed_); | 193 EXPECT_EQ(0, instances_destroyed_); |
| 194 ASSERT_EQ(1u, mock_factory_->requests_handled()); | 194 ASSERT_EQ(1u, mock_factory_->requests_handled()); |
| 195 client_binding.Close(); | 195 client_binding.Close(); |
| 196 waiter_.WaitForEvent(CONNECTION_ERROR); | 196 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 197 } | 197 } |
| 198 | 198 |
| 199 TEST_F(MojoProxyResolverFactoryImplTest, | 199 TEST_F(MojoProxyResolverFactoryImplTest, |
| 200 DisconnectFactoryDuringResolverCreation) { | 200 DisconnectFactoryDuringResolverCreation) { |
| 201 interfaces::ProxyResolverPtr proxy_resolver; | 201 interfaces::ProxyResolverPtr proxy_resolver; |
| 202 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; | 202 interfaces::ProxyResolverFactoryRequestClientPtr client_ptr; |
| 203 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( | 203 mojo::Binding<ProxyResolverFactoryRequestClient> client_binding( |
| 204 this, mojo::GetProxy(&client_ptr)); | 204 this, mojo::MakeRequest(&client_ptr)); |
| 205 factory_->CreateResolver(kScriptData, mojo::GetProxy(&proxy_resolver), | 205 factory_->CreateResolver(kScriptData, mojo::MakeRequest(&proxy_resolver), |
| 206 std::move(client_ptr)); | 206 std::move(client_ptr)); |
| 207 proxy_resolver.set_connection_error_handler( | 207 proxy_resolver.set_connection_error_handler( |
| 208 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, | 208 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, |
| 209 base::Unretained(this))); | 209 base::Unretained(this))); |
| 210 client_binding.set_connection_error_handler( | 210 client_binding.set_connection_error_handler( |
| 211 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, | 211 base::Bind(&MojoProxyResolverFactoryImplTest::OnConnectionError, |
| 212 base::Unretained(this))); | 212 base::Unretained(this))); |
| 213 waiter_.WaitForEvent(RESOLVER_CREATED); | 213 waiter_.WaitForEvent(RESOLVER_CREATED); |
| 214 EXPECT_EQ(0, instances_destroyed_); | 214 EXPECT_EQ(0, instances_destroyed_); |
| 215 ASSERT_EQ(1u, mock_factory_->requests_handled()); | 215 ASSERT_EQ(1u, mock_factory_->requests_handled()); |
| 216 factory_.reset(); | 216 factory_.reset(); |
| 217 waiter_.WaitForEvent(CONNECTION_ERROR); | 217 waiter_.WaitForEvent(CONNECTION_ERROR); |
| 218 } | 218 } |
| 219 | 219 |
| 220 } // namespace net | 220 } // namespace net |
| OLD | NEW |