Loading core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -124,6 +124,8 @@ interface IConnectivityManager ParcelFileDescriptor establishVpn(in VpnConfig config); ParcelFileDescriptor establishVpn(in VpnConfig config); VpnConfig getVpnConfig(); void startLegacyVpn(in VpnProfile profile); void startLegacyVpn(in VpnProfile profile); LegacyVpnInfo getLegacyVpnInfo(); LegacyVpnInfo getLegacyVpnInfo(); Loading core/java/com/android/internal/net/VpnConfig.java +3 −5 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Context; import android.content.Intent; import android.content.Intent; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.os.UserHandle; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.LinkAddress; import android.net.LinkAddress; Loading Loading @@ -50,15 +51,12 @@ public class VpnConfig implements Parcelable { return intent; return intent; } } public static PendingIntent getIntentForStatusPanel(Context context, VpnConfig config) { public static PendingIntent getIntentForStatusPanel(Context context) { Preconditions.checkNotNull(config); Intent intent = new Intent(); Intent intent = new Intent(); intent.setClassName(DIALOGS_PACKAGE, DIALOGS_PACKAGE + ".ManageDialog"); intent.setClassName(DIALOGS_PACKAGE, DIALOGS_PACKAGE + ".ManageDialog"); intent.putExtra("config", config); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); return PendingIntent.getActivityAsUser(context, 0, intent, 0, null, UserHandle.CURRENT); } } public String user; public String user; Loading packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -65,11 +65,18 @@ public class ManageDialog extends AlertActivity implements } } try { try { mConfig = getIntent().getParcelableExtra("config"); mService = IConnectivityManager.Stub.asInterface( mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mConfig = mService.getVpnConfig(); // mConfig can be null if we are a restricted user, in that case don't show this dialog if (mConfig == null) { finish(); return; } View view = View.inflate(this, R.layout.manage, null); View view = View.inflate(this, R.layout.manage, null); if (mConfig.session != null) { if (mConfig.session != null) { ((TextView) view.findViewById(R.id.session)).setText(mConfig.session); ((TextView) view.findViewById(R.id.session)).setText(mConfig.session); Loading services/java/com/android/server/ConnectivityService.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -3446,6 +3446,20 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } /** * Returns the information of the ongoing VPN. This method is used by VpnDialogs and * not available in ConnectivityManager. * Permissions are checked in Vpn class. * @hide */ @Override public VpnConfig getVpnConfig() { int user = UserHandle.getUserId(Binder.getCallingUid()); synchronized(mVpns) { return mVpns.get(user).getVpnConfig(); } } /** /** * Callback for VPN subsystem. Currently VPN is not adapted to the service * Callback for VPN subsystem. Currently VPN is not adapted to the service * through NetworkStateTracker since it works differently. For example, it * through NetworkStateTracker since it works differently. For example, it Loading services/java/com/android/server/connectivity/Vpn.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -519,6 +519,14 @@ public class Vpn extends BaseNetworkStateTracker { } } } } /** * Return the configuration of the currently running VPN. */ public VpnConfig getVpnConfig() { enforceControlPermission(); return mConfig; } @Deprecated @Deprecated public synchronized void interfaceStatusChanged(String iface, boolean up) { public synchronized void interfaceStatusChanged(String iface, boolean up) { try { try { Loading Loading @@ -610,7 +618,7 @@ public class Vpn extends BaseNetworkStateTracker { private void showNotification(String label, Bitmap icon, int user) { private void showNotification(String label, Bitmap icon, int user) { if (!mEnableNotif) return; if (!mEnableNotif) return; mStatusIntent = VpnConfig.getIntentForStatusPanel(mContext, mConfig); mStatusIntent = VpnConfig.getIntentForStatusPanel(mContext); NotificationManager nm = (NotificationManager) NotificationManager nm = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); mContext.getSystemService(Context.NOTIFICATION_SERVICE); Loading Loading
core/java/android/net/IConnectivityManager.aidl +2 −0 Original line number Original line Diff line number Diff line Loading @@ -124,6 +124,8 @@ interface IConnectivityManager ParcelFileDescriptor establishVpn(in VpnConfig config); ParcelFileDescriptor establishVpn(in VpnConfig config); VpnConfig getVpnConfig(); void startLegacyVpn(in VpnProfile profile); void startLegacyVpn(in VpnProfile profile); LegacyVpnInfo getLegacyVpnInfo(); LegacyVpnInfo getLegacyVpnInfo(); Loading
core/java/com/android/internal/net/VpnConfig.java +3 −5 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Context; import android.content.Intent; import android.content.Intent; import android.os.Parcel; import android.os.Parcel; import android.os.Parcelable; import android.os.Parcelable; import android.os.UserHandle; import android.net.RouteInfo; import android.net.RouteInfo; import android.net.LinkAddress; import android.net.LinkAddress; Loading Loading @@ -50,15 +51,12 @@ public class VpnConfig implements Parcelable { return intent; return intent; } } public static PendingIntent getIntentForStatusPanel(Context context, VpnConfig config) { public static PendingIntent getIntentForStatusPanel(Context context) { Preconditions.checkNotNull(config); Intent intent = new Intent(); Intent intent = new Intent(); intent.setClassName(DIALOGS_PACKAGE, DIALOGS_PACKAGE + ".ManageDialog"); intent.setClassName(DIALOGS_PACKAGE, DIALOGS_PACKAGE + ".ManageDialog"); intent.putExtra("config", config); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); return PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); return PendingIntent.getActivityAsUser(context, 0, intent, 0, null, UserHandle.CURRENT); } } public String user; public String user; Loading
packages/VpnDialogs/src/com/android/vpndialogs/ManageDialog.java +8 −1 Original line number Original line Diff line number Diff line Loading @@ -65,11 +65,18 @@ public class ManageDialog extends AlertActivity implements } } try { try { mConfig = getIntent().getParcelableExtra("config"); mService = IConnectivityManager.Stub.asInterface( mService = IConnectivityManager.Stub.asInterface( ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mConfig = mService.getVpnConfig(); // mConfig can be null if we are a restricted user, in that case don't show this dialog if (mConfig == null) { finish(); return; } View view = View.inflate(this, R.layout.manage, null); View view = View.inflate(this, R.layout.manage, null); if (mConfig.session != null) { if (mConfig.session != null) { ((TextView) view.findViewById(R.id.session)).setText(mConfig.session); ((TextView) view.findViewById(R.id.session)).setText(mConfig.session); Loading
services/java/com/android/server/ConnectivityService.java +14 −0 Original line number Original line Diff line number Diff line Loading @@ -3446,6 +3446,20 @@ public class ConnectivityService extends IConnectivityManager.Stub { } } } } /** * Returns the information of the ongoing VPN. This method is used by VpnDialogs and * not available in ConnectivityManager. * Permissions are checked in Vpn class. * @hide */ @Override public VpnConfig getVpnConfig() { int user = UserHandle.getUserId(Binder.getCallingUid()); synchronized(mVpns) { return mVpns.get(user).getVpnConfig(); } } /** /** * Callback for VPN subsystem. Currently VPN is not adapted to the service * Callback for VPN subsystem. Currently VPN is not adapted to the service * through NetworkStateTracker since it works differently. For example, it * through NetworkStateTracker since it works differently. For example, it Loading
services/java/com/android/server/connectivity/Vpn.java +9 −1 Original line number Original line Diff line number Diff line Loading @@ -519,6 +519,14 @@ public class Vpn extends BaseNetworkStateTracker { } } } } /** * Return the configuration of the currently running VPN. */ public VpnConfig getVpnConfig() { enforceControlPermission(); return mConfig; } @Deprecated @Deprecated public synchronized void interfaceStatusChanged(String iface, boolean up) { public synchronized void interfaceStatusChanged(String iface, boolean up) { try { try { Loading Loading @@ -610,7 +618,7 @@ public class Vpn extends BaseNetworkStateTracker { private void showNotification(String label, Bitmap icon, int user) { private void showNotification(String label, Bitmap icon, int user) { if (!mEnableNotif) return; if (!mEnableNotif) return; mStatusIntent = VpnConfig.getIntentForStatusPanel(mContext, mConfig); mStatusIntent = VpnConfig.getIntentForStatusPanel(mContext); NotificationManager nm = (NotificationManager) NotificationManager nm = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); mContext.getSystemService(Context.NOTIFICATION_SERVICE); Loading