Search in sources :

Example 31 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_packages_apps_Settings by SudaMod.

the class ConfigDialogFragment method onConfirmLockdown.

@Override
public void onConfirmLockdown(Bundle options, boolean isAlwaysOn, boolean isLockdown) {
    VpnProfile profile = (VpnProfile) options.getParcelable(ARG_PROFILE);
    connect(profile, isAlwaysOn);
    dismiss();
}
Also used : VpnProfile(com.android.internal.net.VpnProfile)

Example 32 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_packages_apps_Settings by SudaMod.

the class ConfigDialogFragment method onClick.

@Override
public void onClick(DialogInterface dialogInterface, int button) {
    ConfigDialog dialog = (ConfigDialog) getDialog();
    VpnProfile profile = dialog.getProfile();
    if (button == DialogInterface.BUTTON_POSITIVE) {
        // Possibly throw up a dialog to explain lockdown VPN.
        final boolean shouldLockdown = dialog.isVpnAlwaysOn();
        final boolean shouldConnect = shouldLockdown || !dialog.isEditing();
        final boolean wasLockdown = VpnUtils.isAnyLockdownActive(mContext);
        try {
            final boolean replace = VpnUtils.isVpnActive(mContext);
            if (shouldConnect && !isConnected(profile) && ConfirmLockdownFragment.shouldShow(replace, wasLockdown, shouldLockdown)) {
                final Bundle opts = new Bundle();
                opts.putParcelable(ARG_PROFILE, profile);
                ConfirmLockdownFragment.show(this, replace, /* alwaysOn */
                shouldLockdown, /* from */
                wasLockdown, /* to */
                shouldLockdown, opts);
            } else if (shouldConnect) {
                connect(profile, shouldLockdown);
            } else {
                save(profile, false);
            }
        } catch (RemoteException e) {
            Log.w(TAG, "Failed to check active VPN state. Skipping.", e);
        }
    } else if (button == DialogInterface.BUTTON_NEUTRAL) {
        // Disable profile if connected
        if (!disconnect(profile)) {
            Log.e(TAG, "Failed to disconnect VPN. Leaving profile in keystore.");
            return;
        }
        // Delete from KeyStore
        KeyStore keyStore = KeyStore.getInstance();
        keyStore.delete(Credentials.VPN + profile.key, KeyStore.UID_SELF);
        updateLockdownVpn(false, profile);
    }
    dismiss();
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) Bundle(android.os.Bundle) RemoteException(android.os.RemoteException) KeyStore(android.security.KeyStore)

Example 33 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_packages_apps_Settings by SudaMod.

the class VpnSettings method onPreferenceClick.

@Override
public boolean onPreferenceClick(Preference preference) {
    if (preference instanceof LegacyVpnPreference) {
        LegacyVpnPreference pref = (LegacyVpnPreference) preference;
        VpnProfile profile = pref.getProfile();
        if (mConnectedLegacyVpn != null && profile.key.equals(mConnectedLegacyVpn.key) && mConnectedLegacyVpn.state == LegacyVpnInfo.STATE_CONNECTED) {
            try {
                mConnectedLegacyVpn.intent.send();
                return true;
            } catch (Exception e) {
                Log.w(LOG_TAG, "Starting config intent failed", e);
            }
        }
        ConfigDialogFragment.show(this, profile, false, /* editing */
        true);
        return true;
    } else if (preference instanceof AppPreference) {
        AppPreference pref = (AppPreference) preference;
        boolean connected = (pref.getState() == AppPreference.STATE_CONNECTED);
        if (!connected) {
            try {
                UserHandle user = UserHandle.of(pref.getUserId());
                Context userContext = getActivity().createPackageContextAsUser(getActivity().getPackageName(), 0, /* flags */
                user);
                PackageManager pm = userContext.getPackageManager();
                Intent appIntent = pm.getLaunchIntentForPackage(pref.getPackageName());
                if (appIntent != null) {
                    userContext.startActivityAsUser(appIntent, user);
                    return true;
                }
            } catch (PackageManager.NameNotFoundException nnfe) {
                Log.w(LOG_TAG, "VPN provider does not exist: " + pref.getPackageName(), nnfe);
            }
        }
        // Already connected or no launch intent available - show an info dialog
        PackageInfo pkgInfo = pref.getPackageInfo();
        AppDialogFragment.show(this, pkgInfo, pref.getLabel(), false, /* editing */
        connected);
        return true;
    }
    return false;
}
Also used : Context(android.content.Context) VpnProfile(com.android.internal.net.VpnProfile) PackageManager(android.content.pm.PackageManager) PackageInfo(android.content.pm.PackageInfo) UserHandle(android.os.UserHandle) Intent(android.content.Intent) RemoteException(android.os.RemoteException)

