OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/base/network_change_notifier.h" | 5 #include "net/base/network_change_notifier.h" |
6 #include "build/build_config.h" | 6 #include "build/build_config.h" |
7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
8 #include "net/base/network_change_notifier_win.h" | 8 #include "net/base/network_change_notifier_win.h" |
9 #elif defined(OS_LINUX) | 9 #elif defined(OS_LINUX) |
10 #include "net/base/network_change_notifier_linux.h" | 10 #include "net/base/network_change_notifier_linux.h" |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 bool NetworkChangeNotifier::IsOffline() { | 51 bool NetworkChangeNotifier::IsOffline() { |
52 return g_network_change_notifier && | 52 return g_network_change_notifier && |
53 g_network_change_notifier->IsCurrentlyOffline(); | 53 g_network_change_notifier->IsCurrentlyOffline(); |
54 } | 54 } |
55 | 55 |
56 // static | 56 // static |
57 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() { | 57 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() { |
58 return new MockNetworkChangeNotifier(); | 58 return new MockNetworkChangeNotifier(); |
59 } | 59 } |
60 | 60 |
61 void NetworkChangeNotifier::AddObserver(Observer* observer) { | 61 void NetworkChangeNotifier::AddIPAddressObserver(IPAddressObserver* observer) { |
62 if (g_network_change_notifier) | 62 if (g_network_change_notifier) |
63 g_network_change_notifier->observer_list_->AddObserver(observer); | 63 g_network_change_notifier->ip_address_observer_list_->AddObserver(observer); |
64 } | 64 } |
65 | 65 |
66 void NetworkChangeNotifier::RemoveObserver(Observer* observer) { | 66 void NetworkChangeNotifier::AddOnlineStateObserver( |
67 if (g_network_change_notifier) | 67 OnlineStateObserver* observer) { |
68 g_network_change_notifier->observer_list_->RemoveObserver(observer); | 68 if (g_network_change_notifier) { |
| 69 g_network_change_notifier->online_state_observer_list_->AddObserver( |
| 70 observer); |
| 71 } |
| 72 } |
| 73 |
| 74 void NetworkChangeNotifier::RemoveIPAddressObserver( |
| 75 IPAddressObserver* observer) { |
| 76 if (g_network_change_notifier) { |
| 77 g_network_change_notifier->ip_address_observer_list_->RemoveObserver( |
| 78 observer); |
| 79 } |
| 80 } |
| 81 |
| 82 void NetworkChangeNotifier::RemoveOnlineStateObserver( |
| 83 OnlineStateObserver* observer) { |
| 84 if (g_network_change_notifier) { |
| 85 g_network_change_notifier->online_state_observer_list_->RemoveObserver( |
| 86 observer); |
| 87 } |
69 } | 88 } |
70 | 89 |
71 NetworkChangeNotifier::NetworkChangeNotifier() | 90 NetworkChangeNotifier::NetworkChangeNotifier() |
72 : observer_list_( | 91 : ip_address_observer_list_( |
73 new ObserverListThreadSafe<Observer>( | 92 new ObserverListThreadSafe<IPAddressObserver>( |
74 ObserverListBase<Observer>::NOTIFY_EXISTING_ONLY)) { | 93 ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)), |
| 94 online_state_observer_list_( |
| 95 new ObserverListThreadSafe<OnlineStateObserver>( |
| 96 ObserverListBase<OnlineStateObserver>::NOTIFY_EXISTING_ONLY)) { |
75 DCHECK(!g_network_change_notifier); | 97 DCHECK(!g_network_change_notifier); |
76 g_network_change_notifier = this; | 98 g_network_change_notifier = this; |
77 } | 99 } |
78 | 100 |
79 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { | 101 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { |
80 if (g_network_change_notifier) { | 102 if (g_network_change_notifier) { |
81 g_network_change_notifier->observer_list_->Notify( | 103 g_network_change_notifier->ip_address_observer_list_->Notify( |
82 &Observer::OnIPAddressChanged); | 104 &IPAddressObserver::OnIPAddressChanged); |
83 } | 105 } |
84 } | 106 } |
85 | 107 |
| 108 void NetworkChangeNotifier::NotifyObserversOfOnlineStateChange() { |
| 109 online_state_observer_list_->Notify( |
| 110 &OnlineStateObserver::OnOnlineStateChanged, !IsOffline()); |
| 111 } |
| 112 |
86 } // namespace net | 113 } // namespace net |
OLD | NEW |