| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #ifndef NET_PROXY_MOCK_PROXY_RESOLVER_H_ | 5 #ifndef NET_PROXY_MOCK_PROXY_RESOLVER_H_ |
| 6 #define NET_PROXY_MOCK_PROXY_RESOLVER_H_ | 6 #define NET_PROXY_MOCK_PROXY_RESOLVER_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "net/base/net_errors.h" | 12 #include "net/base/net_errors.h" |
| 13 #include "net/proxy/proxy_resolver.h" | 13 #include "net/proxy/proxy_resolver.h" |
| 14 #include "net/proxy/proxy_resolver_factory.h" | 14 #include "net/proxy/proxy_resolver_factory.h" |
| 15 #include "url/gurl.h" | 15 #include "url/gurl.h" |
| 16 | 16 |
| 17 namespace base { | 17 namespace base { |
| 18 class MessageLoop; | 18 class MessageLoop; |
| 19 } | 19 } |
| 20 | 20 |
| 21 namespace net { | 21 namespace net { |
| 22 | 22 |
| 23 // Asynchronous mock proxy resolver. All requests complete asynchronously, | 23 // Asynchronous mock proxy resolver. All requests complete asynchronously, |
| 24 // user must call Job::CompleteNow() on a pending request to signal it. | 24 // user must call Request::CompleteNow() on a pending request to signal it. |
| 25 class MockAsyncProxyResolver : public ProxyResolver { | 25 class MockAsyncProxyResolver : public ProxyResolver { |
| 26 public: | 26 public: |
| 27 class Job { | 27 class Request : public base::RefCounted<Request> { |
| 28 public: | 28 public: |
| 29 Job(MockAsyncProxyResolver* resolver, | 29 Request(MockAsyncProxyResolver* resolver, |
| 30 const GURL& url, | 30 const GURL& url, |
| 31 ProxyInfo* results, | 31 ProxyInfo* results, |
| 32 const CompletionCallback& callback); | 32 const CompletionCallback& callback); |
| 33 | 33 |
| 34 const GURL& url() const { return url_; } | 34 const GURL& url() const { return url_; } |
| 35 ProxyInfo* results() const { return results_; } | 35 ProxyInfo* results() const { return results_; } |
| 36 const CompletionCallback& callback() const { return callback_; } | 36 const CompletionCallback& callback() const { return callback_; } |
| 37 MockAsyncProxyResolver* Resolver() const { return resolver_; }; | |
| 38 | 37 |
| 39 void CompleteNow(int rv); | 38 void CompleteNow(int rv); |
| 40 | 39 |
| 41 ~Job(); | 40 private: |
| 41 friend class base::RefCounted<Request>; |
| 42 | 42 |
| 43 private: | 43 virtual ~Request(); |
| 44 |
| 44 MockAsyncProxyResolver* resolver_; | 45 MockAsyncProxyResolver* resolver_; |
| 45 const GURL url_; | 46 const GURL url_; |
| 46 ProxyInfo* results_; | 47 ProxyInfo* results_; |
| 47 CompletionCallback callback_; | 48 CompletionCallback callback_; |
| 48 base::MessageLoop* origin_loop_; | 49 base::MessageLoop* origin_loop_; |
| 49 }; | 50 }; |
| 50 | 51 |
| 51 class RequestImpl : public ProxyResolver::Request { | 52 typedef std::vector<scoped_refptr<Request> > RequestsList; |
| 52 public: | |
| 53 explicit RequestImpl(scoped_ptr<Job> job); | |
| 54 | |
| 55 ~RequestImpl() override; | |
| 56 | |
| 57 LoadState GetLoadState() override; | |
| 58 | |
| 59 private: | |
| 60 scoped_ptr<Job> job_; | |
| 61 }; | |
| 62 | 53 |
| 63 MockAsyncProxyResolver(); | 54 MockAsyncProxyResolver(); |
| 64 ~MockAsyncProxyResolver() override; | 55 ~MockAsyncProxyResolver() override; |
| 65 | 56 |
| 66 // ProxyResolver implementation. | 57 // ProxyResolver implementation. |
| 67 int GetProxyForURL(const GURL& url, | 58 int GetProxyForURL(const GURL& url, |
| 68 ProxyInfo* results, | 59 ProxyInfo* results, |
| 69 const CompletionCallback& callback, | 60 const CompletionCallback& callback, |
| 70 scoped_ptr<Request>* request, | 61 RequestHandle* request_handle, |
| 71 const BoundNetLog& /*net_log*/) override; | 62 const BoundNetLog& /*net_log*/) override; |
| 72 const std::vector<Job*>& pending_jobs() const { return pending_jobs_; } | 63 void CancelRequest(RequestHandle request_handle) override; |
| 73 | 64 LoadState GetLoadState(RequestHandle request_handle) const override; |
| 74 const std::vector<scoped_ptr<Job>>& cancelled_jobs() const { | 65 const RequestsList& pending_requests() const { |
| 75 return cancelled_jobs_; | 66 return pending_requests_; |
| 76 } | 67 } |
| 77 | 68 |
| 78 void AddCancelledJob(scoped_ptr<Job> job); | 69 const RequestsList& cancelled_requests() const { |
| 79 void RemovePendingJob(Job* job); | 70 return cancelled_requests_; |
| 71 } |
| 72 |
| 73 void RemovePendingRequest(Request* request); |
| 80 | 74 |
| 81 private: | 75 private: |
| 82 std::vector<Job*> pending_jobs_; | 76 RequestsList pending_requests_; |
| 83 std::vector<scoped_ptr<Job>> cancelled_jobs_; | 77 RequestsList cancelled_requests_; |
| 84 }; | 78 }; |
| 85 | 79 |
| 86 // Asynchronous mock proxy resolver factory . All requests complete | 80 // Asynchronous mock proxy resolver factory . All requests complete |
| 87 // asynchronously; the user must call Request::CompleteNow() on a pending | 81 // asynchronously; the user must call Request::CompleteNow() on a pending |
| 88 // request to signal it. | 82 // request to signal it. |
| 89 class MockAsyncProxyResolverFactory : public ProxyResolverFactory { | 83 class MockAsyncProxyResolverFactory : public ProxyResolverFactory { |
| 90 public: | 84 public: |
| 91 class Request; | 85 class Request; |
| 92 using RequestsList = std::vector<scoped_refptr<Request>>; | 86 using RequestsList = std::vector<scoped_refptr<Request>>; |
| 93 | 87 |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 // ForwardingProxyResolver forwards all requests to |impl|. |impl| must remain | 144 // ForwardingProxyResolver forwards all requests to |impl|. |impl| must remain |
| 151 // so long as this remains in use. | 145 // so long as this remains in use. |
| 152 class ForwardingProxyResolver : public ProxyResolver { | 146 class ForwardingProxyResolver : public ProxyResolver { |
| 153 public: | 147 public: |
| 154 explicit ForwardingProxyResolver(ProxyResolver* impl); | 148 explicit ForwardingProxyResolver(ProxyResolver* impl); |
| 155 | 149 |
| 156 // ProxyResolver overrides. | 150 // ProxyResolver overrides. |
| 157 int GetProxyForURL(const GURL& query_url, | 151 int GetProxyForURL(const GURL& query_url, |
| 158 ProxyInfo* results, | 152 ProxyInfo* results, |
| 159 const CompletionCallback& callback, | 153 const CompletionCallback& callback, |
| 160 scoped_ptr<Request>* request, | 154 RequestHandle* request, |
| 161 const BoundNetLog& net_log) override; | 155 const BoundNetLog& net_log) override; |
| 156 void CancelRequest(RequestHandle request) override; |
| 157 LoadState GetLoadState(RequestHandle request) const override; |
| 162 | 158 |
| 163 private: | 159 private: |
| 164 ProxyResolver* impl_; | 160 ProxyResolver* impl_; |
| 165 | 161 |
| 166 DISALLOW_COPY_AND_ASSIGN(ForwardingProxyResolver); | 162 DISALLOW_COPY_AND_ASSIGN(ForwardingProxyResolver); |
| 167 }; | 163 }; |
| 168 | 164 |
| 169 } // namespace net | 165 } // namespace net |
| 170 | 166 |
| 171 #endif // NET_PROXY_MOCK_PROXY_RESOLVER_H_ | 167 #endif // NET_PROXY_MOCK_PROXY_RESOLVER_H_ |
| OLD | NEW |