Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(946)

Side by Side Diff: net/base/network_change_notifier.cc

Issue 9147026: API for connection type (Ethernet/WIFI/WWAN ...) in NetworkChangeNotifier. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "net/base/network_change_notifier_factory.h" 6 #include "net/base/network_change_notifier_factory.h"
7 #include "build/build_config.h" 7 #include "build/build_config.h"
8 #if defined(OS_WIN) 8 #if defined(OS_WIN)
9 #include "net/base/network_change_notifier_win.h" 9 #include "net/base/network_change_notifier_win.h"
10 #elif defined(OS_LINUX) || defined(OS_ANDROID) 10 #elif defined(OS_LINUX) || defined(OS_ANDROID)
(...skipping 10 matching lines...) Expand all
21 // in ways that would require us to place locks around access to this object. 21 // in ways that would require us to place locks around access to this object.
22 // (The prohibition on global non-POD objects makes it tricky to do such a thing 22 // (The prohibition on global non-POD objects makes it tricky to do such a thing
23 // anyway.) 23 // anyway.)
24 NetworkChangeNotifier* g_network_change_notifier = NULL; 24 NetworkChangeNotifier* g_network_change_notifier = NULL;
25 25
26 // Class factory singleton. 26 // Class factory singleton.
27 NetworkChangeNotifierFactory* g_network_change_notifier_factory = NULL; 27 NetworkChangeNotifierFactory* g_network_change_notifier_factory = NULL;
28 28
29 class MockNetworkChangeNotifier : public NetworkChangeNotifier { 29 class MockNetworkChangeNotifier : public NetworkChangeNotifier {
30 public: 30 public:
31 virtual bool IsCurrentlyOffline() const { return false; } 31 virtual ConnectionState GetCurrentConnectionState() const { return ETHERNET; }
32 }; 32 };
33 33
34 } // namespace 34 } // namespace
35 35
36 NetworkChangeNotifier::~NetworkChangeNotifier() { 36 NetworkChangeNotifier::~NetworkChangeNotifier() {
37 DCHECK_EQ(this, g_network_change_notifier); 37 DCHECK_EQ(this, g_network_change_notifier);
38 g_network_change_notifier = NULL; 38 g_network_change_notifier = NULL;
39 } 39 }
40 40
41 // static 41 // static
(...skipping 21 matching lines...) Expand all
63 return NetworkChangeNotifierLinux::Create(); 63 return NetworkChangeNotifierLinux::Create();
64 #elif defined(OS_MACOSX) 64 #elif defined(OS_MACOSX)
65 return new NetworkChangeNotifierMac(); 65 return new NetworkChangeNotifierMac();
66 #else 66 #else
67 NOTIMPLEMENTED(); 67 NOTIMPLEMENTED();
68 return NULL; 68 return NULL;
69 #endif 69 #endif
70 } 70 }
71 71
72 // static 72 // static
73 bool NetworkChangeNotifier::IsOffline() { 73 NetworkChangeNotifier::ConnectionState
74 return g_network_change_notifier && 74 NetworkChangeNotifier::GetConnectionState() {
75 g_network_change_notifier->IsCurrentlyOffline(); 75 return (g_network_change_notifier) ?
76 g_network_change_notifier->GetCurrentConnectionState() :
77 ETHERNET;
joth 2012/01/10 10:48:35 UNKNOWN, I would have thought? Also, this probabl
droger_google 2012/01/10 11:48:26 I used ETHERNET as a default value, but we could t
76 } 78 }
77 79
78 // static 80 // static
79 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() { 81 NetworkChangeNotifier* NetworkChangeNotifier::CreateMock() {
80 return new MockNetworkChangeNotifier(); 82 return new MockNetworkChangeNotifier();
81 } 83 }
82 84
83 void NetworkChangeNotifier::AddIPAddressObserver(IPAddressObserver* observer) { 85 void NetworkChangeNotifier::AddIPAddressObserver(IPAddressObserver* observer) {
84 if (g_network_change_notifier) 86 if (g_network_change_notifier)
85 g_network_change_notifier->ip_address_observer_list_->AddObserver(observer); 87 g_network_change_notifier->ip_address_observer_list_->AddObserver(observer);
86 } 88 }
87 89
88 void NetworkChangeNotifier::AddOnlineStateObserver( 90 void NetworkChangeNotifier::AddConnectionStateObserver(
89 OnlineStateObserver* observer) { 91 ConnectionStateObserver* observer) {
90 if (g_network_change_notifier) { 92 if (g_network_change_notifier) {
91 g_network_change_notifier->online_state_observer_list_->AddObserver( 93 g_network_change_notifier->connection_state_observer_list_->AddObserver(
92 observer); 94 observer);
93 } 95 }
94 } 96 }
95 97
96 void NetworkChangeNotifier::AddDNSObserver(DNSObserver* observer) { 98 void NetworkChangeNotifier::AddDNSObserver(DNSObserver* observer) {
97 if (g_network_change_notifier) { 99 if (g_network_change_notifier) {
98 g_network_change_notifier->resolver_state_observer_list_->AddObserver( 100 g_network_change_notifier->resolver_state_observer_list_->AddObserver(
99 observer); 101 observer);
100 } 102 }
101 } 103 }
102 104
103 void NetworkChangeNotifier::RemoveIPAddressObserver( 105 void NetworkChangeNotifier::RemoveIPAddressObserver(
104 IPAddressObserver* observer) { 106 IPAddressObserver* observer) {
105 if (g_network_change_notifier) { 107 if (g_network_change_notifier) {
106 g_network_change_notifier->ip_address_observer_list_->RemoveObserver( 108 g_network_change_notifier->ip_address_observer_list_->RemoveObserver(
107 observer); 109 observer);
108 } 110 }
109 } 111 }
110 112
111 void NetworkChangeNotifier::RemoveOnlineStateObserver( 113 void NetworkChangeNotifier::RemoveConnectionStateObserver(
112 OnlineStateObserver* observer) { 114 ConnectionStateObserver* observer) {
113 if (g_network_change_notifier) { 115 if (g_network_change_notifier) {
114 g_network_change_notifier->online_state_observer_list_->RemoveObserver( 116 g_network_change_notifier->connection_state_observer_list_->RemoveObserver(
115 observer); 117 observer);
116 } 118 }
117 } 119 }
118 120
119 void NetworkChangeNotifier::RemoveDNSObserver(DNSObserver* observer) { 121 void NetworkChangeNotifier::RemoveDNSObserver(DNSObserver* observer) {
120 if (g_network_change_notifier) { 122 if (g_network_change_notifier) {
121 g_network_change_notifier->resolver_state_observer_list_->RemoveObserver( 123 g_network_change_notifier->resolver_state_observer_list_->RemoveObserver(
122 observer); 124 observer);
123 } 125 }
124 } 126 }
125 127
126 NetworkChangeNotifier::NetworkChangeNotifier() 128 NetworkChangeNotifier::NetworkChangeNotifier()
127 : ip_address_observer_list_( 129 : ip_address_observer_list_(
128 new ObserverListThreadSafe<IPAddressObserver>( 130 new ObserverListThreadSafe<IPAddressObserver>(
129 ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)), 131 ObserverListBase<IPAddressObserver>::NOTIFY_EXISTING_ONLY)),
130 online_state_observer_list_( 132 connection_state_observer_list_(
131 new ObserverListThreadSafe<OnlineStateObserver>( 133 new ObserverListThreadSafe<ConnectionStateObserver>(
132 ObserverListBase<OnlineStateObserver>::NOTIFY_EXISTING_ONLY)), 134 ObserverListBase<ConnectionStateObserver>::NOTIFY_EXISTING_ONLY)),
133 resolver_state_observer_list_( 135 resolver_state_observer_list_(
134 new ObserverListThreadSafe<DNSObserver>( 136 new ObserverListThreadSafe<DNSObserver>(
135 ObserverListBase<DNSObserver>::NOTIFY_EXISTING_ONLY)) { 137 ObserverListBase<DNSObserver>::NOTIFY_EXISTING_ONLY)) {
136 DCHECK(!g_network_change_notifier); 138 DCHECK(!g_network_change_notifier);
137 g_network_change_notifier = this; 139 g_network_change_notifier = this;
138 } 140 }
139 141
140 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() { 142 void NetworkChangeNotifier::NotifyObserversOfIPAddressChange() {
141 if (g_network_change_notifier) { 143 if (g_network_change_notifier) {
142 g_network_change_notifier->ip_address_observer_list_->Notify( 144 g_network_change_notifier->ip_address_observer_list_->Notify(
143 &IPAddressObserver::OnIPAddressChanged); 145 &IPAddressObserver::OnIPAddressChanged);
144 } 146 }
145 } 147 }
146 148
147 void NetworkChangeNotifier::NotifyObserversOfDNSChange() { 149 void NetworkChangeNotifier::NotifyObserversOfDNSChange() {
148 if (g_network_change_notifier) { 150 if (g_network_change_notifier) {
149 g_network_change_notifier->resolver_state_observer_list_->Notify( 151 g_network_change_notifier->resolver_state_observer_list_->Notify(
150 &DNSObserver::OnDNSChanged); 152 &DNSObserver::OnDNSChanged);
151 } 153 }
152 } 154 }
153 155
154 void NetworkChangeNotifier::NotifyObserversOfOnlineStateChange() { 156 void NetworkChangeNotifier::NotifyObserversOfConnectionStateChange() {
155 if (g_network_change_notifier) { 157 if (g_network_change_notifier) {
156 g_network_change_notifier->online_state_observer_list_->Notify( 158 g_network_change_notifier->connection_state_observer_list_->Notify(
157 &OnlineStateObserver::OnOnlineStateChanged, !IsOffline()); 159 &ConnectionStateObserver::OnConnectionStateChanged,
160 GetConnectionState());
158 } 161 }
159 } 162 }
160 163
161 NetworkChangeNotifier::DisableForTest::DisableForTest() 164 NetworkChangeNotifier::DisableForTest::DisableForTest()
162 : network_change_notifier_(g_network_change_notifier) { 165 : network_change_notifier_(g_network_change_notifier) {
163 DCHECK(g_network_change_notifier); 166 DCHECK(g_network_change_notifier);
164 g_network_change_notifier = NULL; 167 g_network_change_notifier = NULL;
165 } 168 }
166 169
167 NetworkChangeNotifier::DisableForTest::~DisableForTest() { 170 NetworkChangeNotifier::DisableForTest::~DisableForTest() {
168 DCHECK(!g_network_change_notifier); 171 DCHECK(!g_network_change_notifier);
169 g_network_change_notifier = network_change_notifier_; 172 g_network_change_notifier = network_change_notifier_;
170 } 173 }
171 174
172 } // namespace net 175 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698