Merge "Disable tryCell when UpstreamMonitor stop" am: 011552cc54 am: bed1ae7b4c am: 1217274ac0
Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/1715791 Change-Id: Ia7ba42a7c5c5155c87f6872814391608227dc830
This commit is contained in:
@@ -191,7 +191,7 @@ public class UpstreamNetworkMonitor {
|
||||
* check even tethering is not active yet.
|
||||
*/
|
||||
public void stop() {
|
||||
releaseMobileNetworkRequest();
|
||||
setTryCell(false);
|
||||
|
||||
releaseCallback(mListenAllCallback);
|
||||
mListenAllCallback = null;
|
||||
|
||||
@@ -401,11 +401,6 @@ public class TetheringTest {
|
||||
StateMachine mUpstreamNetworkMonitorSM;
|
||||
ArrayList<IpServer> mIpv6CoordinatorNotifyList;
|
||||
|
||||
public void reset() {
|
||||
mUpstreamNetworkMonitorSM = null;
|
||||
mIpv6CoordinatorNotifyList = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BpfCoordinator getBpfCoordinator(
|
||||
BpfCoordinator.Dependencies deps) {
|
||||
@@ -688,7 +683,6 @@ public class TetheringTest {
|
||||
}
|
||||
|
||||
private Tethering makeTethering() {
|
||||
mTetheringDependencies.reset();
|
||||
return new Tethering(mTetheringDependencies);
|
||||
}
|
||||
|
||||
@@ -1087,6 +1081,11 @@ public class TetheringTest {
|
||||
verify(mUpstreamNetworkMonitor, times(1)).setCurrentUpstream(upstreamState.network);
|
||||
}
|
||||
|
||||
private void verifyDisableTryCellWhenTetheringStop(InOrder inOrder) {
|
||||
runStopUSBTethering();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
}
|
||||
|
||||
private void upstreamSelectionTestCommon(final boolean automatic, InOrder inOrder,
|
||||
TestNetworkAgent mobile, TestNetworkAgent wifi) throws Exception {
|
||||
// Enable automatic upstream selection.
|
||||
@@ -1110,6 +1109,7 @@ public class TetheringTest {
|
||||
wifi.fakeConnect();
|
||||
mCm.makeDefaultNetwork(wifi, BROADCAST_FIRST);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(wifi.networkId);
|
||||
}
|
||||
|
||||
@@ -1132,6 +1132,7 @@ public class TetheringTest {
|
||||
|
||||
mCm.makeDefaultNetwork(wifi, BROADCAST_FIRST, doDispatchAll);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(wifi.networkId);
|
||||
|
||||
mCm.makeDefaultNetwork(mobile, CALLBACKS_FIRST);
|
||||
@@ -1140,6 +1141,7 @@ public class TetheringTest {
|
||||
|
||||
mCm.makeDefaultNetwork(wifi, CALLBACKS_FIRST);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(wifi.networkId);
|
||||
|
||||
mCm.makeDefaultNetwork(mobile, CALLBACKS_FIRST, doDispatchAll);
|
||||
@@ -1158,6 +1160,7 @@ public class TetheringTest {
|
||||
mLooper.dispatchAll();
|
||||
mobile.fakeDisconnect();
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(true);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(null);
|
||||
|
||||
mobile = new TestNetworkAgent(mCm, buildMobile464xlatUpstreamState());
|
||||
@@ -1175,6 +1178,7 @@ public class TetheringTest {
|
||||
mCm.makeDefaultNetwork(null, CALLBACKS_FIRST, doDispatchAll);
|
||||
mobile.fakeDisconnect();
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(true);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(null);
|
||||
|
||||
mobile = new TestNetworkAgent(mCm, buildMobileDualStackUpstreamState());
|
||||
@@ -1190,6 +1194,8 @@ public class TetheringTest {
|
||||
mobile.fakeDisconnect();
|
||||
mobile.sendLinkProperties();
|
||||
mLooper.dispatchAll();
|
||||
|
||||
verifyDisableTryCellWhenTetheringStop(inOrder);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1212,6 +1218,10 @@ public class TetheringTest {
|
||||
mLooper.dispatchAll();
|
||||
mCm.makeDefaultNetwork(wifi, CALLBACKS_FIRST, null);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(wifi.networkId);
|
||||
|
||||
verifyDisableTryCellWhenTetheringStop(inOrder);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1227,6 +1237,7 @@ public class TetheringTest {
|
||||
// automatic mode would request dun again and choose it as upstream.
|
||||
mCm.makeDefaultNetwork(mobile, CALLBACKS_FIRST);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(true);
|
||||
ArgumentCaptor<NetworkCallback> captor = ArgumentCaptor.forClass(NetworkCallback.class);
|
||||
inOrder.verify(mCm).requestNetwork(any(), eq(0), eq(TYPE_MOBILE_DUN), any(), any());
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(null);
|
||||
@@ -1238,11 +1249,14 @@ public class TetheringTest {
|
||||
// Lose and regain upstream again.
|
||||
dun.fakeDisconnect(CALLBACKS_FIRST, doDispatchAll);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(true);
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(null);
|
||||
inOrder.verify(mCm, never()).unregisterNetworkCallback(any(NetworkCallback.class));
|
||||
dun.fakeConnect(CALLBACKS_FIRST, doDispatchAll);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setCurrentUpstream(dun.networkId);
|
||||
|
||||
verifyDisableTryCellWhenTetheringStop(inOrder);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -1258,6 +1272,7 @@ public class TetheringTest {
|
||||
// list).
|
||||
mCm.makeDefaultNetwork(mobile, CALLBACKS_FIRST);
|
||||
mLooper.dispatchAll();
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mUpstreamNetworkMonitor, never()).setCurrentUpstream(any());
|
||||
// BUG: when wifi disconnect, the dun request would not be filed again because wifi is
|
||||
// no longer be default network which do not have CONNECTIVIY_ACTION broadcast.
|
||||
@@ -1279,8 +1294,11 @@ public class TetheringTest {
|
||||
mLooper.dispatchAll();
|
||||
// BUG: dun has higher priority than wifi but tethering don't file dun request because
|
||||
// current upstream is wifi.
|
||||
inOrder.verify(mUpstreamNetworkMonitor).setTryCell(false);
|
||||
inOrder.verify(mCm, never()).requestNetwork(any(), eq(0), eq(TYPE_MOBILE_DUN), any(),
|
||||
any());
|
||||
|
||||
verifyDisableTryCellWhenTetheringStop(inOrder);
|
||||
}
|
||||
|
||||
private void chooseDunUpstreamTestCommon(final boolean automatic, InOrder inOrder,
|
||||
|
||||
Reference in New Issue
Block a user