Rename isStrictMode to better names

"isStrictMode" is a poor name to set whether the private DNS
probe succeeded.

Test: ConnectivityServiceTest
Change-Id: I5d0d7ebabc5791b4b6cb7c1cce54b515d2e7e9d9
This commit is contained in:
Chalard Jean
2022-12-20 19:48:32 +09:00
committed by Jean Chalard
parent a5f1a27069
commit d8ba034066

View File

@@ -1058,15 +1058,30 @@ public class ConnectivityServiceTest {
* @param validated Indicate if network should pretend to be validated. * @param validated Indicate if network should pretend to be validated.
*/ */
public void connect(boolean validated) { public void connect(boolean validated) {
connect(validated, true, false /* isStrictMode */); connect(validated, true, false /* privateDnsProbeSent */);
} }
/** /**
* Transition this NetworkAgent to CONNECTED state. * Transition this NetworkAgent to CONNECTED state.
*
* @param validated Indicate if network should pretend to be validated. * @param validated Indicate if network should pretend to be validated.
* Note that if this is true, this method will mock the NetworkMonitor
* probes to pretend the network is invalid after it validated once,
* so that subsequent attempts (with mNetworkMonitor.forceReevaluation)
* will fail unless setNetworkValid is called again manually.
* @param hasInternet Indicate if network should pretend to have NET_CAPABILITY_INTERNET. * @param hasInternet Indicate if network should pretend to have NET_CAPABILITY_INTERNET.
* @param privateDnsProbeSent whether the private DNS probe should be considered to have
* been sent, assuming |validated| is true.
* If |validated| is false, |privateDnsProbeSent| is not used.
* If |validated| is true and |privateDnsProbeSent| is false,
* the probe has not been sent.
* If |validated| is true and |privateDnsProbeSent| is true,
* the probe has been sent and has succeeded. When the NM probes
* are mocked to be invalid, private DNS is the reason this
* network is invalid ; see @param |validated|.
*/ */
public void connect(boolean validated, boolean hasInternet, boolean isStrictMode) { public void connect(boolean validated, boolean hasInternet,
boolean privateDnsProbeSent) {
final ConditionVariable validatedCv = new ConditionVariable(); final ConditionVariable validatedCv = new ConditionVariable();
final ConditionVariable capsChangedCv = new ConditionVariable(); final ConditionVariable capsChangedCv = new ConditionVariable();
final NetworkRequest request = new NetworkRequest.Builder() final NetworkRequest request = new NetworkRequest.Builder()
@@ -1074,7 +1089,7 @@ public class ConnectivityServiceTest {
.clearCapabilities() .clearCapabilities()
.build(); .build();
if (validated) { if (validated) {
setNetworkValid(isStrictMode); setNetworkValid(privateDnsProbeSent);
} }
final NetworkCallback callback = new NetworkCallback() { final NetworkCallback callback = new NetworkCallback() {
public void onCapabilitiesChanged(Network network, public void onCapabilitiesChanged(Network network,
@@ -1099,14 +1114,15 @@ public class ConnectivityServiceTest {
if (validated) { if (validated) {
// Wait for network to validate. // Wait for network to validate.
waitFor(validatedCv); waitFor(validatedCv);
setNetworkInvalid(isStrictMode); setNetworkInvalid(privateDnsProbeSent);
} }
mCm.unregisterNetworkCallback(callback); mCm.unregisterNetworkCallback(callback);
} }
public void connectWithCaptivePortal(String redirectUrl, boolean isStrictMode) { public void connectWithCaptivePortal(String redirectUrl,
setNetworkPortal(redirectUrl, isStrictMode); boolean privateDnsProbeSent) {
connect(false, true /* hasInternet */, isStrictMode); setNetworkPortal(redirectUrl, privateDnsProbeSent);
connect(false, true /* hasInternet */, privateDnsProbeSent);
} }
public void connectWithPartialConnectivity() { public void connectWithPartialConnectivity() {
@@ -1114,16 +1130,16 @@ public class ConnectivityServiceTest {
connect(false); connect(false);
} }
public void connectWithPartialValidConnectivity(boolean isStrictMode) { public void connectWithPartialValidConnectivity(boolean privateDnsProbeSent) {
setNetworkPartialValid(isStrictMode); setNetworkPartialValid(privateDnsProbeSent);
connect(false, true /* hasInternet */, isStrictMode); connect(false, true /* hasInternet */, privateDnsProbeSent);
} }
void setNetworkValid(boolean isStrictMode) { void setNetworkValid(boolean privateDnsProbeSent) {
mNmValidationResult = NETWORK_VALIDATION_RESULT_VALID; mNmValidationResult = NETWORK_VALIDATION_RESULT_VALID;
mNmValidationRedirectUrl = null; mNmValidationRedirectUrl = null;
int probesSucceeded = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTPS; int probesSucceeded = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTPS;
if (isStrictMode) { if (privateDnsProbeSent) {
probesSucceeded |= NETWORK_VALIDATION_PROBE_PRIVDNS; probesSucceeded |= NETWORK_VALIDATION_PROBE_PRIVDNS;
} }
// The probesCompleted equals to probesSucceeded for the case of valid network, so put // The probesCompleted equals to probesSucceeded for the case of valid network, so put
@@ -1131,15 +1147,16 @@ public class ConnectivityServiceTest {
setProbesStatus(probesSucceeded, probesSucceeded); setProbesStatus(probesSucceeded, probesSucceeded);
} }
void setNetworkInvalid(boolean isStrictMode) { void setNetworkInvalid(boolean invalidBecauseOfPrivateDns) {
mNmValidationResult = VALIDATION_RESULT_INVALID; mNmValidationResult = VALIDATION_RESULT_INVALID;
mNmValidationRedirectUrl = null; mNmValidationRedirectUrl = null;
int probesCompleted = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTPS int probesCompleted = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTPS
| NETWORK_VALIDATION_PROBE_HTTP; | NETWORK_VALIDATION_PROBE_HTTP;
int probesSucceeded = 0; int probesSucceeded = 0;
// If the isStrictMode is true, it means the network is invalid when NetworkMonitor // If |invalidBecauseOfPrivateDns| is true, it means the network is invalid because
// tried to validate the private DNS but failed. // NetworkMonitor tried to validate the private DNS but failed. Therefore it
if (isStrictMode) { // didn't get a chance to try the HTTP probe.
if (invalidBecauseOfPrivateDns) {
probesCompleted &= ~NETWORK_VALIDATION_PROBE_HTTP; probesCompleted &= ~NETWORK_VALIDATION_PROBE_HTTP;
probesSucceeded = probesCompleted; probesSucceeded = probesCompleted;
probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS; probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS;
@@ -1147,14 +1164,14 @@ public class ConnectivityServiceTest {
setProbesStatus(probesCompleted, probesSucceeded); setProbesStatus(probesCompleted, probesSucceeded);
} }
void setNetworkPortal(String redirectUrl, boolean isStrictMode) { void setNetworkPortal(String redirectUrl, boolean privateDnsProbeSent) {
setNetworkInvalid(isStrictMode); setNetworkInvalid(privateDnsProbeSent);
mNmValidationRedirectUrl = redirectUrl; mNmValidationRedirectUrl = redirectUrl;
// Suppose the portal is found when NetworkMonitor probes NETWORK_VALIDATION_PROBE_HTTP // Suppose the portal is found when NetworkMonitor probes NETWORK_VALIDATION_PROBE_HTTP
// in the beginning, so the NETWORK_VALIDATION_PROBE_HTTPS hasn't probed yet. // in the beginning, so the NETWORK_VALIDATION_PROBE_HTTPS hasn't probed yet.
int probesCompleted = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTP; int probesCompleted = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTP;
int probesSucceeded = VALIDATION_RESULT_INVALID; int probesSucceeded = VALIDATION_RESULT_INVALID;
if (isStrictMode) { if (privateDnsProbeSent) {
probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS; probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS;
} }
setProbesStatus(probesCompleted, probesSucceeded); setProbesStatus(probesCompleted, probesSucceeded);
@@ -1169,7 +1186,7 @@ public class ConnectivityServiceTest {
setProbesStatus(probesCompleted, probesSucceeded); setProbesStatus(probesCompleted, probesSucceeded);
} }
void setNetworkPartialValid(boolean isStrictMode) { void setNetworkPartialValid(boolean privateDnsProbeSent) {
setNetworkPartial(); setNetworkPartial();
mNmValidationResult |= NETWORK_VALIDATION_RESULT_VALID; mNmValidationResult |= NETWORK_VALIDATION_RESULT_VALID;
mNmValidationRedirectUrl = null; mNmValidationRedirectUrl = null;
@@ -1178,7 +1195,7 @@ public class ConnectivityServiceTest {
int probesSucceeded = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTP; int probesSucceeded = NETWORK_VALIDATION_PROBE_DNS | NETWORK_VALIDATION_PROBE_HTTP;
// Assume the partial network cannot pass the private DNS validation as well, so only // Assume the partial network cannot pass the private DNS validation as well, so only
// add NETWORK_VALIDATION_PROBE_DNS in probesCompleted but not probesSucceeded. // add NETWORK_VALIDATION_PROBE_DNS in probesCompleted but not probesSucceeded.
if (isStrictMode) { if (privateDnsProbeSent) {
probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS; probesCompleted |= NETWORK_VALIDATION_PROBE_PRIVDNS;
} }
setProbesStatus(probesCompleted, probesSucceeded); setProbesStatus(probesCompleted, probesSucceeded);
@@ -1473,8 +1490,9 @@ public class ConnectivityServiceTest {
registerAgent(false /* isAlwaysMetered */, uids, makeLinkProperties()); registerAgent(false /* isAlwaysMetered */, uids, makeLinkProperties());
} }
private void connect(boolean validated, boolean hasInternet, boolean isStrictMode) { private void connect(boolean validated, boolean hasInternet,
mMockNetworkAgent.connect(validated, hasInternet, isStrictMode); boolean privateDnsProbeSent) {
mMockNetworkAgent.connect(validated, hasInternet, privateDnsProbeSent);
} }
private void connect(boolean validated) { private void connect(boolean validated) {
@@ -1491,10 +1509,10 @@ public class ConnectivityServiceTest {
} }
public void establish(LinkProperties lp, int uid, Set<UidRange> ranges, boolean validated, public void establish(LinkProperties lp, int uid, Set<UidRange> ranges, boolean validated,
boolean hasInternet, boolean isStrictMode) throws Exception { boolean hasInternet, boolean privateDnsProbeSent) throws Exception {
setOwnerAndAdminUid(uid); setOwnerAndAdminUid(uid);
registerAgent(false, ranges, lp); registerAgent(false, ranges, lp);
connect(validated, hasInternet, isStrictMode); connect(validated, hasInternet, privateDnsProbeSent);
waitForIdle(); waitForIdle();
} }
@@ -1507,11 +1525,11 @@ public class ConnectivityServiceTest {
establish(lp, uid, uidRangesForUids(uid), true, true, false); establish(lp, uid, uidRangesForUids(uid), true, true, false);
} }
public void establishForMyUid(boolean validated, boolean hasInternet, boolean isStrictMode) public void establishForMyUid(boolean validated, boolean hasInternet,
throws Exception { boolean privateDnsProbeSent) throws Exception {
final int uid = Process.myUid(); final int uid = Process.myUid();
establish(makeLinkProperties(), uid, uidRangesForUids(uid), validated, hasInternet, establish(makeLinkProperties(), uid, uidRangesForUids(uid), validated, hasInternet,
isStrictMode); privateDnsProbeSent);
} }
public void establishForMyUid() throws Exception { public void establishForMyUid() throws Exception {
@@ -4219,7 +4237,7 @@ public class ConnectivityServiceTest {
// With HTTPS probe disabled, NetworkMonitor should pass the network validation with http // With HTTPS probe disabled, NetworkMonitor should pass the network validation with http
// probe. // probe.
mWiFiNetworkAgent.setNetworkPartialValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkPartialValid(false /* privateDnsProbeSent */);
// If the user chooses yes to use this partial connectivity wifi, switch the default // If the user chooses yes to use this partial connectivity wifi, switch the default
// network to wifi and check if wifi becomes valid or not. // network to wifi and check if wifi becomes valid or not.
mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */, mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */,
@@ -4306,7 +4324,7 @@ public class ConnectivityServiceTest {
callback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, mWiFiNetworkAgent); callback.expectCapabilitiesWith(NET_CAPABILITY_PARTIAL_CONNECTIVITY, mWiFiNetworkAgent);
expectUnvalidationCheckWillNotNotify(mWiFiNetworkAgent); expectUnvalidationCheckWillNotNotify(mWiFiNetworkAgent);
mWiFiNetworkAgent.setNetworkValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(false /* privateDnsProbeSent */);
// Need a trigger point to let NetworkMonitor tell ConnectivityService that the network is // Need a trigger point to let NetworkMonitor tell ConnectivityService that the network is
// validated. // validated.
@@ -4324,7 +4342,8 @@ public class ConnectivityServiceTest {
// NetworkMonitor will immediately (once the HTTPS probe fails...) report the network as // NetworkMonitor will immediately (once the HTTPS probe fails...) report the network as
// valid, because ConnectivityService calls setAcceptPartialConnectivity before it calls // valid, because ConnectivityService calls setAcceptPartialConnectivity before it calls
// notifyNetworkConnected. // notifyNetworkConnected.
mWiFiNetworkAgent.connectWithPartialValidConnectivity(false /* isStrictMode */); mWiFiNetworkAgent.connectWithPartialValidConnectivity(
false /* privateDnsProbeSent */);
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
verify(mWiFiNetworkAgent.mNetworkMonitor, times(1)).setAcceptPartialConnectivity(); verify(mWiFiNetworkAgent.mNetworkMonitor, times(1)).setAcceptPartialConnectivity();
callback.expectLosing(mCellNetworkAgent); callback.expectLosing(mCellNetworkAgent);
@@ -4353,7 +4372,8 @@ public class ConnectivityServiceTest {
// Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL. // Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL.
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
String redirectUrl = "http://android.com/path"; String redirectUrl = "http://android.com/path";
mWiFiNetworkAgent.connectWithCaptivePortal(redirectUrl, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(redirectUrl,
false /* privateDnsProbeSent */);
wifiCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); wifiCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), redirectUrl); assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), redirectUrl);
@@ -4378,7 +4398,7 @@ public class ConnectivityServiceTest {
&& !nc.hasCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); && !nc.hasCapability(NET_CAPABILITY_CAPTIVE_PORTAL));
// Report partial connectivity is accepted. // Report partial connectivity is accepted.
mWiFiNetworkAgent.setNetworkPartialValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkPartialValid(false /* privateDnsProbeSent */);
mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */, mCm.setAcceptPartialConnectivity(mWiFiNetworkAgent.getNetwork(), true /* accept */,
false /* always */); false /* always */);
waitForIdle(); waitForIdle();
@@ -4408,7 +4428,8 @@ public class ConnectivityServiceTest {
// Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL. // Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL.
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
String firstRedirectUrl = "http://example.com/firstPath"; String firstRedirectUrl = "http://example.com/firstPath";
mWiFiNetworkAgent.connectWithCaptivePortal(firstRedirectUrl, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(firstRedirectUrl,
false /* privateDnsProbeSent */);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), firstRedirectUrl); assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), firstRedirectUrl);
@@ -4421,13 +4442,14 @@ public class ConnectivityServiceTest {
// Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL. // Expect onAvailable callback of listen for NET_CAPABILITY_CAPTIVE_PORTAL.
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
String secondRedirectUrl = "http://example.com/secondPath"; String secondRedirectUrl = "http://example.com/secondPath";
mWiFiNetworkAgent.connectWithCaptivePortal(secondRedirectUrl, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(secondRedirectUrl,
false /* privateDnsProbeSent */);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), secondRedirectUrl); assertEquals(mWiFiNetworkAgent.waitForRedirectUrl(), secondRedirectUrl);
// Make captive portal disappear then revalidate. // Make captive portal disappear then revalidate.
// Expect onLost callback because network no longer provides NET_CAPABILITY_CAPTIVE_PORTAL. // Expect onLost callback because network no longer provides NET_CAPABILITY_CAPTIVE_PORTAL.
mWiFiNetworkAgent.setNetworkValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(false /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
captivePortalCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); captivePortalCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
@@ -4436,7 +4458,7 @@ public class ConnectivityServiceTest {
// Break network connectivity. // Break network connectivity.
// Expect NET_CAPABILITY_VALIDATED onLost callback. // Expect NET_CAPABILITY_VALIDATED onLost callback.
mWiFiNetworkAgent.setNetworkInvalid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(false /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
validatedCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); validatedCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
} }
@@ -4488,7 +4510,8 @@ public class ConnectivityServiceTest {
mServiceContext.expectNoStartActivityIntent(fastTimeoutMs); mServiceContext.expectNoStartActivityIntent(fastTimeoutMs);
// Turn into a captive portal. // Turn into a captive portal.
mWiFiNetworkAgent.setNetworkPortal("http://example.com", false /* isStrictMode */); mWiFiNetworkAgent.setNetworkPortal("http://example.com",
false /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(wifiNetwork, false); mCm.reportNetworkConnectivity(wifiNetwork, false);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
validatedCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); validatedCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
@@ -4501,7 +4524,7 @@ public class ConnectivityServiceTest {
startCaptivePortalApp(mWiFiNetworkAgent); startCaptivePortalApp(mWiFiNetworkAgent);
// Report that the captive portal is dismissed, and check that callbacks are fired // Report that the captive portal is dismissed, and check that callbacks are fired
mWiFiNetworkAgent.setNetworkValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(false /* privateDnsProbeSent */);
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); validatedCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
captivePortalCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); captivePortalCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
@@ -4559,7 +4582,8 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
String firstRedirectUrl = "http://example.com/firstPath"; String firstRedirectUrl = "http://example.com/firstPath";
mWiFiNetworkAgent.connectWithCaptivePortal(firstRedirectUrl, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(firstRedirectUrl,
false /* privateDnsProbeSent */);
mWiFiNetworkAgent.expectDisconnected(); mWiFiNetworkAgent.expectDisconnected();
mWiFiNetworkAgent.expectPreventReconnectReceived(); mWiFiNetworkAgent.expectPreventReconnectReceived();
@@ -4578,7 +4602,8 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
final String redirectUrl = "http://example.com/firstPath"; final String redirectUrl = "http://example.com/firstPath";
mWiFiNetworkAgent.connectWithCaptivePortal(redirectUrl, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(redirectUrl,
false /* privateDnsProbeSent */);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
final CaptivePortalData testData = new CaptivePortalData.Builder() final CaptivePortalData testData = new CaptivePortalData.Builder()
@@ -4611,7 +4636,8 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI); mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
mWiFiNetworkAgent.connectWithCaptivePortal(TEST_REDIRECT_URL, false /* isStrictMode */); mWiFiNetworkAgent.connectWithCaptivePortal(TEST_REDIRECT_URL,
false /* privateDnsProbeSent */);
captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); captivePortalCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
return captivePortalCallback; return captivePortalCallback;
} }
@@ -5812,7 +5838,7 @@ public class ConnectivityServiceTest {
wifiCallback.assertNoCallback(); wifiCallback.assertNoCallback();
// Wifi validates. Cell is no longer needed, because it's outscored. // Wifi validates. Cell is no longer needed, because it's outscored.
mWiFiNetworkAgent.setNetworkValid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(true /* privateDnsProbeSent */);
// Have CS reconsider the network (see testPartialConnectivity) // Have CS reconsider the network (see testPartialConnectivity)
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
wifiNetworkCallback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); wifiNetworkCallback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
@@ -5820,7 +5846,7 @@ public class ConnectivityServiceTest {
wifiCallback.assertNoCallback(); wifiCallback.assertNoCallback();
// Wifi is no longer validated. Cell is needed again. // Wifi is no longer validated. Cell is needed again.
mWiFiNetworkAgent.setNetworkInvalid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(true /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
cellCallback.expectOnNetworkNeeded(defaultCaps); cellCallback.expectOnNetworkNeeded(defaultCaps);
@@ -5842,7 +5868,7 @@ public class ConnectivityServiceTest {
wifiNetworkCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); wifiNetworkCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
cellCallback.assertNoCallback(); cellCallback.assertNoCallback();
wifiCallback.assertNoCallback(); wifiCallback.assertNoCallback();
mWiFiNetworkAgent.setNetworkValid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(true /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
wifiNetworkCallback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); wifiNetworkCallback.expectCapabilitiesWith(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
cellCallback.expectOnNetworkUnneeded(defaultCaps); cellCallback.expectOnNetworkUnneeded(defaultCaps);
@@ -5850,7 +5876,7 @@ public class ConnectivityServiceTest {
// Wifi loses validation. Because the device doesn't avoid bad wifis, cell is // Wifi loses validation. Because the device doesn't avoid bad wifis, cell is
// not needed. // not needed.
mWiFiNetworkAgent.setNetworkInvalid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(true /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
cellCallback.assertNoCallback(); cellCallback.assertNoCallback();
@@ -5945,7 +5971,7 @@ public class ConnectivityServiceTest {
Network wifiNetwork = mWiFiNetworkAgent.getNetwork(); Network wifiNetwork = mWiFiNetworkAgent.getNetwork();
// Fail validation on wifi. // Fail validation on wifi.
mWiFiNetworkAgent.setNetworkInvalid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(false /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(wifiNetwork, false); mCm.reportNetworkConnectivity(wifiNetwork, false);
defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
validatedWifiCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); validatedWifiCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
@@ -5996,7 +6022,7 @@ public class ConnectivityServiceTest {
wifiNetwork = mWiFiNetworkAgent.getNetwork(); wifiNetwork = mWiFiNetworkAgent.getNetwork();
// Fail validation on wifi and expect the dialog to appear. // Fail validation on wifi and expect the dialog to appear.
mWiFiNetworkAgent.setNetworkInvalid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(false /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(wifiNetwork, false); mCm.reportNetworkConnectivity(wifiNetwork, false);
defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent); defaultCallback.expectCapabilitiesWithout(NET_CAPABILITY_VALIDATED, mWiFiNetworkAgent);
validatedWifiCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent); validatedWifiCallback.expect(CallbackEntry.LOST, mWiFiNetworkAgent);
@@ -7155,7 +7181,7 @@ public class ConnectivityServiceTest {
mCm.registerNetworkCallback(request, callback); mCm.registerNetworkCallback(request, callback);
// Bring up wifi aware network. // Bring up wifi aware network.
wifiAware.connect(false, false, false /* isStrictMode */); wifiAware.connect(false, false, false /* privateDnsProbeSent */);
callback.expectAvailableCallbacksUnvalidated(wifiAware); callback.expectAvailableCallbacksUnvalidated(wifiAware);
assertNull(mCm.getActiveNetworkInfo()); assertNull(mCm.getActiveNetworkInfo());
@@ -7733,7 +7759,7 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent.connect(false); mWiFiNetworkAgent.connect(false);
callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent); callback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
// Private DNS resolution failed, checking if the notification will be shown or not. // Private DNS resolution failed, checking if the notification will be shown or not.
mWiFiNetworkAgent.setNetworkInvalid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(true /* invalidBecauseOfPrivateDns */);
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
waitForIdle(); waitForIdle();
// If network validation failed, NetworkMonitor will re-evaluate the network. // If network validation failed, NetworkMonitor will re-evaluate the network.
@@ -7745,14 +7771,14 @@ public class ConnectivityServiceTest {
eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any()); eq(NotificationType.PRIVATE_DNS_BROKEN.eventId), any());
// If private DNS resolution successful, the PRIVATE_DNS_BROKEN notification shouldn't be // If private DNS resolution successful, the PRIVATE_DNS_BROKEN notification shouldn't be
// shown. // shown.
mWiFiNetworkAgent.setNetworkValid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(true /* privateDnsProbeSent */);
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
waitForIdle(); waitForIdle();
verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).cancel(anyString(), verify(mNotificationManager, timeout(TIMEOUT_MS).times(1)).cancel(anyString(),
eq(NotificationType.PRIVATE_DNS_BROKEN.eventId)); eq(NotificationType.PRIVATE_DNS_BROKEN.eventId));
// If private DNS resolution failed again, the PRIVATE_DNS_BROKEN notification should be // If private DNS resolution failed again, the PRIVATE_DNS_BROKEN notification should be
// shown again. // shown again.
mWiFiNetworkAgent.setNetworkInvalid(true /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(true /* invalidBecauseOfPrivateDns */);
mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); mWiFiNetworkAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
waitForIdle(); waitForIdle();
verify(mNotificationManager, timeout(TIMEOUT_MS).times(2)).notify(anyString(), verify(mNotificationManager, timeout(TIMEOUT_MS).times(2)).notify(anyString(),
@@ -8214,7 +8240,7 @@ public class ConnectivityServiceTest {
// Connect a VPN. // Connect a VPN.
mMockVpn.establishForMyUid(false /* validated */, true /* hasInternet */, mMockVpn.establishForMyUid(false /* validated */, true /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
callback.expectAvailableCallbacksUnvalidated(mMockVpn); callback.expectAvailableCallbacksUnvalidated(mMockVpn);
// Connect cellular data. // Connect cellular data.
@@ -8370,7 +8396,7 @@ public class ConnectivityServiceTest {
NetworkAgentConfigShimImpl.newInstance(mMockVpn.getNetworkAgentConfig()) NetworkAgentConfigShimImpl.newInstance(mMockVpn.getNetworkAgentConfig())
.isVpnValidationRequired(), .isVpnValidationRequired(),
mMockVpn.getAgent().getNetworkCapabilities())); mMockVpn.getAgent().getNetworkCapabilities()));
mMockVpn.getAgent().setNetworkValid(false /* isStrictMode */); mMockVpn.getAgent().setNetworkValid(false /* privateDnsProbeSent */);
mMockVpn.connect(false); mMockVpn.connect(false);
@@ -8453,7 +8479,7 @@ public class ConnectivityServiceTest {
assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork()); assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */, mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
defaultCallback.assertNoCallback(); defaultCallback.assertNoCallback();
@@ -8479,7 +8505,7 @@ public class ConnectivityServiceTest {
assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork()); assertEquals(defaultCallback.getLastAvailableNetwork(), mCm.getActiveNetwork());
mMockVpn.establishForMyUid(true /* validated */, true /* hasInternet */, mMockVpn.establishForMyUid(true /* validated */, true /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
defaultCallback.expectAvailableThenValidatedCallbacks(mMockVpn); defaultCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
@@ -8505,7 +8531,7 @@ public class ConnectivityServiceTest {
// Bring up a VPN that has the INTERNET capability, initially unvalidated. // Bring up a VPN that has the INTERNET capability, initially unvalidated.
mMockVpn.establishForMyUid(false /* validated */, true /* hasInternet */, mMockVpn.establishForMyUid(false /* validated */, true /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
// Even though the VPN is unvalidated, it becomes the default network for our app. // Even though the VPN is unvalidated, it becomes the default network for our app.
@@ -8527,7 +8553,7 @@ public class ConnectivityServiceTest {
mMockVpn.getAgent().getNetworkCapabilities())); mMockVpn.getAgent().getNetworkCapabilities()));
// Pretend that the VPN network validates. // Pretend that the VPN network validates.
mMockVpn.getAgent().setNetworkValid(false /* isStrictMode */); mMockVpn.getAgent().setNetworkValid(false /* privateDnsProbeSent */);
mMockVpn.getAgent().mNetworkMonitor.forceReevaluation(Process.myUid()); mMockVpn.getAgent().mNetworkMonitor.forceReevaluation(Process.myUid());
// Expect to see the validated capability, but no other changes, because the VPN is already // Expect to see the validated capability, but no other changes, because the VPN is already
// the default network for the app. // the default network for the app.
@@ -8558,7 +8584,7 @@ public class ConnectivityServiceTest {
mCellNetworkAgent.connect(true); mCellNetworkAgent.connect(true);
mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */, mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
vpnNetworkCallback.expectAvailableCallbacks(mMockVpn.getNetwork(), vpnNetworkCallback.expectAvailableCallbacks(mMockVpn.getNetwork(),
@@ -8602,7 +8628,7 @@ public class ConnectivityServiceTest {
vpnNetworkCallback.assertNoCallback(); vpnNetworkCallback.assertNoCallback();
mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */, mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn); vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
@@ -8767,7 +8793,7 @@ public class ConnectivityServiceTest {
vpnNetworkCallback.assertNoCallback(); vpnNetworkCallback.assertNoCallback();
mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */, mMockVpn.establishForMyUid(true /* validated */, false /* hasInternet */,
false /* isStrictMode */); false /* privateDnsProbeSent */);
assertUidRangesUpdatedForMyUid(true); assertUidRangesUpdatedForMyUid(true);
vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn); vpnNetworkCallback.expectAvailableThenValidatedCallbacks(mMockVpn);
@@ -12312,7 +12338,8 @@ public class ConnectivityServiceTest {
b1.expectNoBroadcast(500); b1.expectNoBroadcast(500);
final ExpectedBroadcast b2 = registerPacProxyBroadcast(); final ExpectedBroadcast b2 = registerPacProxyBroadcast();
mMockVpn.connect(true /* validated */, true /* hasInternet */, false /* isStrictMode */); mMockVpn.connect(true /* validated */, true /* hasInternet */,
false /* privateDnsProbeSent */);
waitForIdle(); waitForIdle();
assertVpnUidRangesUpdated(true, vpnRanges, VPN_UID); assertVpnUidRangesUpdated(true, vpnRanges, VPN_UID);
// Vpn is connected with proxy, so the proxy broadcast will be sent to inform the apps to // Vpn is connected with proxy, so the proxy broadcast will be sent to inform the apps to
@@ -14810,7 +14837,7 @@ public class ConnectivityServiceTest {
// Make sure changes to the work agent send callbacks to the app in the work profile, but // Make sure changes to the work agent send callbacks to the app in the work profile, but
// not to the other apps. // not to the other apps.
workAgent.setNetworkValid(true /* isStrictMode */); workAgent.setNetworkValid(true /* privateDnsProbeSent */);
workAgent.mNetworkMonitor.forceReevaluation(Process.myUid()); workAgent.mNetworkMonitor.forceReevaluation(Process.myUid());
profileDefaultNetworkCallback.expectCapabilitiesThat(workAgent, profileDefaultNetworkCallback.expectCapabilitiesThat(workAgent,
nc -> nc.hasCapability(NET_CAPABILITY_VALIDATED) nc -> nc.hasCapability(NET_CAPABILITY_VALIDATED)
@@ -14923,7 +14950,7 @@ public class ConnectivityServiceTest {
workAgent2.getNetwork().netId, workAgent2.getNetwork().netId,
uidRangeFor(testHandle, profileNetworkPreference), PREFERENCE_ORDER_PROFILE)); uidRangeFor(testHandle, profileNetworkPreference), PREFERENCE_ORDER_PROFILE));
workAgent2.setNetworkValid(true /* isStrictMode */); workAgent2.setNetworkValid(true /* privateDnsProbeSent */);
workAgent2.mNetworkMonitor.forceReevaluation(Process.myUid()); workAgent2.mNetworkMonitor.forceReevaluation(Process.myUid());
profileDefaultNetworkCallback.expectCapabilitiesThat(workAgent2, profileDefaultNetworkCallback.expectCapabilitiesThat(workAgent2,
nc -> nc.hasCapability(NET_CAPABILITY_ENTERPRISE) nc -> nc.hasCapability(NET_CAPABILITY_ENTERPRISE)
@@ -16923,7 +16950,8 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent); mWiFiNetworkAgent);
mDefaultNetworkCallback.expect(CallbackEntry.NETWORK_CAPS_UPDATED, mDefaultNetworkCallback.expect(CallbackEntry.NETWORK_CAPS_UPDATED,
mWiFiNetworkAgent); mWiFiNetworkAgent);
mWiFiNetworkAgent.setNetworkPortal(TEST_REDIRECT_URL, false /* isStrictMode */); mWiFiNetworkAgent.setNetworkPortal(TEST_REDIRECT_URL,
false /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
// Wi-Fi is now detected to have a portal : cell should become the default network. // Wi-Fi is now detected to have a portal : cell should become the default network.
mDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent); mDefaultNetworkCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
@@ -16933,7 +16961,7 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent); mWiFiNetworkAgent);
// Wi-Fi becomes valid again. The default network goes back to Wi-Fi. // Wi-Fi becomes valid again. The default network goes back to Wi-Fi.
mWiFiNetworkAgent.setNetworkValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(false /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
mDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); mDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_CAPTIVE_PORTAL, wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_CAPTIVE_PORTAL,
@@ -16954,7 +16982,7 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent); mWiFiNetworkAgent);
// Wi-Fi becomes valid again. The default network goes back to Wi-Fi. // Wi-Fi becomes valid again. The default network goes back to Wi-Fi.
mWiFiNetworkAgent.setNetworkValid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkValid(false /* privateDnsProbeSent */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), true);
mDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent); mDefaultNetworkCallback.expectAvailableCallbacksValidated(mWiFiNetworkAgent);
wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_PARTIAL_CONNECTIVITY, wifiNetworkCallback.expectCapabilitiesWithout(NET_CAPABILITY_PARTIAL_CONNECTIVITY,
@@ -16968,7 +16996,7 @@ public class ConnectivityServiceTest {
mWiFiNetworkAgent.setNetworkCapabilities(wifiNc2, true); mWiFiNetworkAgent.setNetworkCapabilities(wifiNc2, true);
mDefaultNetworkCallback.expect(CallbackEntry.NETWORK_CAPS_UPDATED, mDefaultNetworkCallback.expect(CallbackEntry.NETWORK_CAPS_UPDATED,
mWiFiNetworkAgent); mWiFiNetworkAgent);
mWiFiNetworkAgent.setNetworkInvalid(false /* isStrictMode */); mWiFiNetworkAgent.setNetworkInvalid(false /* invalidBecauseOfPrivateDns */);
mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false); mCm.reportNetworkConnectivity(mWiFiNetworkAgent.getNetwork(), false);
if (enabled) { if (enabled) {