Merge "Cleanup existing firewall rule on myUid before the test" into main
This commit is contained in:
@@ -47,6 +47,7 @@ import static android.net.ConnectivityManager.FIREWALL_CHAIN_POWERSAVE;
|
|||||||
import static android.net.ConnectivityManager.FIREWALL_CHAIN_RESTRICTED;
|
import static android.net.ConnectivityManager.FIREWALL_CHAIN_RESTRICTED;
|
||||||
import static android.net.ConnectivityManager.FIREWALL_CHAIN_STANDBY;
|
import static android.net.ConnectivityManager.FIREWALL_CHAIN_STANDBY;
|
||||||
import static android.net.ConnectivityManager.FIREWALL_RULE_ALLOW;
|
import static android.net.ConnectivityManager.FIREWALL_RULE_ALLOW;
|
||||||
|
import static android.net.ConnectivityManager.FIREWALL_RULE_DEFAULT;
|
||||||
import static android.net.ConnectivityManager.FIREWALL_RULE_DENY;
|
import static android.net.ConnectivityManager.FIREWALL_RULE_DENY;
|
||||||
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE;
|
import static android.net.ConnectivityManager.PROFILE_NETWORK_PREFERENCE_ENTERPRISE;
|
||||||
import static android.net.ConnectivityManager.TYPE_BLUETOOTH;
|
import static android.net.ConnectivityManager.TYPE_BLUETOOTH;
|
||||||
@@ -3591,6 +3592,15 @@ public class ConnectivityManagerTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setUidFirewallRule(final int chain, final int uid, final int rule) {
|
||||||
|
try {
|
||||||
|
mCm.setUidFirewallRule(chain, uid, rule);
|
||||||
|
} catch (IllegalStateException ignored) {
|
||||||
|
// Removing match causes an exception when the rule entry for the uid does
|
||||||
|
// not exist. But this is fine and can be ignored.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static final boolean EXPECT_OPEN = false;
|
private static final boolean EXPECT_OPEN = false;
|
||||||
private static final boolean EXPECT_CLOSE = true;
|
private static final boolean EXPECT_CLOSE = true;
|
||||||
|
|
||||||
@@ -3599,6 +3609,8 @@ public class ConnectivityManagerTest {
|
|||||||
runWithShellPermissionIdentity(() -> {
|
runWithShellPermissionIdentity(() -> {
|
||||||
// Firewall chain status will be restored after the test.
|
// Firewall chain status will be restored after the test.
|
||||||
final boolean wasChainEnabled = mCm.getFirewallChainEnabled(chain);
|
final boolean wasChainEnabled = mCm.getFirewallChainEnabled(chain);
|
||||||
|
final int myUid = Process.myUid();
|
||||||
|
final int previousMyUidFirewallRule = mCm.getUidFirewallRule(chain, myUid);
|
||||||
final int previousUidFirewallRule = mCm.getUidFirewallRule(chain, targetUid);
|
final int previousUidFirewallRule = mCm.getUidFirewallRule(chain, targetUid);
|
||||||
final Socket socket = new Socket(TEST_HOST, HTTP_PORT);
|
final Socket socket = new Socket(TEST_HOST, HTTP_PORT);
|
||||||
socket.setSoTimeout(NETWORK_REQUEST_TIMEOUT_MS);
|
socket.setSoTimeout(NETWORK_REQUEST_TIMEOUT_MS);
|
||||||
@@ -3606,12 +3618,12 @@ public class ConnectivityManagerTest {
|
|||||||
mCm.setFirewallChainEnabled(chain, false /* enable */);
|
mCm.setFirewallChainEnabled(chain, false /* enable */);
|
||||||
assertSocketOpen(socket);
|
assertSocketOpen(socket);
|
||||||
|
|
||||||
try {
|
setUidFirewallRule(chain, targetUid, rule);
|
||||||
mCm.setUidFirewallRule(chain, targetUid, rule);
|
if (targetUid != myUid) {
|
||||||
} catch (IllegalStateException ignored) {
|
// If this test does not set rule on myUid, remove existing rule on myUid
|
||||||
// Removing match causes an exception when the rule entry for the uid does
|
setUidFirewallRule(chain, myUid, FIREWALL_RULE_DEFAULT);
|
||||||
// not exist. But this is fine and can be ignored.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mCm.setFirewallChainEnabled(chain, true /* enable */);
|
mCm.setFirewallChainEnabled(chain, true /* enable */);
|
||||||
|
|
||||||
if (expectClose) {
|
if (expectClose) {
|
||||||
@@ -3624,11 +3636,9 @@ public class ConnectivityManagerTest {
|
|||||||
mCm.setFirewallChainEnabled(chain, wasChainEnabled);
|
mCm.setFirewallChainEnabled(chain, wasChainEnabled);
|
||||||
}, /* cleanup */ () -> {
|
}, /* cleanup */ () -> {
|
||||||
// Restore the uid firewall rule status
|
// Restore the uid firewall rule status
|
||||||
try {
|
setUidFirewallRule(chain, targetUid, previousUidFirewallRule);
|
||||||
mCm.setUidFirewallRule(chain, targetUid, previousUidFirewallRule);
|
if (targetUid != myUid) {
|
||||||
} catch (IllegalStateException ignored) {
|
setUidFirewallRule(chain, myUid, previousMyUidFirewallRule);
|
||||||
// Removing match causes an exception when the rule entry for the uid does
|
|
||||||
// not exist. But this is fine and can be ignored.
|
|
||||||
}
|
}
|
||||||
}, /* cleanup */ () -> {
|
}, /* cleanup */ () -> {
|
||||||
socket.close();
|
socket.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user