diff --git a/core/java/com/android/internal/net/VpnConfig.java b/core/java/com/android/internal/net/VpnConfig.java index 06ee9d1cf0b02..3f6f5ad078612 100644 --- a/core/java/com/android/internal/net/VpnConfig.java +++ b/core/java/com/android/internal/net/VpnConfig.java @@ -23,6 +23,8 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; +import java.util.List; + /** * A simple container used to carry information in VpnBuilder, VpnDialogs, * and com.android.server.connectivity.Vpn. Internal use only. @@ -62,7 +64,8 @@ public class VpnConfig implements Parcelable { public int mtu = -1; public String addresses; public String routes; - public String dnsServers; + public List dnsServers; + public List searchDomains; public long startTime = -1; @Override @@ -79,7 +82,8 @@ public class VpnConfig implements Parcelable { out.writeInt(mtu); out.writeString(addresses); out.writeString(routes); - out.writeString(dnsServers); + out.writeStringList(dnsServers); + out.writeStringList(searchDomains); out.writeLong(startTime); } @@ -95,7 +99,8 @@ public class VpnConfig implements Parcelable { config.mtu = in.readInt(); config.addresses = in.readString(); config.routes = in.readString(); - config.dnsServers = in.readString(); + config.dnsServers = in.createStringArrayList(); + config.searchDomains = in.createStringArrayList(); config.startTime = in.readLong(); return config; } diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java index 8fb6274a7afbe..663f4f47f56ea 100644 --- a/services/java/com/android/server/ConnectivityService.java +++ b/services/java/com/android/server/ConnectivityService.java @@ -2533,7 +2533,7 @@ public class ConnectivityService extends IConnectivityManager.Stub { private VpnCallback() { } - public synchronized void override(String[] dnsServers) { + public synchronized void override(List dnsServers, List searchDomains) { // TODO: override DNS servers and http proxy. } diff --git a/services/java/com/android/server/connectivity/Vpn.java b/services/java/com/android/server/connectivity/Vpn.java index 5c0fa37ece440..fd4e1782ff64e 100644 --- a/services/java/com/android/server/connectivity/Vpn.java +++ b/services/java/com/android/server/connectivity/Vpn.java @@ -190,11 +190,14 @@ public class Vpn extends INetworkManagementEventObserver.Stub { throw e; } - String dnsServers = (config.dnsServers == null) ? "" : config.dnsServers.trim(); - mCallback.override(dnsServers.isEmpty() ? null : dnsServers.split(" ")); + // Override DNS servers and search domains. + mCallback.override(config.dnsServers, config.searchDomains); + // Fill more values. config.packageName = mPackageName; config.interfaceName = mInterfaceName; + + // Show the notification! showNotification(config, label, bitmap); return descriptor; }