summaryrefslogtreecommitdiffstats
path: root/net/base/host_resolver_impl.h
diff options
context:
space:
mode:
authorszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-16 17:13:11 +0000
committerszym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-16 17:13:11 +0000
commitb4481b2296ce6035e52db00c8011cf20c165d7b6 (patch)
tree6a5b751c14fdc713b4ae76e407ac29c82d9f1df5 /net/base/host_resolver_impl.h
parente1c39ae523ad5cce2f6d8d9e0dd177c2d5358676 (diff)
downloadchromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.zip
chromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.tar.gz
chromium_src-b4481b2296ce6035e52db00c8011cf20c165d7b6.tar.bz2
[net/dns] Refactoring of DnsConfigService.
- Replaces Observer with Callback. - The Callback is run within 100ms of any config change, not only on successful read. It is also run on errors in watches (registry and files). This allows HostResolverImpl to withdraw from using DnsTask until DnsConfig is read successfully. - Moves DnsHostsReader to dns_hosts.{h,cc}). - Handles missing HOSTS files. - Respects network adapter binding order in DnsConfigServiceWin. - Adds NetLog source for DnsConfig-related events. BUG=112856, 115460, 115494 TEST=./net_unittests --gtest_filter=DnsConfig* Review URL: http://codereview.chromium.org/9597029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127190 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/host_resolver_impl.h')
-rw-r--r--net/base/host_resolver_impl.h23
1 files changed, 13 insertions, 10 deletions
diff --git a/net/base/host_resolver_impl.h b/net/base/host_resolver_impl.h
index 7b0900f..65b25c1 100644
--- a/net/base/host_resolver_impl.h
+++ b/net/base/host_resolver_impl.h
@@ -56,14 +56,11 @@ namespace net {
// threads using PrioritizedDispatcher::Limits.
//
// Jobs are ordered in the queue based on their priority and order of arrival.
-//
-// TODO(szym): Change DnsConfigService::Observer to Callback.
class NET_EXPORT HostResolverImpl
: public HostResolver,
NON_EXPORTED_BASE(public base::NonThreadSafe),
public NetworkChangeNotifier::IPAddressObserver,
public NetworkChangeNotifier::DNSObserver,
- NON_EXPORTED_BASE(public DnsConfigService::Observer),
public base::SupportsWeakPtr<HostResolverImpl> {
public:
// Parameters for ProcTask which resolves hostnames using HostResolveProc.
@@ -147,12 +144,13 @@ class NET_EXPORT HostResolverImpl
virtual void ProbeIPv6Support() OVERRIDE;
virtual HostCache* GetHostCache() OVERRIDE;
- // Allows the tests to catch slots leaking out of the dispatcher.
- size_t num_running_jobs_for_tests() const {
- return dispatcher_.num_running_jobs();
- }
-
private:
+ FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest,
+ CanceledRequestsReleaseJobSlots);
+ FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest,
+ ObeyPoolConstraintsAfterIPAddressChange);
+ FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest,
+ AbortOnlyExistingRequestsOnIPAddressChange);
FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest, DnsTask);
FRIEND_TEST_ALL_PREFIXES(HostResolverImplTest, ServeFromHosts);
class Job;
@@ -231,11 +229,16 @@ class NET_EXPORT HostResolverImpl
// NetworkChangeNotifier::DNSObserver:
virtual void OnDNSChanged(unsigned detail) OVERRIDE;
- // DnsConfigService::Observer:
- virtual void OnConfigChanged(const DnsConfig& dns_config) OVERRIDE;
+ // DnsConfigService callback:
+ void OnDnsConfigChanged(const DnsConfig& dns_config);
// True if have fully configured DNS client.
bool HaveDnsConfig() const;
+ // Allows the tests to catch slots leaking out of the dispatcher.
+
+ size_t num_running_jobs_for_tests() const {
+ return dispatcher_.num_running_jobs();
+ }
// Cache of host resolution results.
scoped_ptr<HostCache> cache_;