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

Side by Side Diff: net/android/network_change_notifier_android_unittest.cc

Issue 1047103002: Avoid initial NetworkChangeNotifier OnDNSChanged() signal on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: revert an accidental test enabling Created 5 years, 8 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 // See network_change_notifier_android.h for design explanations. 5 // See network_change_notifier_android.h for design explanations.
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
11 #include "base/message_loop/message_loop.h" 11 #include "base/message_loop/message_loop.h"
12 #include "net/android/network_change_notifier_android.h" 12 #include "net/android/network_change_notifier_android.h"
13 #include "net/android/network_change_notifier_delegate_android.h" 13 #include "net/android/network_change_notifier_delegate_android.h"
14 #include "net/base/network_change_notifier.h" 14 #include "net/base/network_change_notifier.h"
15 #include "net/dns/dns_config_service.h"
16 #include "net/dns/dns_protocol.h"
15 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
16 18
17 namespace net { 19 namespace net {
18 20
19 namespace { 21 namespace {
20 22
21 class NetworkChangeNotifierDelegateAndroidObserver 23 class NetworkChangeNotifierDelegateAndroidObserver
22 : public NetworkChangeNotifierDelegateAndroid::Observer { 24 : public NetworkChangeNotifierDelegateAndroid::Observer {
23 public: 25 public:
24 NetworkChangeNotifierDelegateAndroidObserver() 26 NetworkChangeNotifierDelegateAndroidObserver()
(...skipping 28 matching lines...) Expand all
53 } 55 }
54 56
55 int notifications_count() const { 57 int notifications_count() const {
56 return notifications_count_; 58 return notifications_count_;
57 } 59 }
58 60
59 private: 61 private:
60 int notifications_count_; 62 int notifications_count_;
61 }; 63 };
62 64
65 class DNSChangeObserver : public NetworkChangeNotifier::DNSObserver {
66 public:
67 DNSChangeObserver()
68 : change_notifications_count_(0), initial_notifications_count_(0) {}
69
70 // NetworkChangeNotifier::DNSObserver:
71 void OnDNSChanged() override { change_notifications_count_++; }
72
73 void OnInitialDNSConfigRead() override {
74 initial_notifications_count_++;
75 base::MessageLoop::current()->Quit();
76 }
77
78 int change_notifications_count() const { return change_notifications_count_; }
79
80 int initial_notifications_count() const {
81 return initial_notifications_count_;
82 }
83
84 private:
85 int change_notifications_count_;
86 int initial_notifications_count_;
87 };
88
63 } // namespace 89 } // namespace
64 90
65 class BaseNetworkChangeNotifierAndroidTest : public testing::Test { 91 class BaseNetworkChangeNotifierAndroidTest : public testing::Test {
66 protected: 92 protected:
67 typedef NetworkChangeNotifier::ConnectionType ConnectionType; 93 typedef NetworkChangeNotifier::ConnectionType ConnectionType;
68 94
69 ~BaseNetworkChangeNotifierAndroidTest() override {} 95 ~BaseNetworkChangeNotifierAndroidTest() override {}
70 96
71 void RunTest( 97 void RunTest(
72 const base::Callback<int(void)>& notifications_count_getter, 98 const base::Callback<int(void)>& notifications_count_getter,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 base::Unretained(&delegate_))); 194 base::Unretained(&delegate_)));
169 // Check that *all* the observers are notified. Both observers should have the 195 // Check that *all* the observers are notified. Both observers should have the
170 // same state. 196 // same state.
171 EXPECT_EQ(delegate_observer_.type_notifications_count(), 197 EXPECT_EQ(delegate_observer_.type_notifications_count(),
172 other_delegate_observer_.type_notifications_count()); 198 other_delegate_observer_.type_notifications_count());
173 } 199 }
174 200
175 class NetworkChangeNotifierAndroidTest 201 class NetworkChangeNotifierAndroidTest
176 : public BaseNetworkChangeNotifierAndroidTest { 202 : public BaseNetworkChangeNotifierAndroidTest {
177 protected: 203 protected:
178 NetworkChangeNotifierAndroidTest() : notifier_(&delegate_) { 204 void SetUp() override {
205 IPAddressNumber dns_number;
206 ASSERT_TRUE(ParseIPLiteralToNumber("8.8.8.8", &dns_number));
207 dns_config_.nameservers.push_back(
208 IPEndPoint(dns_number, dns_protocol::kDefaultPort));
209 notifier_.reset(new NetworkChangeNotifierAndroid(&delegate_, &dns_config_));
179 NetworkChangeNotifier::AddConnectionTypeObserver( 210 NetworkChangeNotifier::AddConnectionTypeObserver(
180 &connection_type_observer_); 211 &connection_type_observer_);
181 NetworkChangeNotifier::AddConnectionTypeObserver( 212 NetworkChangeNotifier::AddConnectionTypeObserver(
182 &other_connection_type_observer_); 213 &other_connection_type_observer_);
183 } 214 }
184 215
185 NetworkChangeNotifierObserver connection_type_observer_; 216 NetworkChangeNotifierObserver connection_type_observer_;
186 NetworkChangeNotifierObserver other_connection_type_observer_; 217 NetworkChangeNotifierObserver other_connection_type_observer_;
187 NetworkChangeNotifier::DisableForTest disable_for_test_; 218 NetworkChangeNotifier::DisableForTest disable_for_test_;
188 NetworkChangeNotifierAndroid notifier_; 219 DnsConfig dns_config_;
220 scoped_ptr<NetworkChangeNotifierAndroid> notifier_;
189 }; 221 };
190 222
191 // When a NetworkChangeNotifierAndroid is observing a 223 // When a NetworkChangeNotifierAndroid is observing a
192 // NetworkChangeNotifierDelegateAndroid for network state changes, and the 224 // NetworkChangeNotifierDelegateAndroid for network state changes, and the
193 // NetworkChangeNotifierDelegateAndroid's connectivity state changes, the 225 // NetworkChangeNotifierDelegateAndroid's connectivity state changes, the
194 // NetworkChangeNotifierAndroid should reflect that state. 226 // NetworkChangeNotifierAndroid should reflect that state.
195 TEST_F(NetworkChangeNotifierAndroidTest, 227 TEST_F(NetworkChangeNotifierAndroidTest,
196 NotificationsSentToNetworkChangeNotifierAndroid) { 228 NotificationsSentToNetworkChangeNotifierAndroid) {
197 RunTest( 229 RunTest(base::Bind(&NetworkChangeNotifierObserver::notifications_count,
198 base::Bind( 230 base::Unretained(&connection_type_observer_)),
199 &NetworkChangeNotifierObserver::notifications_count, 231 base::Bind(&NetworkChangeNotifierAndroid::GetCurrentConnectionType,
200 base::Unretained(&connection_type_observer_)), 232 base::Unretained(notifier_.get())));
201 base::Bind(
202 &NetworkChangeNotifierAndroid::GetCurrentConnectionType,
203 base::Unretained(&notifier_)));
204 } 233 }
205 234
206 // When a NetworkChangeNotifierAndroid's connection state changes, it should 235 // When a NetworkChangeNotifierAndroid's connection state changes, it should
207 // notify all of its observers. 236 // notify all of its observers.
208 TEST_F(NetworkChangeNotifierAndroidTest, 237 TEST_F(NetworkChangeNotifierAndroidTest,
209 NotificationsSentToClientsOfNetworkChangeNotifier) { 238 NotificationsSentToClientsOfNetworkChangeNotifier) {
210 RunTest( 239 RunTest(
211 base::Bind( 240 base::Bind(
212 &NetworkChangeNotifierObserver::notifications_count, 241 &NetworkChangeNotifierObserver::notifications_count,
213 base::Unretained(&connection_type_observer_)), 242 base::Unretained(&connection_type_observer_)),
214 base::Bind(&NetworkChangeNotifier::GetConnectionType)); 243 base::Bind(&NetworkChangeNotifier::GetConnectionType));
215 // Check that *all* the observers are notified. 244 // Check that *all* the observers are notified.
216 EXPECT_EQ(connection_type_observer_.notifications_count(), 245 EXPECT_EQ(connection_type_observer_.notifications_count(),
217 other_connection_type_observer_.notifications_count()); 246 other_connection_type_observer_.notifications_count());
218 } 247 }
219 248
220 TEST_F(NetworkChangeNotifierAndroidTest, MaxBandwidth) { 249 TEST_F(NetworkChangeNotifierAndroidTest, MaxBandwidth) {
221 SetOnline(); 250 SetOnline();
222 EXPECT_EQ(NetworkChangeNotifier::CONNECTION_UNKNOWN, 251 EXPECT_EQ(NetworkChangeNotifier::CONNECTION_UNKNOWN,
223 notifier_.GetConnectionType()); 252 notifier_->GetConnectionType());
224 EXPECT_EQ(std::numeric_limits<double>::infinity(), 253 EXPECT_EQ(std::numeric_limits<double>::infinity(),
225 notifier_.GetMaxBandwidth()); 254 notifier_->GetMaxBandwidth());
226 SetOffline(); 255 SetOffline();
227 EXPECT_EQ(NetworkChangeNotifier::CONNECTION_NONE, 256 EXPECT_EQ(NetworkChangeNotifier::CONNECTION_NONE,
228 notifier_.GetConnectionType()); 257 notifier_->GetConnectionType());
229 EXPECT_EQ(0.0, notifier_.GetMaxBandwidth()); 258 EXPECT_EQ(0.0, notifier_->GetMaxBandwidth());
230 } 259 }
231 260
232 TEST_F(NetworkChangeNotifierDelegateAndroidTest, 261 TEST_F(NetworkChangeNotifierDelegateAndroidTest,
233 MaxBandwidthNotifiedOnConnectionChange) { 262 MaxBandwidthNotifiedOnConnectionChange) {
234 EXPECT_EQ(0, delegate_observer_.bandwidth_notifications_count()); 263 EXPECT_EQ(0, delegate_observer_.bandwidth_notifications_count());
235 SetOffline(); 264 SetOffline();
236 EXPECT_EQ(1, delegate_observer_.bandwidth_notifications_count()); 265 EXPECT_EQ(1, delegate_observer_.bandwidth_notifications_count());
237 SetOnline(); 266 SetOnline();
238 EXPECT_EQ(2, delegate_observer_.bandwidth_notifications_count()); 267 EXPECT_EQ(2, delegate_observer_.bandwidth_notifications_count());
239 SetOnline(); 268 SetOnline();
240 EXPECT_EQ(2, delegate_observer_.bandwidth_notifications_count()); 269 EXPECT_EQ(2, delegate_observer_.bandwidth_notifications_count());
241 } 270 }
242 271
272 TEST_F(NetworkChangeNotifierAndroidTest, InitialSignal) {
273 DNSChangeObserver dns_change_observer;
274 NetworkChangeNotifier::AddDNSObserver(&dns_change_observer);
275 base::MessageLoop::current()->Run();
276 EXPECT_EQ(1, dns_change_observer.initial_notifications_count());
277 EXPECT_EQ(0, dns_change_observer.change_notifications_count());
278 NetworkChangeNotifier::RemoveDNSObserver(&dns_change_observer);
279 }
280
243 } // namespace net 281 } // namespace net
OLDNEW
« no previous file with comments | « net/android/network_change_notifier_android.cc ('k') | net/android/network_change_notifier_factory_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698