Merge "No-op refactoring of VPN lockdown status check."

am: 5c67de8417

Change-Id: I8aab0dd1556b49cafc08d57a8981051ba437fe44
This commit is contained in:
Junyu Lai
2018-10-25 22:50:34 -07:00
committed by android-build-merger
3 changed files with 20 additions and 11 deletions

View File

@@ -1143,7 +1143,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
synchronized (mVpns) {
final Vpn vpn = mVpns.get(UserHandle.getUserId(uid));
if (vpn != null && vpn.isBlockingUid(uid)) {
if (vpn != null && vpn.getLockdown() && vpn.isBlockingUid(uid)) {
return true;
}
}
@@ -1736,7 +1736,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
// list all state depending on the return value of this function has to be recomputed.
// TODO: add a trigger when the always-on VPN sets its blocked UIDs to reevaluate and
// send the necessary onBlockedStatusChanged callbacks.
if (vpn != null && vpn.isBlockingUid(uid)) {
if (vpn != null && vpn.getLockdown() && vpn.isBlockingUid(uid)) {
return true;
}
}

View File

@@ -380,6 +380,15 @@ public class Vpn {
}
}
/**
* Check whether to prevent all traffic outside of a VPN even when the VPN is not connected.
*
* @return {@code true} if VPN lockdown is enabled.
*/
public boolean getLockdown() {
return mLockdown;
}
/**
* Checks if a VPN app supports always-on mode.
*
@@ -1533,17 +1542,15 @@ public class Vpn {
}
/**
* @return {@code true} if {@param uid} is blocked by an always-on VPN.
* A UID is blocked if it's included in one of the mBlockedUsers ranges and the VPN is
* not connected, or if the VPN is connected but does not apply to the UID.
* @param uid The target uid.
*
* @return {@code true} if {@code uid} is included in one of the mBlockedUsers ranges and the
* VPN is not connected, or if the VPN is connected but does not apply to the {@code uid}.
*
* @apiNote This method don't check VPN lockdown status.
* @see #mBlockedUsers
*/
public synchronized boolean isBlockingUid(int uid) {
if (!mLockdown) {
return false;
}
if (mNetworkInfo.isConnected()) {
return !appliesToUid(uid);
} else {

View File

@@ -507,13 +507,15 @@ public class VpnTest {
private static void assertBlocked(Vpn vpn, int... uids) {
for (int uid : uids) {
assertTrue("Uid " + uid + " should be blocked", vpn.isBlockingUid(uid));
final boolean blocked = vpn.getLockdown() && vpn.isBlockingUid(uid);
assertTrue("Uid " + uid + " should be blocked", blocked);
}
}
private static void assertUnblocked(Vpn vpn, int... uids) {
for (int uid : uids) {
assertFalse("Uid " + uid + " should not be blocked", vpn.isBlockingUid(uid));
final boolean blocked = vpn.getLockdown() && vpn.isBlockingUid(uid);
assertFalse("Uid " + uid + " should not be blocked", blocked);
}
}