Index: net/base/network_change_notifier.cc |
diff --git a/net/base/network_change_notifier.cc b/net/base/network_change_notifier.cc |
index 2eb59ade76a77ae1dbc46134aa6cda564073cb3b..29b983ea3b2a57a9638f7ce8c1f265bdd1c06984 100644 |
--- a/net/base/network_change_notifier.cc |
+++ b/net/base/network_change_notifier.cc |
@@ -90,6 +90,13 @@ void NetworkChangeNotifier::AddOnlineStateObserver( |
} |
} |
+void NetworkChangeNotifier::AddDNSObserver(DNSObserver* observer) { |
+ if (g_network_change_notifier) { |
+ g_network_change_notifier->resolver_state_observer_list_->AddObserver( |
+ observer); |
+ } |
+} |
+ |
void NetworkChangeNotifier::RemoveIPAddressObserver( |
IPAddressObserver* observer) { |
if (g_network_change_notifier) { |
@@ -106,13 +113,23 @@ void NetworkChangeNotifier::RemoveOnlineStateObserver( |
} |
} |
+void NetworkChangeNotifier::RemoveDNSObserver(DNSObserver* observer) { |
+ if (g_network_change_notifier) { |
+ g_network_change_notifier->resolver_state_observer_list_->RemoveObserver( |
+ observer); |
+ } |
+} |
+ |
NetworkChangeNotifier::NetworkChangeNotifier() |
: ip_address_observer_list_( |
new ObserverListThreadSafe<IPAddressObserver>( |
ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)), |
online_state_observer_list_( |
new ObserverListThreadSafe<OnlineStateObserver>( |
- ObserverListBase<OnlineStateObserver>::NOTIFY_EXISTING_ONLY)) { |
+ ObserverListBase<OnlineStateObserver>::NOTIFY_EXISTING_ONLY)), |
+ resolver_state_observer_list_( |
+ new ObserverListThreadSafe<DNSObserver>( |
+ ObserverListBase<DNSObserver>::NOTIFY_EXISTING_ONLY)) { |
DCHECK(!g_network_change_notifier); |
g_network_change_notifier = this; |
} |
@@ -124,6 +141,13 @@ void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { |
} |
} |
+void NetworkChangeNotifier::NotifyObserversOfDNSChange() { |
+ if (g_network_change_notifier) { |
+ g_network_change_notifier->resolver_state_observer_list_->Notify( |
+ &DNSObserver::OnDNSChanged); |
+ } |
+} |
+ |
void NetworkChangeNotifier::NotifyObserversOfOnlineStateChange() { |
if (g_network_change_notifier) { |
g_network_change_notifier->online_state_observer_list_->Notify( |