Merge "Ensure wifi reconnects before waiting for metered" am: 14f0d14c14 am: 577f3e158d
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1757311 Change-Id: I22f911df5cb9ba95fdfe672ddd07502fa3e19f1e
This commit is contained in:
@@ -1102,10 +1102,10 @@ public class ConnectivityManagerTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitForActiveNetworkMetered(final int targetTransportType,
|
private Network waitForActiveNetworkMetered(final int targetTransportType,
|
||||||
final boolean requestedMeteredness, final boolean useSystemDefault)
|
final boolean requestedMeteredness, final boolean useSystemDefault)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CompletableFuture<Network> networkFuture = new CompletableFuture<>();
|
||||||
final NetworkCallback networkCallback = new NetworkCallback() {
|
final NetworkCallback networkCallback = new NetworkCallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
|
public void onCapabilitiesChanged(Network network, NetworkCapabilities nc) {
|
||||||
@@ -1113,7 +1113,7 @@ public class ConnectivityManagerTest {
|
|||||||
|
|
||||||
final boolean metered = !nc.hasCapability(NET_CAPABILITY_NOT_METERED);
|
final boolean metered = !nc.hasCapability(NET_CAPABILITY_NOT_METERED);
|
||||||
if (metered == requestedMeteredness) {
|
if (metered == requestedMeteredness) {
|
||||||
latch.countDown();
|
networkFuture.complete(network);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1133,18 +1133,20 @@ public class ConnectivityManagerTest {
|
|||||||
|
|
||||||
// Changing meteredness on wifi involves reconnecting, which can take several seconds
|
// Changing meteredness on wifi involves reconnecting, which can take several seconds
|
||||||
// (involves re-associating, DHCP...).
|
// (involves re-associating, DHCP...).
|
||||||
if (!latch.await(NETWORK_CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
|
return networkFuture.get(NETWORK_CALLBACK_TIMEOUT_MS, TimeUnit.MILLISECONDS);
|
||||||
fail("Timed out waiting for active network metered status to change to "
|
} catch (TimeoutException e) {
|
||||||
+ requestedMeteredness + " ; network = " + mCm.getActiveNetwork());
|
throw new AssertionError("Timed out waiting for active network metered status to "
|
||||||
}
|
+ "change to " + requestedMeteredness + " ; network = "
|
||||||
|
+ mCm.getActiveNetwork(), e);
|
||||||
} finally {
|
} finally {
|
||||||
mCm.unregisterNetworkCallback(networkCallback);
|
mCm.unregisterNetworkCallback(networkCallback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setWifiMeteredStatusAndWait(String ssid, boolean isMetered) throws Exception {
|
private Network setWifiMeteredStatusAndWait(String ssid, boolean isMetered) throws Exception {
|
||||||
setWifiMeteredStatus(ssid, Boolean.toString(isMetered) /* metered */);
|
setWifiMeteredStatus(ssid, Boolean.toString(isMetered) /* metered */);
|
||||||
waitForActiveNetworkMetered(TRANSPORT_WIFI,
|
mCtsNetUtils.ensureWifiConnected();
|
||||||
|
return waitForActiveNetworkMetered(TRANSPORT_WIFI,
|
||||||
isMetered /* requestedMeteredness */,
|
isMetered /* requestedMeteredness */,
|
||||||
true /* useSystemDefault */);
|
true /* useSystemDefault */);
|
||||||
}
|
}
|
||||||
@@ -1210,8 +1212,7 @@ public class ConnectivityManagerTest {
|
|||||||
Integer.toString(newMeteredPreference));
|
Integer.toString(newMeteredPreference));
|
||||||
// Wifi meterness changes from unmetered to metered will disconnect and reconnect since
|
// Wifi meterness changes from unmetered to metered will disconnect and reconnect since
|
||||||
// R.
|
// R.
|
||||||
setWifiMeteredStatusAndWait(ssid, true);
|
final Network network = setWifiMeteredStatusAndWait(ssid, true);
|
||||||
final Network network = mCtsNetUtils.ensureWifiConnected();
|
|
||||||
assertEquals(ssid, unquoteSSID(mWifiManager.getConnectionInfo().getSSID()));
|
assertEquals(ssid, unquoteSSID(mWifiManager.getConnectionInfo().getSSID()));
|
||||||
assertEquals(mCm.getNetworkCapabilities(network).hasCapability(
|
assertEquals(mCm.getNetworkCapabilities(network).hasCapability(
|
||||||
NET_CAPABILITY_NOT_METERED), false);
|
NET_CAPABILITY_NOT_METERED), false);
|
||||||
|
|||||||
Reference in New Issue
Block a user