Loading wifi/java/android/net/wifi/WifiEnterpriseConfig.java +36 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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; Loading wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading Loading
wifi/java/android/net/wifi/WifiEnterpriseConfig.java +36 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading @@ -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; Loading
wifi/tests/src/android/net/wifi/WifiEnterpriseConfigTest.java +24 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading