diff options
Diffstat (limited to 'wifi/java/android/net/wifi/WifiConfiguration.java')
-rw-r--r-- | wifi/java/android/net/wifi/WifiConfiguration.java | 133 |
1 files changed, 131 insertions, 2 deletions
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java index 22c236e..2bb1cc5 100644 --- a/wifi/java/android/net/wifi/WifiConfiguration.java +++ b/wifi/java/android/net/wifi/WifiConfiguration.java @@ -17,9 +17,9 @@ package android.net.wifi; import android.annotation.SystemApi; +import android.content.pm.PackageManager; import android.net.IpConfiguration; import android.net.IpConfiguration.ProxySettings; -import android.net.IpConfiguration.IpAssignment; import android.net.ProxyInfo; import android.net.StaticIpConfiguration; import android.os.Parcel; @@ -398,12 +398,34 @@ public class WifiConfiguration implements Parcelable { /** * @hide + * Universal name for app creating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String creatorName; + + /** + * @hide + * Universal name for app updating the configuration + * see {#link {@link PackageManager#getNameForUid(int)} + */ + @SystemApi + public String lastUpdateName; + + /** + * @hide * Uid used by autoJoin */ public String autoJoinBSSID; /** * @hide + * Status of user approval for connection + */ + public int userApproved = USER_UNSPECIFIED; + + /** + * @hide * BSSID list on which this configuration was seen. * TODO: prevent this list to grow infinitely, age-out the results */ @@ -649,6 +671,28 @@ public class WifiConfiguration implements Parcelable { /** @hide */ public static final int AUTO_JOIN_DELETED = 200; + // States for the userApproved field + /** + * @hide + * User hasn't specified if connection is okay + */ + public static final int USER_UNSPECIFIED = 0; + /** + * @hide + * User has approved this for connection + */ + public static final int USER_APPROVED = 1; + /** + * @hide + * User has banned this from connection + */ + public static final int USER_BANNED = 2; + /** + * @hide + * Waiting for user input + */ + public static final int USER_PENDING = 3; + /** * @hide */ @@ -708,6 +752,31 @@ public class WifiConfiguration implements Parcelable { /** * @hide + * Last time the system tried to roam and failed because of authentication failure or DHCP + * RENEW failure. + */ + public long lastRoamingFailure; + + /** @hide */ + public static int ROAMING_FAILURE_IP_CONFIG = 1; + /** @hide */ + public static int ROAMING_FAILURE_AUTH_FAILURE = 2; + + /** + * @hide + * Initial amount of time this Wifi configuration gets blacklisted for network switching + * because of roaming failure + */ + public long roamingFailureBlackListTimeMilli = 1000; + + /** + * @hide + * Last roaming failure reason code + */ + public int lastRoamingFailureReason; + + /** + * @hide * Last time the system was disconnected to this configuration. */ public long lastDisconnected; @@ -877,6 +946,8 @@ public class WifiConfiguration implements Parcelable { ephemeral = false; validatedInternetAccess = false; mIpConfiguration = new IpConfiguration(); + lastUpdateUid = -1; + creatorUid = -1; } /** @@ -921,6 +992,15 @@ public class WifiConfiguration implements Parcelable { } /** + * Helper function, idenfity if a configuration should be treated as an enterprise network + * @hide + */ + public boolean isEnterprise() { + return allowedKeyManagement.get(KeyMgmt.WPA_EAP) || + allowedKeyManagement.get(KeyMgmt.IEEE8021X); + } + + /** * most recent time we have seen this configuration * @return most recent scanResult * @hide @@ -1137,7 +1217,6 @@ public class WifiConfiguration implements Parcelable { sbuf.append("IP config:\n"); sbuf.append(mIpConfiguration.toString()); - if (this.creatorUid != 0) sbuf.append(" uid=" + Integer.toString(creatorUid)); if (this.autoJoinBSSID != null) sbuf.append(" autoJoinBSSID=" + autoJoinBSSID); long now_ms = System.currentTimeMillis(); if (this.blackListTimestamp != 0) { @@ -1149,6 +1228,12 @@ public class WifiConfiguration implements Parcelable { sbuf.append(" blackListed: ").append(Long.toString(diff/1000)).append( "sec"); } } + if (creatorUid != 0) sbuf.append(" cuid=" + Integer.toString(creatorUid)); + if (creatorName != null) sbuf.append(" cname=" + creatorName); + if (lastUpdateUid != 0) sbuf.append(" luid=" + lastUpdateUid); + if (lastUpdateName != null) sbuf.append(" lname=" + lastUpdateName); + sbuf.append("userApproved=" + userApprovedAsString(userApproved)); + if (this.lastConnected != 0) { sbuf.append('\n'); long diff = now_ms - this.lastConnected; @@ -1168,6 +1253,18 @@ public class WifiConfiguration implements Parcelable { sbuf.append( "sec"); } } + if (this.lastRoamingFailure != 0) { + sbuf.append('\n'); + long diff = now_ms - this.lastRoamingFailure; + if (diff <= 0) { + sbuf.append("lastRoamingFailure since <incorrect>"); + } else { + sbuf.append("lastRoamingFailure: ").append(Long.toString(diff/1000)); + sbuf.append( "sec"); + } + } + sbuf.append("roamingFailureBlackListTimeMilli: "). + append(Long.toString(this.roamingFailureBlackListTimeMilli)); sbuf.append('\n'); if (this.linkedConfigurations != null) { for(String key : this.linkedConfigurations.keySet()) { @@ -1273,6 +1370,20 @@ public class WifiConfiguration implements Parcelable { return SSID; } + /** @hide **/ + public static String userApprovedAsString(int userApproved) { + switch (userApproved) { + case USER_APPROVED: + return "USER_APPROVED"; + case USER_BANNED: + return "USER_BANNED"; + case USER_UNSPECIFIED: + return "USER_UNSPECIFIED"; + default: + return "INVALID"; + } + } + /** * Get an identifier for associating credentials with this config * @param current configuration contains values for additional fields @@ -1536,11 +1647,16 @@ public class WifiConfiguration implements Parcelable { lastConnectUid = source.lastConnectUid; lastUpdateUid = source.lastUpdateUid; creatorUid = source.creatorUid; + creatorName = source.creatorName; + lastUpdateName = source.lastUpdateName; peerWifiConfiguration = source.peerWifiConfiguration; blackListTimestamp = source.blackListTimestamp; lastConnected = source.lastConnected; lastDisconnected = source.lastDisconnected; lastConnectionFailure = source.lastConnectionFailure; + lastRoamingFailure = source.lastRoamingFailure; + lastRoamingFailureReason = source.lastRoamingFailureReason; + roamingFailureBlackListTimeMilli = source.roamingFailureBlackListTimeMilli; numConnectionFailures = source.numConnectionFailures; numIpConfigFailures = source.numIpConfigFailures; numAuthFailures = source.numAuthFailures; @@ -1559,6 +1675,7 @@ public class WifiConfiguration implements Parcelable { = source.autoJoinUseAggressiveJoinAttemptThreshold; autoJoinBailedDueToLowRssi = source.autoJoinBailedDueToLowRssi; dirty = source.dirty; + userApproved = source.userApproved; numNoInternetAccessReports = source.numNoInternetAccessReports; } } @@ -1610,8 +1727,13 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(creatorUid); dest.writeInt(lastConnectUid); dest.writeInt(lastUpdateUid); + dest.writeString(creatorName); + dest.writeString(lastUpdateName); dest.writeLong(blackListTimestamp); dest.writeLong(lastConnectionFailure); + dest.writeLong(lastRoamingFailure); + dest.writeInt(lastRoamingFailureReason); + dest.writeLong(roamingFailureBlackListTimeMilli); dest.writeInt(numConnectionFailures); dest.writeInt(numIpConfigFailures); dest.writeInt(numAuthFailures); @@ -1627,6 +1749,7 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(numUserTriggeredJoinAttempts); dest.writeInt(autoJoinUseAggressiveJoinAttemptThreshold); dest.writeInt(autoJoinBailedDueToLowRssi ? 1 : 0); + dest.writeInt(userApproved); dest.writeInt(numNoInternetAccessReports); } @@ -1674,8 +1797,13 @@ public class WifiConfiguration implements Parcelable { config.creatorUid = in.readInt(); config.lastConnectUid = in.readInt(); config.lastUpdateUid = in.readInt(); + config.creatorName = in.readString(); + config.lastUpdateName = in.readString(); config.blackListTimestamp = in.readLong(); config.lastConnectionFailure = in.readLong(); + config.lastRoamingFailure = in.readLong(); + config.lastRoamingFailureReason = in.readInt(); + config.roamingFailureBlackListTimeMilli = in.readLong(); config.numConnectionFailures = in.readInt(); config.numIpConfigFailures = in.readInt(); config.numAuthFailures = in.readInt(); @@ -1691,6 +1819,7 @@ public class WifiConfiguration implements Parcelable { config.numUserTriggeredJoinAttempts = in.readInt(); config.autoJoinUseAggressiveJoinAttemptThreshold = in.readInt(); config.autoJoinBailedDueToLowRssi = in.readInt() != 0; + config.userApproved = in.readInt(); config.numNoInternetAccessReports = in.readInt(); return config; } |