summaryrefslogtreecommitdiffstats
path: root/net/dns/dns_config_service_win.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/dns/dns_config_service_win.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/dns/dns_config_service_win.h')
-rw-r--r--net/dns/dns_config_service_win.h20
1 files changed, 15 insertions, 5 deletions
diff --git a/net/dns/dns_config_service_win.h b/net/dns/dns_config_service_win.h
index d60ae04..3159f77 100644
--- a/net/dns/dns_config_service_win.h
+++ b/net/dns/dns_config_service_win.h
@@ -33,20 +33,27 @@
namespace net {
-class WatchingFileReader;
+class FilePathWatcherWrapper;
+
+// Use DnsConfigService::CreateSystemService to use it outside of tests.
+namespace internal {
class NET_EXPORT_PRIVATE DnsConfigServiceWin
- : NON_EXPORTED_BASE(public DnsConfigService) {
+ : NON_EXPORTED_BASE(public DnsConfigService) {
public:
DnsConfigServiceWin();
virtual ~DnsConfigServiceWin();
- virtual void Watch() OVERRIDE;
+ virtual void Watch(const CallbackType& callback) OVERRIDE;
private:
class ConfigReader;
+
+ void OnHostsChanged(bool succeeded);
+
scoped_refptr<ConfigReader> config_reader_;
- scoped_ptr<WatchingFileReader> hosts_watcher_;
+ scoped_ptr<FilePathWatcherWrapper> hosts_watcher_;
+ scoped_refptr<SerialWorker> hosts_reader_;
DISALLOW_COPY_AND_ASSIGN(DnsConfigServiceWin);
};
@@ -73,7 +80,8 @@ struct NET_EXPORT_PRIVATE DnsSystemSettings {
RegDword level;
};
- // Filled in by GetAdapterAddresses.
+ // Filled in by GetAdapterAddresses. Note that the alternative
+ // GetNetworkParams does not include IPv6 addresses.
scoped_ptr_malloc<IP_ADAPTER_ADDRESSES> addresses;
// SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\SearchList
@@ -105,6 +113,8 @@ bool NET_EXPORT_PRIVATE ParseSearchList(const string16& value,
bool NET_EXPORT_PRIVATE ConvertSettingsToDnsConfig(
const DnsSystemSettings& settings, DnsConfig* dns_config);
+} // namespace internal
+
} // namespace net
#endif // NET_DNS_DNS_CONFIG_SERVICE_WIN_H_