Merge "WifiEnterpriseConfig: New copy method to ignore masked password" into oc-dev
am: db11f55cb7
Change-Id: I9131d29ad8e192e7af7c596fb5d954e040adb968
This commit is contained in:
@@ -156,9 +156,20 @@ public class WifiEnterpriseConfig implements Parcelable {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Copy constructor */
|
/**
|
||||||
public WifiEnterpriseConfig(WifiEnterpriseConfig source) {
|
* Copy over the contents of the source WifiEnterpriseConfig object over to this object.
|
||||||
|
*
|
||||||
|
* @param source Source WifiEnterpriseConfig object.
|
||||||
|
* @param ignoreMaskedPassword Set to true to ignore masked password field, false otherwise.
|
||||||
|
* @param mask if |ignoreMaskedPassword| is set, check if the incoming password field is set
|
||||||
|
* to this value.
|
||||||
|
*/
|
||||||
|
private void copyFrom(WifiEnterpriseConfig source, boolean ignoreMaskedPassword, String mask) {
|
||||||
for (String key : source.mFields.keySet()) {
|
for (String key : source.mFields.keySet()) {
|
||||||
|
if (ignoreMaskedPassword && key.equals(PASSWORD_KEY)
|
||||||
|
&& TextUtils.equals(source.mFields.get(key), mask)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
mFields.put(key, source.mFields.get(key));
|
mFields.put(key, source.mFields.get(key));
|
||||||
}
|
}
|
||||||
if (source.mCaCerts != null) {
|
if (source.mCaCerts != null) {
|
||||||
@@ -178,6 +189,29 @@ public class WifiEnterpriseConfig implements Parcelable {
|
|||||||
mPhase2Method = source.mPhase2Method;
|
mPhase2Method = source.mPhase2Method;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy constructor.
|
||||||
|
* This copies over all the fields verbatim (does not ignore masked password fields).
|
||||||
|
*
|
||||||
|
* @param source Source WifiEnterpriseConfig object.
|
||||||
|
*/
|
||||||
|
public WifiEnterpriseConfig(WifiEnterpriseConfig source) {
|
||||||
|
copyFrom(source, false, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copy fields from the provided external WifiEnterpriseConfig.
|
||||||
|
* This is needed to handle the WifiEnterpriseConfig objects which were sent by apps with the
|
||||||
|
* password field masked.
|
||||||
|
*
|
||||||
|
* @param externalConfig External WifiEnterpriseConfig object.
|
||||||
|
* @param mask String mask to compare against.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void copyFromExternal(WifiEnterpriseConfig externalConfig, String mask) {
|
||||||
|
copyFrom(externalConfig, true, convertToQuotedString(mask));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int describeContents() {
|
public int describeContents() {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static org.junit.Assert.assertArrayEquals;
|
|||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
|
import static org.junit.Assert.assertNotEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
@@ -316,15 +317,37 @@ public class WifiEnterpriseConfigTest {
|
|||||||
assertEquals("\"auth=AKA'\"", getSupplicantPhase2Method());
|
assertEquals("\"auth=AKA'\"", getSupplicantPhase2Method());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Verfies that the copy constructor preseves the inner method information. */
|
/**
|
||||||
|
* Verifies that the copy constructor preseves both the masked password and inner method
|
||||||
|
* information.
|
||||||
|
*/
|
||||||
@Test
|
@Test
|
||||||
public void copyConstructor() {
|
public void copyConstructor() {
|
||||||
WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
|
WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
|
||||||
|
enterpriseConfig.setPassword("*");
|
||||||
enterpriseConfig.setEapMethod(Eap.TTLS);
|
enterpriseConfig.setEapMethod(Eap.TTLS);
|
||||||
enterpriseConfig.setPhase2Method(Phase2.GTC);
|
enterpriseConfig.setPhase2Method(Phase2.GTC);
|
||||||
mEnterpriseConfig = new WifiEnterpriseConfig(enterpriseConfig);
|
mEnterpriseConfig = new WifiEnterpriseConfig(enterpriseConfig);
|
||||||
assertEquals("TTLS", getSupplicantEapMethod());
|
assertEquals("TTLS", getSupplicantEapMethod());
|
||||||
assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method());
|
assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method());
|
||||||
|
assertEquals("*", mEnterpriseConfig.getPassword());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verifies that the copy from external ignores masked passwords and preserves the
|
||||||
|
* inner method information.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void copyFromExternal() {
|
||||||
|
WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
|
||||||
|
enterpriseConfig.setPassword("*");
|
||||||
|
enterpriseConfig.setEapMethod(Eap.TTLS);
|
||||||
|
enterpriseConfig.setPhase2Method(Phase2.GTC);
|
||||||
|
mEnterpriseConfig = new WifiEnterpriseConfig();
|
||||||
|
mEnterpriseConfig.copyFromExternal(enterpriseConfig, "*");
|
||||||
|
assertEquals("TTLS", getSupplicantEapMethod());
|
||||||
|
assertEquals("\"autheap=GTC\"", getSupplicantPhase2Method());
|
||||||
|
assertNotEquals("*", mEnterpriseConfig.getPassword());
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Verfies that parceling a WifiEnterpriseConfig preseves method information. */
|
/** Verfies that parceling a WifiEnterpriseConfig preseves method information. */
|
||||||
|
|||||||
Reference in New Issue
Block a user