Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1434c086 authored by Lorenzo Colitti's avatar Lorenzo Colitti
Browse files

Stop using ConnectivityManager for VPNs.

These methods have all moved to VpnManager.

Bug: 173331190
Test: atest SettingsRoboTests
Change-Id: I1dd57fa2213b1785a94ec9d6ab4cce3a5d2684ff
Merged-In: I1dd57fa2213b1785a94ec9d6ab4cce3a5d2684ff
parent ace5a908
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
@@ -45,18 +46,20 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe
    private final PackageManager mPm;
    private final UserManager mUm;
    private final ConnectivityManager mCm;
    private final VpnManager mVm;
    private final Resources mResources;

    private static final int MY_USER_ID = UserHandle.myUserId();

    public EnterprisePrivacyFeatureProviderImpl(Context context, DevicePolicyManager dpm,
            PackageManager pm, UserManager um, ConnectivityManager cm,
            PackageManager pm, UserManager um, ConnectivityManager cm, VpnManager vm,
            Resources resources) {
        mContext = context.getApplicationContext();
        mDpm = dpm;
        mPm = pm;
        mUm = um;
        mCm = cm;
        mVm = vm;
        mResources = resources;
    }

@@ -130,14 +133,14 @@ public class EnterprisePrivacyFeatureProviderImpl implements EnterprisePrivacyFe

    @Override
    public boolean isAlwaysOnVpnSetInCurrentUser() {
        return VpnUtils.isAlwaysOnVpnSet(mCm, MY_USER_ID);
        return VpnUtils.isAlwaysOnVpnSet(mVm, MY_USER_ID);
    }

    @Override
    public boolean isAlwaysOnVpnSetInManagedProfile() {
        final int managedProfileUserId = getManagedProfileUserId();
        return managedProfileUserId != UserHandle.USER_NULL &&
                VpnUtils.isAlwaysOnVpnSet(mCm, managedProfileUserId);
                VpnUtils.isAlwaysOnVpnSet(mVm, managedProfileUserId);
    }

    @Override
+3 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.AppGlobals;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.UserManager;

import androidx.annotation.Keep;
@@ -169,7 +170,8 @@ public class FeatureFactoryImpl extends FeatureFactory {
                            Context.DEVICE_POLICY_SERVICE),
                    appContext.getPackageManager(),
                    UserManager.get(appContext),
                    (ConnectivityManager) appContext.getSystemService(Context.CONNECTIVITY_SERVICE),
                    appContext.getSystemService(ConnectivityManager.class),
                    appContext.getSystemService(VpnManager.class),
                    appContext.getResources());
        }
        return mEnterprisePrivacyFeatureProvider;
+2 −5
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.DialogInterface;
import android.content.pm.PackageInfo;
import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.Bundle;
import android.os.UserHandle;
@@ -48,7 +47,6 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
    private PackageInfo mPackageInfo;
    private Listener mListener;

    private ConnectivityManager mConnectivityManager;
    private UserManager mUserManager;
    private VpnManager mVpnManager;

@@ -93,7 +91,6 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
        mUserManager = UserManager.get(getContext());
        mVpnManager = getContext().getSystemService(VpnManager.class);
    }
@@ -158,8 +155,8 @@ public class AppDialogFragment extends InstrumentedDialogFragment implements App
        }
        final int userId = getUserId();
        if (mPackageInfo.packageName.equals(VpnUtils.getConnectedPackage(mVpnManager, userId))) {
            mConnectivityManager.setAlwaysOnVpnPackageForUser(userId, null,
                    /* lockdownEnabled */ false, /* lockdownAllowlist */ null);
            mVpnManager.setAlwaysOnVpnPackageForUser(userId, null, /* lockdownEnabled */ false,
                    /* lockdownAllowlist */ null);
            mVpnManager.prepareVpn(mPackageInfo.packageName, VpnConfig.LEGACY_VPN, userId);
        }
    }
+4 −7
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.Bundle;
import android.os.UserHandle;
@@ -69,7 +68,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment

    private PackageManager mPackageManager;
    private DevicePolicyManager mDevicePolicyManager;
    private ConnectivityManager mConnectivityManager;
    private VpnManager mVpnManager;

    // VPN app info
@@ -122,7 +120,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment

        mPackageManager = getContext().getPackageManager();
        mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
        mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
        mVpnManager = getContext().getSystemService(VpnManager.class);

        mPreferenceVersion = findPreference(KEY_VERSION);
@@ -227,8 +224,8 @@ public class AppManagementFragment extends SettingsPreferenceFragment
    }

    private boolean setAlwaysOnVpn(boolean isEnabled, boolean isLockdown) {
        return mConnectivityManager.setAlwaysOnVpnPackageForUser(mUserId,
                isEnabled ? mPackageName : null, isLockdown, /* lockdownWhitelist */ null);
        return mVpnManager.setAlwaysOnVpnPackageForUser(mUserId,
                isEnabled ? mPackageName : null, isLockdown, /* lockdownAllowlist */ null);
    }

    private void updateUI() {
@@ -261,7 +258,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
                    mPreferenceLockdown.setDisabledByAdmin(admin);
                }
            }
            if (mConnectivityManager.isAlwaysOnVpnPackageSupportedForUser(mUserId, mPackageName)) {
            if (mVpnManager.isAlwaysOnVpnPackageSupportedForUser(mUserId, mPackageName)) {
                // setSummary doesn't override the admin message when user restriction is applied
                mPreferenceAlwaysOn.setSummary(R.string.vpn_always_on_summary);
                // setEnabled is not required here, as checkRestrictionAndSetDisabled
@@ -275,7 +272,7 @@ public class AppManagementFragment extends SettingsPreferenceFragment
    }

    private String getAlwaysOnVpnPackage() {
        return mConnectivityManager.getAlwaysOnVpnPackageForUser(mUserId);
        return mVpnManager.getAlwaysOnVpnPackageForUser(mUserId);
    }

    private boolean isVpnAlwaysOn() {
+2 −4
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.app.Dialog;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.VpnManager;
import android.os.Bundle;
import android.os.RemoteException;
@@ -177,9 +176,8 @@ public class ConfigDialogFragment extends InstrumentedDialogFragment implements
                return;
            }

            final ConnectivityManager conn = ConnectivityManager.from(mContext);
            conn.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null,
                    /* lockdownEnabled */ false, /* lockdownWhitelist */ null);
            mService.setAlwaysOnVpnPackageForUser(UserHandle.myUserId(), null,
                    /* lockdownEnabled */ false, /* lockdownAllowlist */ null);
            VpnUtils.setLockdownVpn(mContext, profile.key);
        } else {
            // update only if lockdown vpn has been changed
Loading