OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 package org.chromium.net; | 5 package org.chromium.net; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.content.Intent; | 8 import android.content.Intent; |
9 import android.net.ConnectivityManager; | 9 import android.net.ConnectivityManager; |
| 10 import android.net.wifi.WifiManager; |
10 import android.telephony.TelephonyManager; | 11 import android.telephony.TelephonyManager; |
11 import android.test.InstrumentationTestCase; | 12 import android.test.InstrumentationTestCase; |
12 import android.test.UiThreadTest; | 13 import android.test.UiThreadTest; |
13 import android.test.suitebuilder.annotation.MediumTest; | 14 import android.test.suitebuilder.annotation.MediumTest; |
14 | 15 |
15 import org.chromium.base.ApplicationState; | 16 import org.chromium.base.ApplicationState; |
16 import org.chromium.base.library_loader.LibraryLoader; | 17 import org.chromium.base.library_loader.LibraryLoader; |
17 import org.chromium.base.test.util.Feature; | 18 import org.chromium.base.test.util.Feature; |
18 import org.chromium.net.NetworkChangeNotifierAutoDetect.NetworkState; | 19 import org.chromium.net.NetworkChangeNotifierAutoDetect.NetworkState; |
19 | 20 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 mConnectivityDelegate = | 119 mConnectivityDelegate = |
119 new MockConnectivityManagerDelegate(); | 120 new MockConnectivityManagerDelegate(); |
120 mConnectivityDelegate.setActiveNetworkExists(true); | 121 mConnectivityDelegate.setActiveNetworkExists(true); |
121 mReceiver.setConnectivityManagerDelegateForTests(mConnectivityDelegate); | 122 mReceiver.setConnectivityManagerDelegateForTests(mConnectivityDelegate); |
122 | 123 |
123 mWifiDelegate = new MockWifiManagerDelegate(); | 124 mWifiDelegate = new MockWifiManagerDelegate(); |
124 mReceiver.setWifiManagerDelegateForTests(mWifiDelegate); | 125 mReceiver.setWifiManagerDelegateForTests(mWifiDelegate); |
125 mWifiDelegate.setWifiSSID("foo"); | 126 mWifiDelegate.setWifiSSID("foo"); |
126 } | 127 } |
127 | 128 |
| 129 private double getCurrentMaxBandwidthInMbps() { |
| 130 final NetworkChangeNotifierAutoDetect.NetworkState networkState = |
| 131 mReceiver.getCurrentNetworkState(); |
| 132 return mReceiver.getCurrentMaxBandwidthInMbps(networkState); |
| 133 } |
| 134 |
| 135 private int getCurrentConnectionType() { |
| 136 final NetworkChangeNotifierAutoDetect.NetworkState networkState = |
| 137 mReceiver.getCurrentNetworkState(); |
| 138 return mReceiver.getCurrentConnectionType(networkState); |
| 139 } |
| 140 |
| 141 /** |
| 142 * Tests that changing the RSSI_CHANGED_ACTION intent updates MaxBandwidth. |
| 143 */ |
| 144 @UiThreadTest |
| 145 @MediumTest |
| 146 @Feature({"Android-AppBase"}) |
| 147 public void testNetworkChangeNotifierRSSIEventUpdatesMaxBandwidthForWiFi() |
| 148 throws InterruptedException { |
| 149 NetworkChangeNotifier notifier = NetworkChangeNotifier.getInstance(); |
| 150 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIFI); |
| 151 mWifiDelegate.setLinkSpeedInMbps(42); |
| 152 Intent intent = new Intent(WifiManager.RSSI_CHANGED_ACTION); |
| 153 mReceiver.onReceive(getInstrumentation().getTargetContext(), intent); |
| 154 |
| 155 assertEquals(42.0, notifier.getCurrentMaxBandwidthInMbps()); |
| 156 |
| 157 // Changing the link speed has no effect until the intent fires. |
| 158 mWifiDelegate.setLinkSpeedInMbps(80); |
| 159 assertEquals(42.0, notifier.getCurrentMaxBandwidthInMbps()); |
| 160 |
| 161 // Fire the intent. |
| 162 mReceiver.onReceive(getInstrumentation().getTargetContext(), intent); |
| 163 assertEquals(80.0, notifier.getCurrentMaxBandwidthInMbps()); |
| 164 |
| 165 // Firing a network type change intent also causes max bandwidth to upda
te. |
| 166 mWifiDelegate.setLinkSpeedInMbps(20); |
| 167 intent = new Intent(ConnectivityManager.CONNECTIVITY_ACTION); |
| 168 mReceiver.onReceive(getInstrumentation().getTargetContext(), intent); |
| 169 assertEquals(20.0, notifier.getCurrentMaxBandwidthInMbps()); |
| 170 } |
| 171 |
128 /** | 172 /** |
129 * Tests that changing the network type changes the maxBandwidth. | 173 * Tests that changing the network type changes the maxBandwidth. |
130 */ | 174 */ |
131 @UiThreadTest | 175 @UiThreadTest |
132 @MediumTest | 176 @MediumTest |
133 @Feature({"Android-AppBase"}) | 177 @Feature({"Android-AppBase"}) |
134 public void testNetworkChangeNotifierMaxBandwidthEthernet() throws Interrupt
edException { | 178 public void testNetworkChangeNotifierMaxBandwidthEthernet() throws Interrupt
edException { |
135 // Show that for Ethernet the link speed is unknown (+Infinity). | 179 // Show that for Ethernet the link speed is unknown (+Infinity). |
136 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_ETHERNET); | 180 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_ETHERNET); |
137 assertEquals(ConnectionType.CONNECTION_ETHERNET, | 181 assertEquals(ConnectionType.CONNECTION_ETHERNET, getCurrentConnectionTyp
e()); |
138 mReceiver.getCurrentConnectionType()); | 182 assertEquals(Double.POSITIVE_INFINITY, getCurrentMaxBandwidthInMbps()); |
139 assertEquals(Double.POSITIVE_INFINITY, mReceiver.getCurrentMaxBandwidthI
nMbps()); | |
140 } | 183 } |
141 | 184 |
142 @UiThreadTest | 185 @UiThreadTest |
143 @MediumTest | 186 @MediumTest |
144 @Feature({"Android-AppBase"}) | 187 @Feature({"Android-AppBase"}) |
145 public void testNetworkChangeNotifierMaxBandwidthWifi() throws InterruptedEx
ception { | 188 public void testNetworkChangeNotifierMaxBandwidthWifi() throws InterruptedEx
ception { |
146 // Test that for wifi types the link speed is read from the WifiManager. | 189 // Test that for wifi types the link speed is read from the WifiManager. |
147 mWifiDelegate.setLinkSpeedInMbps(42); | 190 mWifiDelegate.setLinkSpeedInMbps(42); |
148 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIFI); | 191 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIFI); |
149 assertEquals(ConnectionType.CONNECTION_WIFI, mReceiver.getCurrentConnect
ionType()); | 192 assertEquals(ConnectionType.CONNECTION_WIFI, getCurrentConnectionType())
; |
150 assertEquals(42.0, mReceiver.getCurrentMaxBandwidthInMbps()); | 193 assertEquals(42.0, getCurrentMaxBandwidthInMbps()); |
151 } | 194 } |
152 | 195 |
153 @UiThreadTest | 196 @UiThreadTest |
154 @MediumTest | 197 @MediumTest |
155 @Feature({"Android-AppBase"}) | 198 @Feature({"Android-AppBase"}) |
156 public void testNetworkChangeNotifierMaxBandwidthWiMax() throws InterruptedE
xception { | 199 public void testNetworkChangeNotifierMaxBandwidthWiMax() throws InterruptedE
xception { |
157 // Show that for WiMax the link speed is unknown (+Infinity), although t
he type is 4g. | 200 // Show that for WiMax the link speed is unknown (+Infinity), although t
he type is 4g. |
158 // TODO(jkarlin): Add support for CONNECTION_WIMAX as specified in | 201 // TODO(jkarlin): Add support for CONNECTION_WIMAX as specified in |
159 // http://w3c.github.io/netinfo/. | 202 // http://w3c.github.io/netinfo/. |
160 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIMAX); | 203 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIMAX); |
161 assertEquals(ConnectionType.CONNECTION_4G, | 204 assertEquals(ConnectionType.CONNECTION_4G, getCurrentConnectionType()); |
162 mReceiver.getCurrentConnectionType()); | 205 assertEquals(Double.POSITIVE_INFINITY, getCurrentMaxBandwidthInMbps()); |
163 assertEquals(Double.POSITIVE_INFINITY, mReceiver.getCurrentMaxBandwidthI
nMbps()); | |
164 } | 206 } |
165 | 207 |
166 @UiThreadTest | 208 @UiThreadTest |
167 @MediumTest | 209 @MediumTest |
168 @Feature({"Android-AppBase"}) | 210 @Feature({"Android-AppBase"}) |
169 public void testNetworkChangeNotifierMaxBandwidthBluetooth() throws Interrup
tedException { | 211 public void testNetworkChangeNotifierMaxBandwidthBluetooth() throws Interrup
tedException { |
170 // Show that for bluetooth the link speed is unknown (+Infinity). | 212 // Show that for bluetooth the link speed is unknown (+Infinity). |
171 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_BLUETOOTH)
; | 213 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_BLUETOOTH)
; |
172 assertEquals(ConnectionType.CONNECTION_BLUETOOTH, | 214 assertEquals(ConnectionType.CONNECTION_BLUETOOTH, getCurrentConnectionTy
pe()); |
173 mReceiver.getCurrentConnectionType()); | 215 assertEquals(Double.POSITIVE_INFINITY, getCurrentMaxBandwidthInMbps()); |
174 assertEquals(Double.POSITIVE_INFINITY, mReceiver.getCurrentMaxBandwidthI
nMbps()); | |
175 } | 216 } |
176 | 217 |
177 @UiThreadTest | 218 @UiThreadTest |
178 @MediumTest | 219 @MediumTest |
179 @Feature({"Android-AppBase"}) | 220 @Feature({"Android-AppBase"}) |
180 public void testNetworkChangeNotifierMaxBandwidthMobile() throws Interrupted
Exception { | 221 public void testNetworkChangeNotifierMaxBandwidthMobile() throws Interrupted
Exception { |
181 // Test that for mobile types the subtype is used to determine the maxBa
ndwidth. | 222 // Test that for mobile types the subtype is used to determine the maxBa
ndwidth. |
182 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_MOBILE); | 223 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_MOBILE); |
183 mConnectivityDelegate.setNetworkSubtype(TelephonyManager.NETWORK_TYPE_LT
E); | 224 mConnectivityDelegate.setNetworkSubtype(TelephonyManager.NETWORK_TYPE_LT
E); |
184 assertEquals(ConnectionType.CONNECTION_4G, mReceiver.getCurrentConnectio
nType()); | 225 assertEquals(ConnectionType.CONNECTION_4G, getCurrentConnectionType()); |
185 assertEquals(100.0, mReceiver.getCurrentMaxBandwidthInMbps()); | 226 assertEquals(100.0, getCurrentMaxBandwidthInMbps()); |
186 } | 227 } |
187 | 228 |
188 /** | 229 /** |
189 * Tests that when Chrome gets an intent indicating a change in network conn
ectivity, it sends a | 230 * Tests that when Chrome gets an intent indicating a change in network conn
ectivity, it sends a |
190 * notification to Java observers. | 231 * notification to Java observers. |
191 */ | 232 */ |
192 @UiThreadTest | 233 @UiThreadTest |
193 @MediumTest | 234 @MediumTest |
194 @Feature({"Android-AppBase"}) | 235 @Feature({"Android-AppBase"}) |
195 public void testNetworkChangeNotifierJavaObservers() throws InterruptedExcep
tion { | 236 public void testNetworkChangeNotifierJavaObservers() throws InterruptedExcep
tion { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 // Change the state. | 274 // Change the state. |
234 mConnectivityDelegate.setActiveNetworkExists(true); | 275 mConnectivityDelegate.setActiveNetworkExists(true); |
235 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIFI); | 276 mConnectivityDelegate.setNetworkType(ConnectivityManager.TYPE_WIFI); |
236 // The NetworkChangeNotifierAutoDetect doesn't receive any notification
while we are in the | 277 // The NetworkChangeNotifierAutoDetect doesn't receive any notification
while we are in the |
237 // background, but when we get back to the foreground the state changed
should be detected | 278 // background, but when we get back to the foreground the state changed
should be detected |
238 // and a notification sent. | 279 // and a notification sent. |
239 mReceiver.onApplicationStateChange(ApplicationState.HAS_RUNNING_ACTIVITI
ES); | 280 mReceiver.onApplicationStateChange(ApplicationState.HAS_RUNNING_ACTIVITI
ES); |
240 assertTrue(observer.hasReceivedNotification()); | 281 assertTrue(observer.hasReceivedNotification()); |
241 } | 282 } |
242 } | 283 } |
OLD | NEW |