OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "content/browser/resolve_proxy_msg_helper.h" | 5 #include "content/browser/resolve_proxy_msg_helper.h" |
6 | 6 |
7 #include <tuple> | 7 #include <tuple> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "content/browser/browser_thread_impl.h" | 10 #include "content/browser/browser_thread_impl.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 // Execute each request sequentially (so there are never 2 requests | 121 // Execute each request sequentially (so there are never 2 requests |
122 // outstanding at the same time). | 122 // outstanding at the same time). |
123 | 123 |
124 helper_->OnResolveProxy(url1, msg1); | 124 helper_->OnResolveProxy(url1, msg1); |
125 | 125 |
126 // Finish ProxyService's initialization. | 126 // Finish ProxyService's initialization. |
127 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); | 127 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); |
128 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( | 128 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( |
129 net::OK, &resolver_); | 129 net::OK, &resolver_); |
130 | 130 |
131 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 131 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
132 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); | 132 EXPECT_EQ(url1, resolver_.pending_jobs()[0]->url()); |
133 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80"); | 133 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result1:80"); |
134 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 134 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
135 | 135 |
136 // Check result. | 136 // Check result. |
137 EXPECT_EQ(true, pending_result()->result); | 137 EXPECT_EQ(true, pending_result()->result); |
138 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list); | 138 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list); |
139 clear_pending_result(); | 139 clear_pending_result(); |
140 | 140 |
141 helper_->OnResolveProxy(url2, msg2); | 141 helper_->OnResolveProxy(url2, msg2); |
142 | 142 |
143 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 143 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
144 EXPECT_EQ(url2, resolver_.pending_requests()[0]->url()); | 144 EXPECT_EQ(url2, resolver_.pending_jobs()[0]->url()); |
145 resolver_.pending_requests()[0]->results()->UseNamedProxy("result2:80"); | 145 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result2:80"); |
146 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 146 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
147 | 147 |
148 // Check result. | 148 // Check result. |
149 EXPECT_EQ(true, pending_result()->result); | 149 EXPECT_EQ(true, pending_result()->result); |
150 EXPECT_EQ("PROXY result2:80", pending_result()->proxy_list); | 150 EXPECT_EQ("PROXY result2:80", pending_result()->proxy_list); |
151 clear_pending_result(); | 151 clear_pending_result(); |
152 | 152 |
153 helper_->OnResolveProxy(url3, msg3); | 153 helper_->OnResolveProxy(url3, msg3); |
154 | 154 |
155 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 155 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
156 EXPECT_EQ(url3, resolver_.pending_requests()[0]->url()); | 156 EXPECT_EQ(url3, resolver_.pending_jobs()[0]->url()); |
157 resolver_.pending_requests()[0]->results()->UseNamedProxy("result3:80"); | 157 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result3:80"); |
158 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 158 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
159 | 159 |
160 // Check result. | 160 // Check result. |
161 EXPECT_EQ(true, pending_result()->result); | 161 EXPECT_EQ(true, pending_result()->result); |
162 EXPECT_EQ("PROXY result3:80", pending_result()->proxy_list); | 162 EXPECT_EQ("PROXY result3:80", pending_result()->proxy_list); |
163 clear_pending_result(); | 163 clear_pending_result(); |
164 } | 164 } |
165 | 165 |
166 // Issue a request while one is already in progress -- should be queued. | 166 // Issue a request while one is already in progress -- should be queued. |
167 TEST_F(ResolveProxyMsgHelperTest, QueueRequests) { | 167 TEST_F(ResolveProxyMsgHelperTest, QueueRequests) { |
168 GURL url1("http://www.google1.com/"); | 168 GURL url1("http://www.google1.com/"); |
(...skipping 12 matching lines...) Expand all Loading... |
181 // Finish ProxyService's initialization. | 181 // Finish ProxyService's initialization. |
182 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); | 182 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); |
183 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( | 183 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( |
184 net::OK, &resolver_); | 184 net::OK, &resolver_); |
185 | 185 |
186 helper_->OnResolveProxy(url2, msg2); | 186 helper_->OnResolveProxy(url2, msg2); |
187 helper_->OnResolveProxy(url3, msg3); | 187 helper_->OnResolveProxy(url3, msg3); |
188 | 188 |
189 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService | 189 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService |
190 // at a time. | 190 // at a time. |
191 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 191 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
192 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); | 192 EXPECT_EQ(url1, resolver_.pending_jobs()[0]->url()); |
193 | 193 |
194 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80"); | 194 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result1:80"); |
195 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 195 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
196 | 196 |
197 // Check result. | 197 // Check result. |
198 EXPECT_EQ(true, pending_result()->result); | 198 EXPECT_EQ(true, pending_result()->result); |
199 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list); | 199 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list); |
200 clear_pending_result(); | 200 clear_pending_result(); |
201 | 201 |
202 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 202 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
203 EXPECT_EQ(url2, resolver_.pending_requests()[0]->url()); | 203 EXPECT_EQ(url2, resolver_.pending_jobs()[0]->url()); |
204 | 204 |
205 resolver_.pending_requests()[0]->results()->UseNamedProxy("result2:80"); | 205 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result2:80"); |
206 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 206 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
207 | 207 |
208 // Check result. | 208 // Check result. |
209 EXPECT_EQ(true, pending_result()->result); | 209 EXPECT_EQ(true, pending_result()->result); |
210 EXPECT_EQ("PROXY result2:80", pending_result()->proxy_list); | 210 EXPECT_EQ("PROXY result2:80", pending_result()->proxy_list); |
211 clear_pending_result(); | 211 clear_pending_result(); |
212 | 212 |
213 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 213 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
214 EXPECT_EQ(url3, resolver_.pending_requests()[0]->url()); | 214 EXPECT_EQ(url3, resolver_.pending_jobs()[0]->url()); |
215 | 215 |
216 resolver_.pending_requests()[0]->results()->UseNamedProxy("result3:80"); | 216 resolver_.pending_jobs()[0]->results()->UseNamedProxy("result3:80"); |
217 resolver_.pending_requests()[0]->CompleteNow(net::OK); | 217 resolver_.pending_jobs()[0]->CompleteNow(net::OK); |
218 | 218 |
219 // Check result. | 219 // Check result. |
220 EXPECT_EQ(true, pending_result()->result); | 220 EXPECT_EQ(true, pending_result()->result); |
221 EXPECT_EQ("PROXY result3:80", pending_result()->proxy_list); | 221 EXPECT_EQ("PROXY result3:80", pending_result()->proxy_list); |
222 clear_pending_result(); | 222 clear_pending_result(); |
223 } | 223 } |
224 | 224 |
225 // Delete the helper while a request is in progress, and others are pending. | 225 // Delete the helper while a request is in progress, and others are pending. |
226 TEST_F(ResolveProxyMsgHelperTest, CancelPendingRequests) { | 226 TEST_F(ResolveProxyMsgHelperTest, CancelPendingRequests) { |
227 GURL url1("http://www.google1.com/"); | 227 GURL url1("http://www.google1.com/"); |
(...skipping 13 matching lines...) Expand all Loading... |
241 // Finish ProxyService's initialization. | 241 // Finish ProxyService's initialization. |
242 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); | 242 ASSERT_EQ(1u, resolver_factory_->pending_requests().size()); |
243 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( | 243 resolver_factory_->pending_requests()[0]->CompleteNowWithForwarder( |
244 net::OK, &resolver_); | 244 net::OK, &resolver_); |
245 | 245 |
246 helper_->OnResolveProxy(url2, msg2); | 246 helper_->OnResolveProxy(url2, msg2); |
247 helper_->OnResolveProxy(url3, msg3); | 247 helper_->OnResolveProxy(url3, msg3); |
248 | 248 |
249 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService | 249 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService |
250 // at a time. | 250 // at a time. |
251 ASSERT_EQ(1u, resolver_.pending_requests().size()); | 251 ASSERT_EQ(1u, resolver_.pending_jobs().size()); |
252 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); | 252 EXPECT_EQ(url1, resolver_.pending_jobs()[0]->url()); |
253 | 253 |
254 // Delete the underlying ResolveProxyMsgHelper -- this should cancel all | 254 // Delete the underlying ResolveProxyMsgHelper -- this should cancel all |
255 // the requests which are outstanding. | 255 // the requests which are outstanding. |
256 helper_ = NULL; | 256 helper_ = NULL; |
257 | 257 |
258 // The pending requests sent to the proxy resolver should have been cancelled. | 258 // The pending requests sent to the proxy resolver should have been cancelled. |
259 | 259 |
260 EXPECT_EQ(0u, resolver_.pending_requests().size()); | 260 EXPECT_EQ(0u, resolver_.pending_jobs().size()); |
261 | 261 |
262 EXPECT_TRUE(pending_result() == NULL); | 262 EXPECT_TRUE(pending_result() == NULL); |
263 | 263 |
264 // It should also be the case that msg1, msg2, msg3 were deleted by the | 264 // It should also be the case that msg1, msg2, msg3 were deleted by the |
265 // cancellation. (Else will show up as a leak in Valgrind). | 265 // cancellation. (Else will show up as a leak in Valgrind). |
266 } | 266 } |
267 | 267 |
268 } // namespace content | 268 } // namespace content |
OLD | NEW |