diff options
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/app/NotificationManager.java | 8 | ||||
| -rw-r--r-- | core/java/android/net/ConnectivityManager.java | 9 | ||||
| -rw-r--r-- | core/java/android/net/IConnectivityManager.aidl | 2 | ||||
| -rw-r--r-- | core/java/com/android/internal/net/VpnProfile.java | 31 | ||||
| -rw-r--r-- | core/res/res/values/public.xml | 5 | ||||
| -rwxr-xr-x | core/res/res/values/strings.xml | 9 |
6 files changed, 62 insertions, 2 deletions
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java index bf83f5e..69c20b0 100644 --- a/core/java/android/app/NotificationManager.java +++ b/core/java/android/app/NotificationManager.java @@ -17,10 +17,9 @@ package android.app; import android.content.Context; -import android.os.Binder; -import android.os.RemoteException; import android.os.Handler; import android.os.IBinder; +import android.os.RemoteException; import android.os.ServiceManager; import android.util.Log; @@ -88,6 +87,11 @@ public class NotificationManager mContext = context; } + /** {@hide} */ + public static NotificationManager from(Context context) { + return (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + } + /** * Post a notification to be shown in the status bar. If a notification with * the same id has already been posted by your application and has not yet been canceled, it diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java index d30ef04..60bf4d6 100644 --- a/core/java/android/net/ConnectivityManager.java +++ b/core/java/android/net/ConnectivityManager.java @@ -912,4 +912,13 @@ public class ConnectivityManager { return false; } } + + /** {@hide} */ + public boolean updateLockdownVpn() { + try { + return mService.updateLockdownVpn(); + } catch (RemoteException e) { + return false; + } + } } diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl index dea25dd..3614045 100644 --- a/core/java/android/net/IConnectivityManager.aidl +++ b/core/java/android/net/IConnectivityManager.aidl @@ -122,4 +122,6 @@ interface IConnectivityManager void startLegacyVpn(in VpnProfile profile); LegacyVpnInfo getLegacyVpnInfo(); + + boolean updateLockdownVpn(); } diff --git a/core/java/com/android/internal/net/VpnProfile.java b/core/java/com/android/internal/net/VpnProfile.java index d6c5702..7287327 100644 --- a/core/java/com/android/internal/net/VpnProfile.java +++ b/core/java/com/android/internal/net/VpnProfile.java @@ -18,7 +18,10 @@ package com.android.internal.net; import android.os.Parcel; import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; +import java.net.InetAddress; import java.nio.charset.Charsets; /** @@ -31,6 +34,8 @@ import java.nio.charset.Charsets; * @hide */ public class VpnProfile implements Cloneable, Parcelable { + private static final String TAG = "VpnProfile"; + // Match these constants with R.array.vpn_types. public static final int TYPE_PPTP = 0; public static final int TYPE_L2TP_IPSEC_PSK = 1; @@ -124,6 +129,32 @@ public class VpnProfile implements Cloneable, Parcelable { return builder.toString().getBytes(Charsets.UTF_8); } + /** + * Test if profile is valid for lockdown, which requires IPv4 address for + * both server and DNS. Server hostnames would require using DNS before + * connection. + */ + public boolean isValidLockdownProfile() { + try { + InetAddress.parseNumericAddress(server); + + for (String dnsServer : dnsServers.split(" +")) { + InetAddress.parseNumericAddress(this.dnsServers); + } + if (TextUtils.isEmpty(dnsServers)) { + Log.w(TAG, "DNS required"); + return false; + } + + // Everything checked out above + return true; + + } catch (IllegalArgumentException e) { + Log.w(TAG, "Invalid address", e); + return false; + } + } + @Override public void writeToParcel(Parcel out, int flags) { out.writeString(key); diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index e17a05d..d761980 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1442,6 +1442,7 @@ <java-symbol type="drawable" name="stat_sys_tether_usb" /> <java-symbol type="drawable" name="stat_sys_throttled" /> <java-symbol type="drawable" name="vpn_connected" /> + <java-symbol type="drawable" name="vpn_disconnected" /> <java-symbol type="id" name="ask_checkbox" /> <java-symbol type="id" name="compat_checkbox" /> <java-symbol type="id" name="original_app_icon" /> @@ -1557,6 +1558,10 @@ <java-symbol type="string" name="vpn_text_long" /> <java-symbol type="string" name="vpn_title" /> <java-symbol type="string" name="vpn_title_long" /> + <java-symbol type="string" name="vpn_lockdown_connecting" /> + <java-symbol type="string" name="vpn_lockdown_connected" /> + <java-symbol type="string" name="vpn_lockdown_error" /> + <java-symbol type="string" name="vpn_lockdown_reset" /> <java-symbol type="string" name="wallpaper_binding_label" /> <java-symbol type="style" name="Theme.Dialog.AppError" /> <java-symbol type="style" name="Theme.Toast" /> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index b7ad1e9..e77dde7 100755 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -3272,6 +3272,15 @@ <!-- The text of the notification when VPN is active with a session name. --> <string name="vpn_text_long">Connected to <xliff:g id="session" example="office">%s</xliff:g>. Touch to manage the network.</string> + <!-- Notification title when connecting to lockdown VPN. --> + <string name="vpn_lockdown_connecting">Always-on VPN connecting\u2026</string> + <!-- Notification title when connected to lockdown VPN. --> + <string name="vpn_lockdown_connected">Always-on VPN connected</string> + <!-- Notification title when error connecting to lockdown VPN. --> + <string name="vpn_lockdown_error">Always-on VPN error</string> + <!-- Notification body that indicates user can touch to cycle lockdown VPN connection. --> + <string name="vpn_lockdown_reset">Touch to reset connection</string> + <!-- Localized strings for WebView --> <!-- Label for button in a WebView that will open a chooser to choose a file to upload --> <string name="upload_file">Choose file</string> |
