Merge "Clean up for multiple validation result update" am: 7a5b9c2d0a

am: 0d018cdaec

Change-Id: I4424663292c5ad29eb7a888fa6975835721a5d2e
This commit is contained in:
Chiachang Wang
2019-05-25 02:53:44 -07:00
committed by android-build-merger
3 changed files with 18 additions and 8 deletions

View File

@@ -683,9 +683,9 @@ public class NetworkMonitor extends StateMachine {
public void enter() { public void enter() {
maybeLogEvaluationResult( maybeLogEvaluationResult(
networkEventType(validationStage(), EvaluationResult.VALIDATED)); networkEventType(validationStage(), EvaluationResult.VALIDATED));
// If the user has accepted that and HTTPS probing is disabled, then mark the network // If the user has accepted partial connectivity and HTTPS probing is disabled, then
// as validated and partial so that settings can keep informing the user that the // mark the network as validated and partial so that settings can keep informing the
// connection is limited. // user that the connection is limited.
int result = NETWORK_VALIDATION_RESULT_VALID; int result = NETWORK_VALIDATION_RESULT_VALID;
if (!mUseHttps && mAcceptPartialConnectivity) { if (!mUseHttps && mAcceptPartialConnectivity) {
result |= NETWORK_VALIDATION_RESULT_PARTIAL; result |= NETWORK_VALIDATION_RESULT_PARTIAL;
@@ -1054,6 +1054,11 @@ public class NetworkMonitor extends StateMachine {
// TODO: Consider abandoning this state after a few attempts and // TODO: Consider abandoning this state after a few attempts and
// transitioning back to EvaluatingState, to perhaps give ourselves // transitioning back to EvaluatingState, to perhaps give ourselves
// the opportunity to (re)detect a captive portal or something. // the opportunity to (re)detect a captive portal or something.
//
// TODO: distinguish between CMD_EVALUATE_PRIVATE_DNS messages that are caused by server
// lookup failures (which should continue to do exponential backoff) and
// CMD_EVALUATE_PRIVATE_DNS messages that are caused by user reconfiguration (which
// should be processed immediately.
sendMessageDelayed(CMD_EVALUATE_PRIVATE_DNS, mPrivateDnsReevalDelayMs); sendMessageDelayed(CMD_EVALUATE_PRIVATE_DNS, mPrivateDnsReevalDelayMs);
mPrivateDnsReevalDelayMs *= 2; mPrivateDnsReevalDelayMs *= 2;
if (mPrivateDnsReevalDelayMs > MAX_REEVALUATE_DELAY_MS) { if (mPrivateDnsReevalDelayMs > MAX_REEVALUATE_DELAY_MS) {

View File

@@ -941,6 +941,10 @@ public class NetworkMonitorTest {
.notifyNetworkTested(intCaptor.capture(), any()); .notifyNetworkTested(intCaptor.capture(), any());
List<Integer> intArgs = intCaptor.getAllValues(); List<Integer> intArgs = intCaptor.getAllValues();
// None of these exact values can be known in advance except for intArgs.get(0) because the
// HTTP and HTTPS probes race and the order in which they complete is non-deterministic.
// Thus, check only exact value for intArgs.get(0) and only check the validation result for
// the rest ones.
assertEquals(Integer.valueOf(NETWORK_VALIDATION_PROBE_DNS assertEquals(Integer.valueOf(NETWORK_VALIDATION_PROBE_DNS
| NETWORK_VALIDATION_PROBE_FALLBACK | NETWORK_VALIDATION_RESULT_VALID), | NETWORK_VALIDATION_PROBE_FALLBACK | NETWORK_VALIDATION_RESULT_VALID),
intArgs.get(0)); intArgs.get(0));

View File

@@ -615,7 +615,7 @@ public class ConnectivityServiceTest {
private void onValidationRequested() { private void onValidationRequested() {
try { try {
if (mNmProvNotificationRequested if (mNmProvNotificationRequested
&& mNmValidationResult == VALIDATION_RESULT_VALID) { && ((mNmValidationResult & NETWORK_VALIDATION_RESULT_VALID) != 0)) {
mNmCallbacks.hideProvisioningNotification(); mNmCallbacks.hideProvisioningNotification();
mNmProvNotificationRequested = false; mNmProvNotificationRequested = false;
} }
@@ -2781,10 +2781,10 @@ public class ConnectivityServiceTest {
// Bring up a network with a captive portal. // Bring up a network with a captive portal.
// Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL. // Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL.
mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI); mWiFiNetworkAgent = new MockNetworkAgent(TRANSPORT_WIFI);
String firstRedirectUrl = "http://example.com/firstPath"; String redirectUrl = "http://android.com/path";
mWiFiNetworkAgent.connectWithCaptivePortal(firstRedirectUrl); mWiFiNetworkAgent.connectWithCaptivePortal(redirectUrl);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), firstRedirectUrl); assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), redirectUrl);
// Check that startCaptivePortalApp sends the expected command to NetworkMonitor. // Check that startCaptivePortalApp sends the expected command to NetworkMonitor.
mCm.startCaptivePortalApp(mWiFiNetworkAgent.getNetwork()); mCm.startCaptivePortalApp(mWiFiNetworkAgent.getNetwork());
@@ -2794,7 +2794,7 @@ public class ConnectivityServiceTest {
// Report that the captive portal is dismissed with partial connectivity, and check that // Report that the captive portal is dismissed with partial connectivity, and check that
// callbacks are fired. // callbacks are fired.
mWiFiNetworkAgent.setNetworkPartial(); mWiFiNetworkAgent.setNetworkPartial();
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
waitForIdle(); waitForIdle();
captivePortalCallback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, captivePortalCallback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY,
mWiFiNetworkAgent); mWiFiNetworkAgent);
@@ -2805,6 +2805,7 @@ public class ConnectivityServiceTest {
false /* always */); false /* always */);
waitForIdle(); waitForIdle();
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
captivePortalCallback.expectCallback(CallbackState.LOST, mWiFiNetworkAgent);
validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
NetworkCapabilities nc = NetworkCapabilities nc =
validatedCallback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, validatedCallback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY,