diff options
author | craig.schlenter@chromium.org <craig.schlenter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-05 18:23:44 +0000 |
---|---|---|
committer | craig.schlenter@chromium.org <craig.schlenter@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-05 18:23:44 +0000 |
commit | 74482ef3290cf71d25bcf9b8d12547363ad8ffe3 (patch) | |
tree | 93c182e30e1ad63f48376d993356cf4726fb88aa /net/base/network_change_notifier.h | |
parent | 37dd9ae5eb1449c0153b0404d69ae7663253daf4 (diff) | |
download | chromium_src-74482ef3290cf71d25bcf9b8d12547363ad8ffe3.zip chromium_src-74482ef3290cf71d25bcf9b8d12547363ad8ffe3.tar.gz chromium_src-74482ef3290cf71d25bcf9b8d12547363ad8ffe3.tar.bz2 |
Linux: Monitor resolv.conf for changes and use that to reload resolver.
BUG=67734
TEST=manual testing by poking at resolv.conf
Review URL: http://codereview.chromium.org/6903061
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99666 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/network_change_notifier.h')
-rw-r--r-- | net/base/network_change_notifier.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/net/base/network_change_notifier.h b/net/base/network_change_notifier.h index dad71c3..39b9e05 100644 --- a/net/base/network_change_notifier.h +++ b/net/base/network_change_notifier.h @@ -50,6 +50,22 @@ class NET_EXPORT NetworkChangeNotifier { DISALLOW_COPY_AND_ASSIGN(OnlineStateObserver); }; + class NET_EXPORT DNSObserver { + public: + virtual ~DNSObserver() {} + + // Will be called when the DNS resolver of the system may have changed. + // This is only used on Linux currently and watches /etc/resolv.conf + // and /etc/hosts + virtual void OnDNSChanged() = 0; + + protected: + DNSObserver() {} + + private: + DISALLOW_COPY_AND_ASSIGN(DNSObserver); + }; + virtual ~NetworkChangeNotifier(); // See the description of NetworkChangeNotifier::IsOffline(). @@ -89,6 +105,7 @@ class NET_EXPORT NetworkChangeNotifier { // thread), in which case it will simply do nothing. static void AddIPAddressObserver(IPAddressObserver* observer); static void AddOnlineStateObserver(OnlineStateObserver* observer); + static void AddDNSObserver(DNSObserver* observer); // Unregisters |observer| from receiving notifications. This must be called // on the same thread on which AddObserver() was called. Like AddObserver(), @@ -99,6 +116,7 @@ class NET_EXPORT NetworkChangeNotifier { // there's no reason to use the API in this risky way, so don't do it. static void RemoveIPAddressObserver(IPAddressObserver* observer); static void RemoveOnlineStateObserver(OnlineStateObserver* observer); + static void RemoveDNSObserver(DNSObserver* observer); // Allow unit tests to trigger notifications. static void NotifyObserversOfIPAddressChangeForTests() { @@ -113,12 +131,15 @@ class NET_EXPORT NetworkChangeNotifier { // tests. static void NotifyObserversOfIPAddressChange(); static void NotifyObserversOfOnlineStateChange(); + static void NotifyObserversOfDNSChange(); private: const scoped_refptr<ObserverListThreadSafe<IPAddressObserver> > ip_address_observer_list_; const scoped_refptr<ObserverListThreadSafe<OnlineStateObserver> > online_state_observer_list_; + const scoped_refptr<ObserverListThreadSafe<DNSObserver> > + resolver_state_observer_list_; DISALLOW_COPY_AND_ASSIGN(NetworkChangeNotifier); }; |