diff options
author | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 17:13:11 +0000 |
---|---|---|
committer | szym@chromium.org <szym@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-16 17:13:11 +0000 |
commit | b4481b2296ce6035e52db00c8011cf20c165d7b6 (patch) | |
tree | 6a5b751c14fdc713b4ae76e407ac29c82d9f1df5 /net/base/host_resolver_impl.h | |
parent | e1c39ae523ad5cce2f6d8d9e0dd177c2d5358676 (diff) | |
download | chromium_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.h | 23 |
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_; |