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