Loading wifi/java/android/net/wifi/WifiConfigStore.java +17 −84 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.net.NetworkUtils; import android.net.NetworkInfo.DetailedState; import android.net.ProxyProperties; import android.net.RouteInfo; import android.net.wifi.WifiConfiguration.EnterpriseField; import android.net.wifi.WifiConfiguration.IpAssignment; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiConfiguration.ProxySettings; Loading Loading @@ -1090,32 +1089,18 @@ class WifiConfigStore { break setVariables; } for (WifiConfiguration.EnterpriseField field : config.enterpriseFields) { String varName = field.varName(); String value = field.value(); if (value != null) { if (field == config.engine) { /* * If the field is declared as an integer, it must not * be null */ if (value.length() == 0) { value = "0"; } } else if (field != config.eap) { value = (value.length() == 0) ? "NULL" : convertToQuotedString(value); } HashMap<String, String> enterpriseFields = config.enterpriseConfig.getFields(); for (String key : enterpriseFields.keySet()) { String value = enterpriseFields.get(key); if (!mWifiNative.setNetworkVariable( netId, varName, key, value)) { loge(config.SSID + ": failed to set " + varName + loge(config.SSID + ": failed to set " + key + ": " + value); break setVariables; } } } updateFailed = false; } Loading Loading @@ -1413,78 +1398,26 @@ class WifiConfigStore { } } for (WifiConfiguration.EnterpriseField field : config.enterpriseFields) { value = mWifiNative.getNetworkVariable(netId, field.varName()); HashMap<String, String> entepriseFields = config.enterpriseConfig.getFields(); for (String key : entepriseFields.keySet()) { value = mWifiNative.getNetworkVariable(netId, key); if (!TextUtils.isEmpty(value)) { if (field != config.eap && field != config.engine) { value = removeDoubleQuotes(value); } field.setValue(value); } entepriseFields.put(key, removeDoubleQuotes(value)); } migrateOldEapTlsIfNecessary(config, netId); } /** * Migration code for old EAP-TLS configurations. This should only be used * when restoring an old wpa_supplicant.conf or upgrading from a previous * platform version. * * @param config the configuration to be migrated * @param netId the wpa_supplicant's net ID * @param value the old private_key value */ private void migrateOldEapTlsIfNecessary(WifiConfiguration config, int netId) { String value = mWifiNative.getNetworkVariable(netId, WifiConfiguration.OLD_PRIVATE_KEY_NAME); /* * If the old configuration value is not present, then there is nothing * to do. */ if (TextUtils.isEmpty(value)) { return; } else { // Also ignore it if it's empty quotes. value = removeDoubleQuotes(value); if (TextUtils.isEmpty(value)) { return; } } config.engine.setValue(WifiConfiguration.ENGINE_ENABLE); config.engine_id.setValue(convertToQuotedString(WifiConfiguration.KEYSTORE_ENGINE_ID)); /* * The old key started with the keystore:// URI prefix, but we don't * need that anymore. Trim it off if it exists. */ final String keyName; if (value.startsWith(WifiConfiguration.KEYSTORE_URI)) { keyName = new String(value.substring(WifiConfiguration.KEYSTORE_URI.length())); } else { keyName = value; } config.key_id.setValue(convertToQuotedString(keyName)); // Now tell the wpa_supplicant the new configuration values. final EnterpriseField needsUpdate[] = { config.engine, config.engine_id, config.key_id }; for (EnterpriseField field : needsUpdate) { mWifiNative.setNetworkVariable(netId, field.varName(), field.value()); } // Remove old private_key string so we don't run this again. mWifiNative.setNetworkVariable(netId, WifiConfiguration.OLD_PRIVATE_KEY_NAME, convertToQuotedString("")); if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { saveConfig(); } } private String removeDoubleQuotes(String string) { if (string.length() <= 2) return ""; return string.substring(1, string.length() - 1); int length = string.length(); if ((length > 1) && (string.charAt(0) == '"') && (string.charAt(length - 1) == '"')) { return string.substring(1, length - 1); } return string; } private String convertToQuotedString(String string) { Loading wifi/java/android/net/wifi/WifiConfiguration.java +27 −108 Original line number Diff line number Diff line Loading @@ -24,44 +24,10 @@ import java.util.BitSet; /** * A class representing a configured Wi-Fi network, including the * security configuration. Android will not necessarily support * all of these security schemes initially. * security configuration. */ public class WifiConfiguration implements Parcelable { /** * In old configurations, the "private_key" field was used. However, newer * configurations use the key_id field with the engine_id set to "keystore". * If this field is found in the configuration, the migration code is * triggered. * @hide */ public static final String OLD_PRIVATE_KEY_NAME = "private_key"; /** * String representing the keystore OpenSSL ENGINE's ID. * @hide */ public static final String KEYSTORE_ENGINE_ID = "keystore"; /** * String representing the keystore URI used for wpa_supplicant. * @hide */ public static final String KEYSTORE_URI = "keystore://"; /** * String to set the engine value to when it should be enabled. * @hide */ public static final String ENGINE_ENABLE = "1"; /** * String to set the engine value to when it should be disabled. * @hide */ public static final String ENGINE_DISABLE = "0"; private static final String TAG = "WifiConfiguration"; /** {@hide} */ public static final String ssidVarName = "ssid"; /** {@hide} */ Loading @@ -78,56 +44,6 @@ public class WifiConfiguration implements Parcelable { public static final String hiddenSSIDVarName = "scan_ssid"; /** {@hide} */ public static final int INVALID_NETWORK_ID = -1; /** {@hide} */ public class EnterpriseField { private String varName; private String value; private EnterpriseField(String varName) { this.varName = varName; this.value = null; } public void setValue(String value) { this.value = value; } public String varName() { return varName; } public String value() { return value; } } /** {@hide} */ public EnterpriseField eap = new EnterpriseField("eap"); /** {@hide} */ public EnterpriseField phase2 = new EnterpriseField("phase2"); /** {@hide} */ public EnterpriseField identity = new EnterpriseField("identity"); /** {@hide} */ public EnterpriseField anonymous_identity = new EnterpriseField("anonymous_identity"); /** {@hide} */ public EnterpriseField password = new EnterpriseField("password"); /** {@hide} */ public EnterpriseField client_cert = new EnterpriseField("client_cert"); /** {@hide} */ public EnterpriseField engine = new EnterpriseField("engine"); /** {@hide} */ public EnterpriseField engine_id = new EnterpriseField("engine_id"); /** {@hide} */ public EnterpriseField key_id = new EnterpriseField("key_id"); /** {@hide} */ public EnterpriseField ca_cert = new EnterpriseField("ca_cert"); /** {@hide} */ public EnterpriseField[] enterpriseFields = { eap, phase2, identity, anonymous_identity, password, client_cert, engine, engine_id, key_id, ca_cert }; /** * Recognized key management schemes. */ Loading Loading @@ -357,6 +273,11 @@ public class WifiConfiguration implements Parcelable { * Defaults to CCMP TKIP WEP104 WEP40. */ public BitSet allowedGroupCiphers; /** * The enterprise configuration details * @hide */ public WifiEnterpriseConfig enterpriseConfig; /** * @hide Loading Loading @@ -412,11 +333,10 @@ public class WifiConfiguration implements Parcelable { allowedPairwiseCiphers = new BitSet(); allowedGroupCiphers = new BitSet(); wepKeys = new String[4]; for (int i = 0; i < wepKeys.length; i++) for (int i = 0; i < wepKeys.length; i++) { wepKeys[i] = null; for (EnterpriseField field : enterpriseFields) { field.setValue(null); } enterpriseConfig = new WifiEnterpriseConfig(); ipAssignment = IpAssignment.UNASSIGNED; proxySettings = ProxySettings.UNASSIGNED; linkProperties = new LinkProperties(); Loading Loading @@ -496,12 +416,9 @@ public class WifiConfiguration implements Parcelable { sbuf.append('*'); } for (EnterpriseField field : enterpriseFields) { sbuf.append('\n').append(" " + field.varName() + ": "); String value = field.value(); if (value != null) sbuf.append(value); } sbuf.append(enterpriseConfig); sbuf.append('\n'); sbuf.append("IP assignment: " + ipAssignment.toString()); sbuf.append("\n"); sbuf.append("Proxy settings: " + proxySettings.toString()); Loading Loading @@ -549,8 +466,9 @@ public class WifiConfiguration implements Parcelable { int cardinality = src.readInt(); BitSet set = new BitSet(); for (int i = 0; i < cardinality; i++) for (int i = 0; i < cardinality; i++) { set.set(src.readInt()); } return set; } Loading @@ -560,9 +478,10 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(set.cardinality()); while ((nextSetBit = set.nextSetBit(nextSetBit + 1)) != -1) while ((nextSetBit = set.nextSetBit(nextSetBit + 1)) != -1) { dest.writeInt(nextSetBit); } } /** @hide */ public int getAuthType() { Loading Loading @@ -594,8 +513,9 @@ public class WifiConfiguration implements Parcelable { preSharedKey = source.preSharedKey; wepKeys = new String[4]; for (int i = 0; i < wepKeys.length; i++) for (int i = 0; i < wepKeys.length; i++) { wepKeys[i] = source.wepKeys[i]; } wepTxKeyIndex = source.wepTxKeyIndex; priority = source.priority; Loading @@ -606,9 +526,8 @@ public class WifiConfiguration implements Parcelable { allowedPairwiseCiphers = (BitSet) source.allowedPairwiseCiphers.clone(); allowedGroupCiphers = (BitSet) source.allowedGroupCiphers.clone(); for (int i = 0; i < source.enterpriseFields.length; i++) { enterpriseFields[i].setValue(source.enterpriseFields[i].value()); } enterpriseConfig = new WifiEnterpriseConfig(source.enterpriseConfig); ipAssignment = source.ipAssignment; proxySettings = source.proxySettings; linkProperties = new LinkProperties(source.linkProperties); Loading @@ -623,8 +542,9 @@ public class WifiConfiguration implements Parcelable { dest.writeString(SSID); dest.writeString(BSSID); dest.writeString(preSharedKey); for (String wepKey : wepKeys) for (String wepKey : wepKeys) { dest.writeString(wepKey); } dest.writeInt(wepTxKeyIndex); dest.writeInt(priority); dest.writeInt(hiddenSSID ? 1 : 0); Loading @@ -635,9 +555,8 @@ public class WifiConfiguration implements Parcelable { writeBitSet(dest, allowedPairwiseCiphers); writeBitSet(dest, allowedGroupCiphers); for (EnterpriseField field : enterpriseFields) { dest.writeString(field.value()); } dest.writeParcelable(enterpriseConfig, flags); dest.writeString(ipAssignment.name()); dest.writeString(proxySettings.name()); dest.writeParcelable(linkProperties, flags); Loading @@ -654,8 +573,9 @@ public class WifiConfiguration implements Parcelable { config.SSID = in.readString(); config.BSSID = in.readString(); config.preSharedKey = in.readString(); for (int i = 0; i < config.wepKeys.length; i++) for (int i = 0; i < config.wepKeys.length; i++) { config.wepKeys[i] = in.readString(); } config.wepTxKeyIndex = in.readInt(); config.priority = in.readInt(); config.hiddenSSID = in.readInt() != 0; Loading @@ -665,13 +585,12 @@ public class WifiConfiguration implements Parcelable { config.allowedPairwiseCiphers = readBitSet(in); config.allowedGroupCiphers = readBitSet(in); for (EnterpriseField field : config.enterpriseFields) { field.setValue(in.readString()); } config.enterpriseConfig = in.readParcelable(null); config.ipAssignment = IpAssignment.valueOf(in.readString()); config.proxySettings = ProxySettings.valueOf(in.readString()); config.linkProperties = in.readParcelable(null); return config; } Loading wifi/java/android/net/wifi/WifiEnterpriseConfig.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (c) 2013, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.net.wifi; parcelable WifiEnterpriseConfig; wifi/java/android/net/wifi/WifiEnterpriseConfig.java 0 → 100644 +430 −0 File added.Preview size limit exceeded, changes collapsed. Show changes Loading
wifi/java/android/net/wifi/WifiConfigStore.java +17 −84 Original line number Diff line number Diff line Loading @@ -24,7 +24,6 @@ import android.net.NetworkUtils; import android.net.NetworkInfo.DetailedState; import android.net.ProxyProperties; import android.net.RouteInfo; import android.net.wifi.WifiConfiguration.EnterpriseField; import android.net.wifi.WifiConfiguration.IpAssignment; import android.net.wifi.WifiConfiguration.KeyMgmt; import android.net.wifi.WifiConfiguration.ProxySettings; Loading Loading @@ -1090,32 +1089,18 @@ class WifiConfigStore { break setVariables; } for (WifiConfiguration.EnterpriseField field : config.enterpriseFields) { String varName = field.varName(); String value = field.value(); if (value != null) { if (field == config.engine) { /* * If the field is declared as an integer, it must not * be null */ if (value.length() == 0) { value = "0"; } } else if (field != config.eap) { value = (value.length() == 0) ? "NULL" : convertToQuotedString(value); } HashMap<String, String> enterpriseFields = config.enterpriseConfig.getFields(); for (String key : enterpriseFields.keySet()) { String value = enterpriseFields.get(key); if (!mWifiNative.setNetworkVariable( netId, varName, key, value)) { loge(config.SSID + ": failed to set " + varName + loge(config.SSID + ": failed to set " + key + ": " + value); break setVariables; } } } updateFailed = false; } Loading Loading @@ -1413,78 +1398,26 @@ class WifiConfigStore { } } for (WifiConfiguration.EnterpriseField field : config.enterpriseFields) { value = mWifiNative.getNetworkVariable(netId, field.varName()); HashMap<String, String> entepriseFields = config.enterpriseConfig.getFields(); for (String key : entepriseFields.keySet()) { value = mWifiNative.getNetworkVariable(netId, key); if (!TextUtils.isEmpty(value)) { if (field != config.eap && field != config.engine) { value = removeDoubleQuotes(value); } field.setValue(value); } entepriseFields.put(key, removeDoubleQuotes(value)); } migrateOldEapTlsIfNecessary(config, netId); } /** * Migration code for old EAP-TLS configurations. This should only be used * when restoring an old wpa_supplicant.conf or upgrading from a previous * platform version. * * @param config the configuration to be migrated * @param netId the wpa_supplicant's net ID * @param value the old private_key value */ private void migrateOldEapTlsIfNecessary(WifiConfiguration config, int netId) { String value = mWifiNative.getNetworkVariable(netId, WifiConfiguration.OLD_PRIVATE_KEY_NAME); /* * If the old configuration value is not present, then there is nothing * to do. */ if (TextUtils.isEmpty(value)) { return; } else { // Also ignore it if it's empty quotes. value = removeDoubleQuotes(value); if (TextUtils.isEmpty(value)) { return; } } config.engine.setValue(WifiConfiguration.ENGINE_ENABLE); config.engine_id.setValue(convertToQuotedString(WifiConfiguration.KEYSTORE_ENGINE_ID)); /* * The old key started with the keystore:// URI prefix, but we don't * need that anymore. Trim it off if it exists. */ final String keyName; if (value.startsWith(WifiConfiguration.KEYSTORE_URI)) { keyName = new String(value.substring(WifiConfiguration.KEYSTORE_URI.length())); } else { keyName = value; } config.key_id.setValue(convertToQuotedString(keyName)); // Now tell the wpa_supplicant the new configuration values. final EnterpriseField needsUpdate[] = { config.engine, config.engine_id, config.key_id }; for (EnterpriseField field : needsUpdate) { mWifiNative.setNetworkVariable(netId, field.varName(), field.value()); } // Remove old private_key string so we don't run this again. mWifiNative.setNetworkVariable(netId, WifiConfiguration.OLD_PRIVATE_KEY_NAME, convertToQuotedString("")); if (config.enterpriseConfig.migrateOldEapTlsNative(mWifiNative, netId)) { saveConfig(); } } private String removeDoubleQuotes(String string) { if (string.length() <= 2) return ""; return string.substring(1, string.length() - 1); int length = string.length(); if ((length > 1) && (string.charAt(0) == '"') && (string.charAt(length - 1) == '"')) { return string.substring(1, length - 1); } return string; } private String convertToQuotedString(String string) { Loading
wifi/java/android/net/wifi/WifiConfiguration.java +27 −108 Original line number Diff line number Diff line Loading @@ -24,44 +24,10 @@ import java.util.BitSet; /** * A class representing a configured Wi-Fi network, including the * security configuration. Android will not necessarily support * all of these security schemes initially. * security configuration. */ public class WifiConfiguration implements Parcelable { /** * In old configurations, the "private_key" field was used. However, newer * configurations use the key_id field with the engine_id set to "keystore". * If this field is found in the configuration, the migration code is * triggered. * @hide */ public static final String OLD_PRIVATE_KEY_NAME = "private_key"; /** * String representing the keystore OpenSSL ENGINE's ID. * @hide */ public static final String KEYSTORE_ENGINE_ID = "keystore"; /** * String representing the keystore URI used for wpa_supplicant. * @hide */ public static final String KEYSTORE_URI = "keystore://"; /** * String to set the engine value to when it should be enabled. * @hide */ public static final String ENGINE_ENABLE = "1"; /** * String to set the engine value to when it should be disabled. * @hide */ public static final String ENGINE_DISABLE = "0"; private static final String TAG = "WifiConfiguration"; /** {@hide} */ public static final String ssidVarName = "ssid"; /** {@hide} */ Loading @@ -78,56 +44,6 @@ public class WifiConfiguration implements Parcelable { public static final String hiddenSSIDVarName = "scan_ssid"; /** {@hide} */ public static final int INVALID_NETWORK_ID = -1; /** {@hide} */ public class EnterpriseField { private String varName; private String value; private EnterpriseField(String varName) { this.varName = varName; this.value = null; } public void setValue(String value) { this.value = value; } public String varName() { return varName; } public String value() { return value; } } /** {@hide} */ public EnterpriseField eap = new EnterpriseField("eap"); /** {@hide} */ public EnterpriseField phase2 = new EnterpriseField("phase2"); /** {@hide} */ public EnterpriseField identity = new EnterpriseField("identity"); /** {@hide} */ public EnterpriseField anonymous_identity = new EnterpriseField("anonymous_identity"); /** {@hide} */ public EnterpriseField password = new EnterpriseField("password"); /** {@hide} */ public EnterpriseField client_cert = new EnterpriseField("client_cert"); /** {@hide} */ public EnterpriseField engine = new EnterpriseField("engine"); /** {@hide} */ public EnterpriseField engine_id = new EnterpriseField("engine_id"); /** {@hide} */ public EnterpriseField key_id = new EnterpriseField("key_id"); /** {@hide} */ public EnterpriseField ca_cert = new EnterpriseField("ca_cert"); /** {@hide} */ public EnterpriseField[] enterpriseFields = { eap, phase2, identity, anonymous_identity, password, client_cert, engine, engine_id, key_id, ca_cert }; /** * Recognized key management schemes. */ Loading Loading @@ -357,6 +273,11 @@ public class WifiConfiguration implements Parcelable { * Defaults to CCMP TKIP WEP104 WEP40. */ public BitSet allowedGroupCiphers; /** * The enterprise configuration details * @hide */ public WifiEnterpriseConfig enterpriseConfig; /** * @hide Loading Loading @@ -412,11 +333,10 @@ public class WifiConfiguration implements Parcelable { allowedPairwiseCiphers = new BitSet(); allowedGroupCiphers = new BitSet(); wepKeys = new String[4]; for (int i = 0; i < wepKeys.length; i++) for (int i = 0; i < wepKeys.length; i++) { wepKeys[i] = null; for (EnterpriseField field : enterpriseFields) { field.setValue(null); } enterpriseConfig = new WifiEnterpriseConfig(); ipAssignment = IpAssignment.UNASSIGNED; proxySettings = ProxySettings.UNASSIGNED; linkProperties = new LinkProperties(); Loading Loading @@ -496,12 +416,9 @@ public class WifiConfiguration implements Parcelable { sbuf.append('*'); } for (EnterpriseField field : enterpriseFields) { sbuf.append('\n').append(" " + field.varName() + ": "); String value = field.value(); if (value != null) sbuf.append(value); } sbuf.append(enterpriseConfig); sbuf.append('\n'); sbuf.append("IP assignment: " + ipAssignment.toString()); sbuf.append("\n"); sbuf.append("Proxy settings: " + proxySettings.toString()); Loading Loading @@ -549,8 +466,9 @@ public class WifiConfiguration implements Parcelable { int cardinality = src.readInt(); BitSet set = new BitSet(); for (int i = 0; i < cardinality; i++) for (int i = 0; i < cardinality; i++) { set.set(src.readInt()); } return set; } Loading @@ -560,9 +478,10 @@ public class WifiConfiguration implements Parcelable { dest.writeInt(set.cardinality()); while ((nextSetBit = set.nextSetBit(nextSetBit + 1)) != -1) while ((nextSetBit = set.nextSetBit(nextSetBit + 1)) != -1) { dest.writeInt(nextSetBit); } } /** @hide */ public int getAuthType() { Loading Loading @@ -594,8 +513,9 @@ public class WifiConfiguration implements Parcelable { preSharedKey = source.preSharedKey; wepKeys = new String[4]; for (int i = 0; i < wepKeys.length; i++) for (int i = 0; i < wepKeys.length; i++) { wepKeys[i] = source.wepKeys[i]; } wepTxKeyIndex = source.wepTxKeyIndex; priority = source.priority; Loading @@ -606,9 +526,8 @@ public class WifiConfiguration implements Parcelable { allowedPairwiseCiphers = (BitSet) source.allowedPairwiseCiphers.clone(); allowedGroupCiphers = (BitSet) source.allowedGroupCiphers.clone(); for (int i = 0; i < source.enterpriseFields.length; i++) { enterpriseFields[i].setValue(source.enterpriseFields[i].value()); } enterpriseConfig = new WifiEnterpriseConfig(source.enterpriseConfig); ipAssignment = source.ipAssignment; proxySettings = source.proxySettings; linkProperties = new LinkProperties(source.linkProperties); Loading @@ -623,8 +542,9 @@ public class WifiConfiguration implements Parcelable { dest.writeString(SSID); dest.writeString(BSSID); dest.writeString(preSharedKey); for (String wepKey : wepKeys) for (String wepKey : wepKeys) { dest.writeString(wepKey); } dest.writeInt(wepTxKeyIndex); dest.writeInt(priority); dest.writeInt(hiddenSSID ? 1 : 0); Loading @@ -635,9 +555,8 @@ public class WifiConfiguration implements Parcelable { writeBitSet(dest, allowedPairwiseCiphers); writeBitSet(dest, allowedGroupCiphers); for (EnterpriseField field : enterpriseFields) { dest.writeString(field.value()); } dest.writeParcelable(enterpriseConfig, flags); dest.writeString(ipAssignment.name()); dest.writeString(proxySettings.name()); dest.writeParcelable(linkProperties, flags); Loading @@ -654,8 +573,9 @@ public class WifiConfiguration implements Parcelable { config.SSID = in.readString(); config.BSSID = in.readString(); config.preSharedKey = in.readString(); for (int i = 0; i < config.wepKeys.length; i++) for (int i = 0; i < config.wepKeys.length; i++) { config.wepKeys[i] = in.readString(); } config.wepTxKeyIndex = in.readInt(); config.priority = in.readInt(); config.hiddenSSID = in.readInt() != 0; Loading @@ -665,13 +585,12 @@ public class WifiConfiguration implements Parcelable { config.allowedPairwiseCiphers = readBitSet(in); config.allowedGroupCiphers = readBitSet(in); for (EnterpriseField field : config.enterpriseFields) { field.setValue(in.readString()); } config.enterpriseConfig = in.readParcelable(null); config.ipAssignment = IpAssignment.valueOf(in.readString()); config.proxySettings = ProxySettings.valueOf(in.readString()); config.linkProperties = in.readParcelable(null); return config; } Loading
wifi/java/android/net/wifi/WifiEnterpriseConfig.aidl 0 → 100644 +19 −0 Original line number Diff line number Diff line /** * Copyright (c) 2013, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.net.wifi; parcelable WifiEnterpriseConfig;
wifi/java/android/net/wifi/WifiEnterpriseConfig.java 0 → 100644 +430 −0 File added.Preview size limit exceeded, changes collapsed. Show changes