Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(290)

Side by Side Diff: content/browser/resolve_proxy_msg_helper_unittest.cc

Issue 1102463002: Add a MockAsyncProxyResolverFactory and update some tests to use it. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@proxy-factory-refactor
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 PendingResult(bool result, 51 PendingResult(bool result,
52 const std::string& proxy_list) 52 const std::string& proxy_list)
53 : result(result), proxy_list(proxy_list) { 53 : result(result), proxy_list(proxy_list) {
54 } 54 }
55 55
56 bool result; 56 bool result;
57 std::string proxy_list; 57 std::string proxy_list;
58 }; 58 };
59 59
60 ResolveProxyMsgHelperTest() 60 ResolveProxyMsgHelperTest()
61 : service_(new net::ProxyService( 61 : resolver_factory_(false),
62 service_(new net::ProxyService(
62 new MockProxyConfigService, 63 new MockProxyConfigService,
63 make_scoped_ptr( 64 make_scoped_ptr(
64 new net::ForwardingProxyResolverFactory(&resolver_)), 65 new net::ForwardingProxyResolverFactory(&resolver_factory_)),
65 NULL)), 66 NULL)),
66 helper_(new TestResolveProxyMsgHelper(service_.get(), this)), 67 helper_(new TestResolveProxyMsgHelper(service_.get(), this)),
67 io_thread_(BrowserThread::IO, &message_loop_) { 68 io_thread_(BrowserThread::IO, &message_loop_) {
68 test_sink_.AddFilter(this); 69 test_sink_.AddFilter(this);
69 } 70 }
70 71
71 protected: 72 protected:
72 const PendingResult* pending_result() const { return pending_result_.get(); } 73 const PendingResult* pending_result() const { return pending_result_.get(); }
73 74
74 void clear_pending_result() { 75 void clear_pending_result() {
75 pending_result_.reset(); 76 pending_result_.reset();
76 } 77 }
77 78
78 IPC::Message* GenerateReply() { 79 IPC::Message* GenerateReply() {
79 bool temp_bool; 80 bool temp_bool;
80 std::string temp_string; 81 std::string temp_string;
81 ViewHostMsg_ResolveProxy message(GURL(), &temp_bool, &temp_string); 82 ViewHostMsg_ResolveProxy message(GURL(), &temp_bool, &temp_string);
82 return IPC::SyncMessage::GenerateReply(&message); 83 return IPC::SyncMessage::GenerateReply(&message);
83 } 84 }
84 85
86 net::MockAsyncProxyResolverFactory resolver_factory_;
85 net::MockAsyncProxyResolver resolver_; 87 net::MockAsyncProxyResolver resolver_;
86 scoped_ptr<net::ProxyService> service_; 88 scoped_ptr<net::ProxyService> service_;
87 scoped_refptr<ResolveProxyMsgHelper> helper_; 89 scoped_refptr<ResolveProxyMsgHelper> helper_;
88 scoped_ptr<PendingResult> pending_result_; 90 scoped_ptr<PendingResult> pending_result_;
89 91
90 private: 92 private:
91 bool OnMessageReceived(const IPC::Message& msg) override { 93 bool OnMessageReceived(const IPC::Message& msg) override {
92 TupleTypes<ViewHostMsg_ResolveProxy::ReplyParam>::ValueTuple reply_data; 94 TupleTypes<ViewHostMsg_ResolveProxy::ReplyParam>::ValueTuple reply_data;
93 EXPECT_TRUE(ViewHostMsg_ResolveProxy::ReadReplyParam(&msg, &reply_data)); 95 EXPECT_TRUE(ViewHostMsg_ResolveProxy::ReadReplyParam(&msg, &reply_data));
94 DCHECK(!pending_result_.get()); 96 DCHECK(!pending_result_.get());
(...skipping 18 matching lines...) Expand all
113 IPC::Message* msg1 = GenerateReply(); 115 IPC::Message* msg1 = GenerateReply();
114 IPC::Message* msg2 = GenerateReply(); 116 IPC::Message* msg2 = GenerateReply();
115 IPC::Message* msg3 = GenerateReply(); 117 IPC::Message* msg3 = GenerateReply();
116 118
117 // Execute each request sequentially (so there are never 2 requests 119 // Execute each request sequentially (so there are never 2 requests
118 // outstanding at the same time). 120 // outstanding at the same time).
119 121
120 helper_->OnResolveProxy(url1, msg1); 122 helper_->OnResolveProxy(url1, msg1);
121 123
122 // Finish ProxyService's initialization. 124 // Finish ProxyService's initialization.
123 resolver_.pending_set_pac_script_request()->CompleteNow(net::OK); 125 ASSERT_EQ(1u, resolver_factory_.pending_requests().size());
126 resolver_factory_.pending_requests()[0]->CompleteNowWithForwarder(net::OK,
127 &resolver_);
124 128
125 ASSERT_EQ(1u, resolver_.pending_requests().size()); 129 ASSERT_EQ(1u, resolver_.pending_requests().size());
126 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); 130 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url());
127 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80"); 131 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80");
128 resolver_.pending_requests()[0]->CompleteNow(net::OK); 132 resolver_.pending_requests()[0]->CompleteNow(net::OK);
129 133
130 // Check result. 134 // Check result.
131 EXPECT_EQ(true, pending_result()->result); 135 EXPECT_EQ(true, pending_result()->result);
132 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list); 136 EXPECT_EQ("PROXY result1:80", pending_result()->proxy_list);
133 clear_pending_result(); 137 clear_pending_result();
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 IPC::Message* msg1 = GenerateReply(); 170 IPC::Message* msg1 = GenerateReply();
167 IPC::Message* msg2 = GenerateReply(); 171 IPC::Message* msg2 = GenerateReply();
168 IPC::Message* msg3 = GenerateReply(); 172 IPC::Message* msg3 = GenerateReply();
169 173
170 // Start three requests. Since the proxy resolver is async, all the 174 // Start three requests. Since the proxy resolver is async, all the
171 // requests will be pending. 175 // requests will be pending.
172 176
173 helper_->OnResolveProxy(url1, msg1); 177 helper_->OnResolveProxy(url1, msg1);
174 178
175 // Finish ProxyService's initialization. 179 // Finish ProxyService's initialization.
176 resolver_.pending_set_pac_script_request()->CompleteNow(net::OK); 180 ASSERT_EQ(1u, resolver_factory_.pending_requests().size());
181 resolver_factory_.pending_requests()[0]->CompleteNowWithForwarder(net::OK,
182 &resolver_);
177 183
178 helper_->OnResolveProxy(url2, msg2); 184 helper_->OnResolveProxy(url2, msg2);
179 helper_->OnResolveProxy(url3, msg3); 185 helper_->OnResolveProxy(url3, msg3);
180 186
181 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService 187 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService
182 // at a time. 188 // at a time.
183 ASSERT_EQ(1u, resolver_.pending_requests().size()); 189 ASSERT_EQ(1u, resolver_.pending_requests().size());
184 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); 190 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url());
185 191
186 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80"); 192 resolver_.pending_requests()[0]->results()->UseNamedProxy("result1:80");
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 IPC::Message* msg1 = GenerateReply(); 230 IPC::Message* msg1 = GenerateReply();
225 IPC::Message* msg2 = GenerateReply(); 231 IPC::Message* msg2 = GenerateReply();
226 IPC::Message* msg3 = GenerateReply(); 232 IPC::Message* msg3 = GenerateReply();
227 233
228 // Start three requests. Since the proxy resolver is async, all the 234 // Start three requests. Since the proxy resolver is async, all the
229 // requests will be pending. 235 // requests will be pending.
230 236
231 helper_->OnResolveProxy(url1, msg1); 237 helper_->OnResolveProxy(url1, msg1);
232 238
233 // Finish ProxyService's initialization. 239 // Finish ProxyService's initialization.
234 resolver_.pending_set_pac_script_request()->CompleteNow(net::OK); 240 ASSERT_EQ(1u, resolver_factory_.pending_requests().size());
241 resolver_factory_.pending_requests()[0]->CompleteNowWithForwarder(net::OK,
242 &resolver_);
235 243
236 helper_->OnResolveProxy(url2, msg2); 244 helper_->OnResolveProxy(url2, msg2);
237 helper_->OnResolveProxy(url3, msg3); 245 helper_->OnResolveProxy(url3, msg3);
238 246
239 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService 247 // ResolveProxyHelper only keeps 1 request outstanding in ProxyService
240 // at a time. 248 // at a time.
241 ASSERT_EQ(1u, resolver_.pending_requests().size()); 249 ASSERT_EQ(1u, resolver_.pending_requests().size());
242 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url()); 250 EXPECT_EQ(url1, resolver_.pending_requests()[0]->url());
243 251
244 // Delete the underlying ResolveProxyMsgHelper -- this should cancel all 252 // Delete the underlying ResolveProxyMsgHelper -- this should cancel all
245 // the requests which are outstanding. 253 // the requests which are outstanding.
246 helper_ = NULL; 254 helper_ = NULL;
247 255
248 // 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.
249 257
250 EXPECT_EQ(0u, resolver_.pending_requests().size()); 258 EXPECT_EQ(0u, resolver_.pending_requests().size());
251 259
252 EXPECT_TRUE(pending_result() == NULL); 260 EXPECT_TRUE(pending_result() == NULL);
253 261
254 // 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
255 // cancellation. (Else will show up as a leak in Valgrind). 263 // cancellation. (Else will show up as a leak in Valgrind).
256 } 264 }
257 265
258 } // namespace content 266 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | net/http/http_network_transaction_unittest.cc » ('j') | net/proxy/mock_proxy_resolver.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698