| 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 #ifndef NET_DNS_MOCK_HOST_RESOLVER_H_ | 5 #ifndef NET_DNS_MOCK_HOST_RESOLVER_H_ |
| 6 #define NET_DNS_MOCK_HOST_RESOLVER_H_ | 6 #define NET_DNS_MOCK_HOST_RESOLVER_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 | 62 |
| 63 // Controls whether resolutions complete synchronously or asynchronously. | 63 // Controls whether resolutions complete synchronously or asynchronously. |
| 64 void set_synchronous_mode(bool is_synchronous) { | 64 void set_synchronous_mode(bool is_synchronous) { |
| 65 synchronous_mode_ = is_synchronous; | 65 synchronous_mode_ = is_synchronous; |
| 66 } | 66 } |
| 67 | 67 |
| 68 // Asynchronous requests are automatically resolved by default. | 68 // Asynchronous requests are automatically resolved by default. |
| 69 // If set_ondemand_mode() is set then Resolve() returns IO_PENDING and | 69 // If set_ondemand_mode() is set then Resolve() returns IO_PENDING and |
| 70 // ResolveAllPending() must be explicitly invoked to resolve all requests | 70 // ResolveAllPending() must be explicitly invoked to resolve all requests |
| 71 // that are pending. | 71 // that are pending. |
| 72 void set_ondemand_mode(bool is_ondemand) { | 72 void set_ondemand_mode(bool is_ondemand) { ondemand_mode_ = is_ondemand; } |
| 73 ondemand_mode_ = is_ondemand; | |
| 74 } | |
| 75 | 73 |
| 76 // HostResolver methods: | 74 // HostResolver methods: |
| 77 virtual int Resolve(const RequestInfo& info, | 75 virtual int Resolve(const RequestInfo& info, |
| 78 RequestPriority priority, | 76 RequestPriority priority, |
| 79 AddressList* addresses, | 77 AddressList* addresses, |
| 80 const CompletionCallback& callback, | 78 const CompletionCallback& callback, |
| 81 RequestHandle* out_req, | 79 RequestHandle* out_req, |
| 82 const BoundNetLog& net_log) OVERRIDE; | 80 const BoundNetLog& net_log) OVERRIDE; |
| 83 virtual int ResolveFromCache(const RequestInfo& info, | 81 virtual int ResolveFromCache(const RequestInfo& info, |
| 84 AddressList* addresses, | 82 AddressList* addresses, |
| 85 const BoundNetLog& net_log) OVERRIDE; | 83 const BoundNetLog& net_log) OVERRIDE; |
| 86 virtual void CancelRequest(RequestHandle req) OVERRIDE; | 84 virtual void CancelRequest(RequestHandle req) OVERRIDE; |
| 87 virtual HostCache* GetHostCache() OVERRIDE; | 85 virtual HostCache* GetHostCache() OVERRIDE; |
| 88 | 86 |
| 89 // Resolves all pending requests. It is only valid to invoke this if | 87 // Resolves all pending requests. It is only valid to invoke this if |
| 90 // set_ondemand_mode was set before. The requests are resolved asynchronously, | 88 // set_ondemand_mode was set before. The requests are resolved asynchronously, |
| 91 // after this call returns. | 89 // after this call returns. |
| 92 void ResolveAllPending(); | 90 void ResolveAllPending(); |
| 93 | 91 |
| 94 // Returns true if there are pending requests that can be resolved by invoking | 92 // Returns true if there are pending requests that can be resolved by invoking |
| 95 // ResolveAllPending(). | 93 // ResolveAllPending(). |
| 96 bool has_pending_requests() const { return !requests_.empty(); } | 94 bool has_pending_requests() const { return !requests_.empty(); } |
| 97 | 95 |
| 98 // The number of times that Resolve() has been called. | 96 // The number of times that Resolve() has been called. |
| 99 size_t num_resolve() const { | 97 size_t num_resolve() const { return num_resolve_; } |
| 100 return num_resolve_; | |
| 101 } | |
| 102 | 98 |
| 103 // The number of times that ResolveFromCache() has been called. | 99 // The number of times that ResolveFromCache() has been called. |
| 104 size_t num_resolve_from_cache() const { | 100 size_t num_resolve_from_cache() const { return num_resolve_from_cache_; } |
| 105 return num_resolve_from_cache_; | |
| 106 } | |
| 107 | 101 |
| 108 // Returns the RequestPriority of the last call to Resolve() (or | 102 // Returns the RequestPriority of the last call to Resolve() (or |
| 109 // DEFAULT_PRIORITY if Resolve() hasn't been called yet). | 103 // DEFAULT_PRIORITY if Resolve() hasn't been called yet). |
| 110 RequestPriority last_request_priority() const { | 104 RequestPriority last_request_priority() const { |
| 111 return last_request_priority_; | 105 return last_request_priority_; |
| 112 } | 106 } |
| 113 | 107 |
| 114 protected: | 108 protected: |
| 115 explicit MockHostResolverBase(bool use_caching); | 109 explicit MockHostResolverBase(bool use_caching); |
| 116 | 110 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 // RuleBasedHostResolverProc applies a set of rules to map a host string to | 155 // RuleBasedHostResolverProc applies a set of rules to map a host string to |
| 162 // a replacement host string. It then uses the system host resolver to return | 156 // a replacement host string. It then uses the system host resolver to return |
| 163 // a socket address. Generally the replacement should be an IPv4 literal so | 157 // a socket address. Generally the replacement should be an IPv4 literal so |
| 164 // there is no network dependency. | 158 // there is no network dependency. |
| 165 class RuleBasedHostResolverProc : public HostResolverProc { | 159 class RuleBasedHostResolverProc : public HostResolverProc { |
| 166 public: | 160 public: |
| 167 explicit RuleBasedHostResolverProc(HostResolverProc* previous); | 161 explicit RuleBasedHostResolverProc(HostResolverProc* previous); |
| 168 | 162 |
| 169 // Any hostname matching the given pattern will be replaced with the given | 163 // Any hostname matching the given pattern will be replaced with the given |
| 170 // replacement value. Usually, replacement should be an IP address literal. | 164 // replacement value. Usually, replacement should be an IP address literal. |
| 171 void AddRule(const std::string& host_pattern, | 165 void AddRule(const std::string& host_pattern, const std::string& replacement); |
| 172 const std::string& replacement); | |
| 173 | 166 |
| 174 // Same as AddRule(), but further restricts to |address_family|. | 167 // Same as AddRule(), but further restricts to |address_family|. |
| 175 void AddRuleForAddressFamily(const std::string& host_pattern, | 168 void AddRuleForAddressFamily(const std::string& host_pattern, |
| 176 AddressFamily address_family, | 169 AddressFamily address_family, |
| 177 const std::string& replacement); | 170 const std::string& replacement); |
| 178 | 171 |
| 179 // Same as AddRule(), but the replacement is expected to be an IPv4 or IPv6 | 172 // Same as AddRule(), but the replacement is expected to be an IPv4 or IPv6 |
| 180 // literal. This can be used in place of AddRule() to bypass the system's | 173 // literal. This can be used in place of AddRule() to bypass the system's |
| 181 // host resolver (the address list will be constructed manually). | 174 // host resolver (the address list will be constructed manually). |
| 182 // If |canonical_name| is non-empty, it is copied to the resulting AddressList | 175 // If |canonical_name| is non-empty, it is copied to the resulting AddressList |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 void Init(HostResolverProc* proc); | 247 void Init(HostResolverProc* proc); |
| 255 | 248 |
| 256 private: | 249 private: |
| 257 scoped_refptr<HostResolverProc> current_proc_; | 250 scoped_refptr<HostResolverProc> current_proc_; |
| 258 scoped_refptr<HostResolverProc> previous_proc_; | 251 scoped_refptr<HostResolverProc> previous_proc_; |
| 259 }; | 252 }; |
| 260 | 253 |
| 261 } // namespace net | 254 } // namespace net |
| 262 | 255 |
| 263 #endif // NET_DNS_MOCK_HOST_RESOLVER_H_ | 256 #endif // NET_DNS_MOCK_HOST_RESOLVER_H_ |
| OLD | NEW |