diff options
author | Robin Lee <rgl@google.com> | 2015-05-12 18:14:58 +0100 |
---|---|---|
committer | Robin Lee <rgl@google.com> | 2015-05-18 23:35:31 +0100 |
commit | 3b3dd942ec6a0beaccd1cef0723d72786435d8f3 (patch) | |
tree | 6bf3cc9895290fa3ec9a509fb87d30afb649697e /packages/VpnDialogs | |
parent | 0125d76fa37d26a29f06371ff349546e21cd3f4d (diff) | |
download | frameworks_base-3b3dd942ec6a0beaccd1cef0723d72786435d8f3.zip frameworks_base-3b3dd942ec6a0beaccd1cef0723d72786435d8f3.tar.gz frameworks_base-3b3dd942ec6a0beaccd1cef0723d72786435d8f3.tar.bz2 |
Support cross-user VPN calls (with permission)
Settings and SystemUI need to act on other users than USER_OWNER.
This is gated by INTERACT_ACROSS_USERS_FULL in addition to the existing
CONTROL_VPN checks, so the number of processes able to interfere with
other profiles' VPNs should be quite small.
Bug: 20692490
Bug: 20747154
Bug: 20872408
Change-Id: I6e5d7220f73435bec350719e7b4715935caf4e19
Diffstat (limited to 'packages/VpnDialogs')
-rw-r--r-- | packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java | 7 | ||||
-rw-r--r-- | packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java | 8 |
2 files changed, 9 insertions, 6 deletions
diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java index ea8b2ec..48e0582 100644 --- a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java +++ b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java @@ -21,6 +21,7 @@ import android.content.DialogInterface; import android.graphics.drawable.Drawable; import android.net.IConnectivityManager; import android.os.ServiceManager; +import android.os.UserHandle; import android.text.Html; import android.text.Html.ImageGetter; import android.util.Log; @@ -50,7 +51,7 @@ public class ConfirmDialog extends AlertActivity mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); - if (mService.prepareVpn(mPackage, null)) { + if (mService.prepareVpn(mPackage, null, UserHandle.myUserId())) { setResult(RESULT_OK); finish(); return; @@ -94,10 +95,10 @@ public class ConfirmDialog extends AlertActivity @Override public void onClick(DialogInterface dialog, int which) { try { - if (mService.prepareVpn(null, mPackage)) { + if (mService.prepareVpn(null, mPackage, UserHandle.myUserId())) { // Authorize this app to initiate VPN connections in the future without user // intervention. - mService.setVpnPackageAuthorization(true); + mService.setVpnPackageAuthorization(mPackage, UserHandle.myUserId(), true); setResult(RESULT_OK); } } catch (Exception e) { diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java index cc8500a..76b2346 100644 --- a/packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java +++ b/packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java @@ -23,6 +23,7 @@ import android.os.Handler; import android.os.Message; import android.os.ServiceManager; import android.os.SystemClock; +import android.os.UserHandle; import android.util.Log; import android.view.View; import android.widget.TextView; @@ -63,7 +64,7 @@ public class ManageDialog extends AlertActivity implements mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); - mConfig = mService.getVpnConfig(); + mConfig = mService.getVpnConfig(UserHandle.myUserId()); // mConfig can be null if we are a restricted user, in that case don't show this dialog if (mConfig == null) { @@ -120,10 +121,11 @@ public class ManageDialog extends AlertActivity implements if (which == DialogInterface.BUTTON_POSITIVE) { mConfig.configureIntent.send(); } else if (which == DialogInterface.BUTTON_NEUTRAL) { + final int myUserId = UserHandle.myUserId(); if (mConfig.legacy) { - mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN); + mService.prepareVpn(VpnConfig.LEGACY_VPN, VpnConfig.LEGACY_VPN, myUserId); } else { - mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN); + mService.prepareVpn(mConfig.user, VpnConfig.LEGACY_VPN, myUserId); } } } catch (Exception e) { |