| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "chrome/browser/net/resolve_proxy_msg_helper.h" | 5 #include "chrome/browser/net/resolve_proxy_msg_helper.h" |
| 6 | 6 |
| 7 #include "base/waitable_event.h" | 7 #include "base/waitable_event.h" |
| 8 #include "net/base/net_errors.h" | 8 #include "net/base/net_errors.h" |
| 9 #include "net/proxy/mock_proxy_resolver.h" | 9 #include "net/proxy/mock_proxy_resolver.h" |
| 10 #include "net/proxy/proxy_config_service.h" | 10 #include "net/proxy/proxy_config_service.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 pending_result_.reset(); | 47 pending_result_.reset(); |
| 48 } | 48 } |
| 49 | 49 |
| 50 private: | 50 private: |
| 51 scoped_ptr<PendingResult> pending_result_; | 51 scoped_ptr<PendingResult> pending_result_; |
| 52 }; | 52 }; |
| 53 | 53 |
| 54 // Issue three sequential requests -- each should succeed. | 54 // Issue three sequential requests -- each should succeed. |
| 55 TEST(ResolveProxyMsgHelperTest, Sequential) { | 55 TEST(ResolveProxyMsgHelperTest, Sequential) { |
| 56 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; | 56 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; |
| 57 net::ProxyService service(new MockProxyConfigService, resolver); | 57 scoped_refptr<net::ProxyService> service( |
| 58 new net::ProxyService(new MockProxyConfigService, resolver)); |
| 58 | 59 |
| 59 MyDelegate delegate; | 60 MyDelegate delegate; |
| 60 ResolveProxyMsgHelper helper(&delegate, &service); | 61 ResolveProxyMsgHelper helper(&delegate, service); |
| 61 | 62 |
| 62 GURL url1("http://www.google1.com/"); | 63 GURL url1("http://www.google1.com/"); |
| 63 GURL url2("http://www.google2.com/"); | 64 GURL url2("http://www.google2.com/"); |
| 64 GURL url3("http://www.google3.com/"); | 65 GURL url3("http://www.google3.com/"); |
| 65 | 66 |
| 66 scoped_ptr<IPC::Message> msg1(new IPC::Message()); | 67 scoped_ptr<IPC::Message> msg1(new IPC::Message()); |
| 67 scoped_ptr<IPC::Message> msg2(new IPC::Message()); | 68 scoped_ptr<IPC::Message> msg2(new IPC::Message()); |
| 68 scoped_ptr<IPC::Message> msg3(new IPC::Message()); | 69 scoped_ptr<IPC::Message> msg3(new IPC::Message()); |
| 69 | 70 |
| 70 // Execute each request sequentially (so there are never 2 requests | 71 // Execute each request sequentially (so there are never 2 requests |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 109 // Check result. | 110 // Check result. |
| 110 EXPECT_EQ(msg3.get(), delegate.pending_result()->msg); | 111 EXPECT_EQ(msg3.get(), delegate.pending_result()->msg); |
| 111 EXPECT_EQ(net::OK, delegate.pending_result()->error_code); | 112 EXPECT_EQ(net::OK, delegate.pending_result()->error_code); |
| 112 EXPECT_EQ("PROXY result3:80", delegate.pending_result()->proxy_list); | 113 EXPECT_EQ("PROXY result3:80", delegate.pending_result()->proxy_list); |
| 113 delegate.clear_pending_result(); | 114 delegate.clear_pending_result(); |
| 114 } | 115 } |
| 115 | 116 |
| 116 // Issue a request while one is already in progress -- should be queued. | 117 // Issue a request while one is already in progress -- should be queued. |
| 117 TEST(ResolveProxyMsgHelperTest, QueueRequests) { | 118 TEST(ResolveProxyMsgHelperTest, QueueRequests) { |
| 118 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; | 119 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; |
| 119 net::ProxyService service(new MockProxyConfigService, resolver); | 120 scoped_refptr<net::ProxyService> service( |
| 121 new net::ProxyService(new MockProxyConfigService, resolver)); |
| 120 | 122 |
| 121 MyDelegate delegate; | 123 MyDelegate delegate; |
| 122 ResolveProxyMsgHelper helper(&delegate, &service); | 124 ResolveProxyMsgHelper helper(&delegate, service); |
| 123 | 125 |
| 124 GURL url1("http://www.google1.com/"); | 126 GURL url1("http://www.google1.com/"); |
| 125 GURL url2("http://www.google2.com/"); | 127 GURL url2("http://www.google2.com/"); |
| 126 GURL url3("http://www.google3.com/"); | 128 GURL url3("http://www.google3.com/"); |
| 127 | 129 |
| 128 scoped_ptr<IPC::Message> msg1(new IPC::Message()); | 130 scoped_ptr<IPC::Message> msg1(new IPC::Message()); |
| 129 scoped_ptr<IPC::Message> msg2(new IPC::Message()); | 131 scoped_ptr<IPC::Message> msg2(new IPC::Message()); |
| 130 scoped_ptr<IPC::Message> msg3(new IPC::Message()); | 132 scoped_ptr<IPC::Message> msg3(new IPC::Message()); |
| 131 | 133 |
| 132 // Start three requests. Since the proxy resolver is async, all the | 134 // Start three requests. Since the proxy resolver is async, all the |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 // Check result. | 177 // Check result. |
| 176 EXPECT_EQ(msg3.get(), delegate.pending_result()->msg); | 178 EXPECT_EQ(msg3.get(), delegate.pending_result()->msg); |
| 177 EXPECT_EQ(net::OK, delegate.pending_result()->error_code); | 179 EXPECT_EQ(net::OK, delegate.pending_result()->error_code); |
| 178 EXPECT_EQ("PROXY result3:80", delegate.pending_result()->proxy_list); | 180 EXPECT_EQ("PROXY result3:80", delegate.pending_result()->proxy_list); |
| 179 delegate.clear_pending_result(); | 181 delegate.clear_pending_result(); |
| 180 } | 182 } |
| 181 | 183 |
| 182 // Delete the helper while a request is in progress, and others are pending. | 184 // Delete the helper while a request is in progress, and others are pending. |
| 183 TEST(ResolveProxyMsgHelperTest, CancelPendingRequests) { | 185 TEST(ResolveProxyMsgHelperTest, CancelPendingRequests) { |
| 184 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; | 186 net::MockAsyncProxyResolver* resolver = new net::MockAsyncProxyResolver; |
| 185 net::ProxyService service(new MockProxyConfigService, resolver); | 187 scoped_refptr<net::ProxyService> service( |
| 188 new net::ProxyService(new MockProxyConfigService, resolver)); |
| 186 | 189 |
| 187 MyDelegate delegate; | 190 MyDelegate delegate; |
| 188 scoped_ptr<ResolveProxyMsgHelper> helper( | 191 scoped_ptr<ResolveProxyMsgHelper> helper( |
| 189 new ResolveProxyMsgHelper(&delegate, &service)); | 192 new ResolveProxyMsgHelper(&delegate, service)); |
| 190 | 193 |
| 191 GURL url1("http://www.google1.com/"); | 194 GURL url1("http://www.google1.com/"); |
| 192 GURL url2("http://www.google2.com/"); | 195 GURL url2("http://www.google2.com/"); |
| 193 GURL url3("http://www.google3.com/"); | 196 GURL url3("http://www.google3.com/"); |
| 194 | 197 |
| 195 // NOTE: these are not scoped ptr, since they will be deleted by the | 198 // NOTE: these are not scoped ptr, since they will be deleted by the |
| 196 // request's cancellation. | 199 // request's cancellation. |
| 197 IPC::Message* msg1 = new IPC::Message(); | 200 IPC::Message* msg1 = new IPC::Message(); |
| 198 IPC::Message* msg2 = new IPC::Message(); | 201 IPC::Message* msg2 = new IPC::Message(); |
| 199 IPC::Message* msg3 = new IPC::Message(); | 202 IPC::Message* msg3 = new IPC::Message(); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 220 | 223 |
| 221 // The pending requests sent to the proxy resolver should have been cancelled. | 224 // The pending requests sent to the proxy resolver should have been cancelled. |
| 222 | 225 |
| 223 EXPECT_EQ(0u, resolver->pending_requests().size()); | 226 EXPECT_EQ(0u, resolver->pending_requests().size()); |
| 224 | 227 |
| 225 EXPECT_EQ(NULL, delegate.pending_result()); | 228 EXPECT_EQ(NULL, delegate.pending_result()); |
| 226 | 229 |
| 227 // It should also be the case that msg1, msg2, msg3 were deleted by the | 230 // It should also be the case that msg1, msg2, msg3 were deleted by the |
| 228 // cancellation. (Else will show up as a leak in Purify/Valgrind). | 231 // cancellation. (Else will show up as a leak in Purify/Valgrind). |
| 229 } | 232 } |
| OLD | NEW |