Merge "WifiEnterpriseConfig: New copy method to ignore masked password" into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-23 04:26:45 +00:00
committed by Android (Google) Code Review
2 changed files with 60 additions and 3 deletions

View File

@@ -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()) {
if (ignoreMaskedPassword && key.equals(PASSWORD_KEY)
&& TextUtils.equals(source.mFields.get(key), mask)) {
continue;
}
mFields.put(key, source.mFields.get(key));
}
if (source.mCaCerts != null) {
@@ -178,6 +189,29 @@ public class WifiEnterpriseConfig implements Parcelable {
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
public int describeContents() {
return 0;

View File

@@ -20,6 +20,7 @@ import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
@@ -316,15 +317,37 @@ public class WifiEnterpriseConfigTest {
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
public void copyConstructor() {
WifiEnterpriseConfig enterpriseConfig = new WifiEnterpriseConfig();
enterpriseConfig.setPassword("*");
enterpriseConfig.setEapMethod(Eap.TTLS);
enterpriseConfig.setPhase2Method(Phase2.GTC);
mEnterpriseConfig = new WifiEnterpriseConfig(enterpriseConfig);
assertEquals("TTLS", getSupplicantEapMethod());
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. */