Example 34 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_packages_apps_Settings by DirtyUnicorns.

the class VpnSettings method onPreferenceClick.

@Override
public boolean onPreferenceClick(Preference preference) {
    if (preference instanceof LegacyVpnPreference) {
        LegacyVpnPreference pref = (LegacyVpnPreference) preference;
        VpnProfile profile = pref.getProfile();
        if (mConnectedLegacyVpn != null && profile.key.equals(mConnectedLegacyVpn.key) && mConnectedLegacyVpn.state == LegacyVpnInfo.STATE_CONNECTED) {
            try {
                mConnectedLegacyVpn.intent.send();
                return true;
            } catch (Exception e) {
                Log.w(LOG_TAG, "Starting config intent failed", e);
            }
        }
        ConfigDialogFragment.show(this, profile, false, /* editing */
        true);
        return true;
    } else if (preference instanceof AppPreference) {
        AppPreference pref = (AppPreference) preference;
        boolean connected = (pref.getState() == AppPreference.STATE_CONNECTED);
        if (!connected) {
            try {
                UserHandle user = UserHandle.of(pref.getUserId());
                Context userContext = getActivity().createPackageContextAsUser(getActivity().getPackageName(), 0, /* flags */
                user);
                PackageManager pm = userContext.getPackageManager();
                Intent appIntent = pm.getLaunchIntentForPackage(pref.getPackageName());
                if (appIntent != null) {
                    userContext.startActivityAsUser(appIntent, user);
                    return true;
                }
            } catch (PackageManager.NameNotFoundException nnfe) {
                Log.w(LOG_TAG, "VPN provider does not exist: " + pref.getPackageName(), nnfe);
            }
        }
        // Already connected or no launch intent available - show an info dialog
        PackageInfo pkgInfo = pref.getPackageInfo();
        AppDialogFragment.show(this, pkgInfo, pref.getLabel(), false, /* editing */
        connected);
        return true;
    }
    return false;
}
Also used : Context(android.content.Context) VpnProfile(com.android.internal.net.VpnProfile) PackageManager(android.content.pm.PackageManager) PackageInfo(android.content.pm.PackageInfo) UserHandle(android.os.UserHandle) Intent(android.content.Intent) RemoteException(android.os.RemoteException)

Example 35 with VpnProfile

use of com.android.internal.net.VpnProfile in project android_packages_apps_Settings by DirtyUnicorns.

the class ConfigDialogFragment method onCreateDialog.

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    Bundle args = getArguments();
    VpnProfile profile = (VpnProfile) args.getParcelable(ARG_PROFILE);
    boolean editing = args.getBoolean(ARG_EDITING);
    boolean exists = args.getBoolean(ARG_EXISTS);
    final Dialog dialog = new ConfigDialog(getActivity(), this, profile, editing, exists);
    dialog.setOnShowListener(this);
    return dialog;
}
Also used : VpnProfile(com.android.internal.net.VpnProfile) Bundle(android.os.Bundle) Dialog(android.app.Dialog) AlertDialog(android.app.AlertDialog)

Aggregations

VpnProfile (com.android.internal.net.VpnProfile)118 LegacyVpnInfo (com.android.internal.net.LegacyVpnInfo)63 LargeTest (android.test.suitebuilder.annotation.LargeTest)42 SmallTest (android.test.suitebuilder.annotation.SmallTest)21 VpnSettings (com.android.settings.vpn2.VpnSettings)18 Context (android.content.Context)14 Bundle (android.os.Bundle)14 RemoteException (android.os.RemoteException)14 WorkerThread (android.annotation.WorkerThread)7 Activity (android.app.Activity)7 Dialog (android.app.Dialog)7 Intent (android.content.Intent)7 PackageInfo (android.content.pm.PackageInfo)7 PackageManager (android.content.pm.PackageManager)7 UserHandle (android.os.UserHandle)7 KeyStore (android.security.KeyStore)7 AlertDialog (android.app.AlertDialog)6 LockdownVpnTracker (com.android.server.net.LockdownVpnTracker)6 ArgumentMatcher (org.mockito.compat.ArgumentMatcher)6 NetworkPolicyManager.uidRulesToString (android.net.NetworkPolicyManager.uidRulesToString)5