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 |