Merge "Improve partial connectivity"
am: 8d77a4b813
Change-Id: I19c41c88d32643f82531c7afc3d4248ef9b44b53
This commit is contained in:
@@ -2561,19 +2561,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
|
||||
final boolean partialConnectivity =
|
||||
(msg.arg1 == NETWORK_TEST_RESULT_PARTIAL_CONNECTIVITY)
|
||||
// If user accepts partial connectivity network, NetworkMonitor
|
||||
// will skip https probing. It will make partial connectivity
|
||||
// network becomes valid. But user still need to know this
|
||||
// network is limited. So, it's needed to refer to
|
||||
// acceptPartialConnectivity to add
|
||||
// NET_CAPABILITY_PARTIAL_CONNECTIVITY into NetworkCapabilities
|
||||
// of this network. So that user can see "Limited connection"
|
||||
// in the settings.
|
||||
|| (nai.networkMisc.acceptPartialConnectivity
|
||||
&& nai.partialConnectivity);
|
||||
// Once a network is determined to have partial connectivity, it cannot
|
||||
// go back to full connectivity without a disconnect.
|
||||
final boolean partialConnectivityChange =
|
||||
final boolean partialConnectivityChanged =
|
||||
(partialConnectivity && !nai.partialConnectivity);
|
||||
|
||||
final boolean valid = (msg.arg1 == NETWORK_TEST_RESULT_VALID);
|
||||
@@ -2584,17 +2576,6 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
nai.captivePortalLoginNotified = true;
|
||||
showNetworkNotification(nai, NotificationType.LOGGED_IN);
|
||||
}
|
||||
// If this network has just connected and partial connectivity has just been
|
||||
// detected, tell NetworkMonitor if the user accepted partial connectivity on a
|
||||
// previous connect.
|
||||
if ((msg.arg1 == NETWORK_TEST_RESULT_PARTIAL_CONNECTIVITY)
|
||||
&& nai.networkMisc.acceptPartialConnectivity) {
|
||||
try {
|
||||
nai.networkMonitor().notifyAcceptPartialConnectivity();
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
final String redirectUrl = (msg.obj instanceof String) ? (String) msg.obj : "";
|
||||
|
||||
@@ -2624,7 +2605,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
mNotifier.clearNotification(nai.network.netId,
|
||||
NotificationType.LOST_INTERNET);
|
||||
}
|
||||
} else if (partialConnectivityChange) {
|
||||
} else if (partialConnectivityChanged) {
|
||||
nai.partialConnectivity = partialConnectivity;
|
||||
updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
|
||||
}
|
||||
@@ -3378,8 +3359,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// Tear down the network.
|
||||
teardownUnneededNetwork(nai);
|
||||
} else {
|
||||
// Inform NetworkMonitor that partial connectivity is acceptable. This will likely
|
||||
// result in a partial connectivity result which will be processed by
|
||||
// maybeHandleNetworkMonitorMessage.
|
||||
try {
|
||||
nai.networkMonitor().notifyAcceptPartialConnectivity();
|
||||
nai.networkMonitor().setAcceptPartialConnectivity();
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
}
|
||||
@@ -3587,6 +3571,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// because we're already prompting the user to sign in.
|
||||
if (nai == null || nai.everValidated || nai.everCaptivePortalDetected
|
||||
|| !nai.networkMisc.explicitlySelected || nai.networkMisc.acceptUnvalidated
|
||||
// TODO: Once the value of acceptPartialConnectivity is moved to IpMemoryStore,
|
||||
// we should reevaluate how to handle acceptPartialConnectivity when network just
|
||||
// connected.
|
||||
|| nai.networkMisc.acceptPartialConnectivity) {
|
||||
return;
|
||||
}
|
||||
@@ -6395,6 +6382,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
||||
// NetworkMonitor seeing the correct LinkProperties when starting.
|
||||
// TODO: pass LinkProperties to the NetworkMonitor in the notifyNetworkConnected call.
|
||||
try {
|
||||
if (networkAgent.networkMisc.acceptPartialConnectivity) {
|
||||
networkAgent.networkMonitor().setAcceptPartialConnectivity();
|
||||
}
|
||||
networkAgent.networkMonitor().notifyNetworkConnected();
|
||||
} catch (RemoteException e) {
|
||||
e.rethrowFromSystemServer();
|
||||
|
||||
@@ -495,7 +495,7 @@ public class ConnectivityServiceTest {
|
||||
try {
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).notifyNetworkConnected();
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).forceReevaluation(anyInt());
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).notifyAcceptPartialConnectivity();
|
||||
doAnswer(validateAnswer).when(mNetworkMonitor).setAcceptPartialConnectivity();
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
@@ -2550,8 +2550,7 @@ public class ConnectivityServiceTest {
|
||||
verifyActiveNetwork(TRANSPORT_CELLULAR);
|
||||
}
|
||||
|
||||
// TODO: deflake and re-enable
|
||||
// @Test
|
||||
@Test
|
||||
public void testPartialConnectivity() {
|
||||
// Register network callback.
|
||||
NetworkRequest request = new NetworkRequest.Builder()
|
||||
@@ -2585,7 +2584,7 @@ public class ConnectivityServiceTest {
|
||||
waitForIdle();
|
||||
try {
|
||||
verify(mWiFiNetworkAgent.mNetworkMonitor,
|
||||
timeout(TIMEOUT_MS).times(1)).notifyAcceptPartialConnectivity();
|
||||
timeout(TIMEOUT_MS).times(1)).setAcceptPartialConnectivity();
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
@@ -2641,7 +2640,7 @@ public class ConnectivityServiceTest {
|
||||
waitForIdle();
|
||||
try {
|
||||
verify(mWiFiNetworkAgent.mNetworkMonitor,
|
||||
timeout(TIMEOUT_MS).times(1)).notifyAcceptPartialConnectivity();
|
||||
timeout(TIMEOUT_MS).times(1)).setAcceptPartialConnectivity();
|
||||
} catch (RemoteException e) {
|
||||
fail(e.getMessage());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user