diff --git a/src/com/android/email/provider/EmailContent.java b/src/com/android/email/provider/EmailContent.java index f9b633622..62768614b 100644 --- a/src/com/android/email/provider/EmailContent.java +++ b/src/com/android/email/provider/EmailContent.java @@ -2683,8 +2683,8 @@ public abstract class EmailContent { String userInfo = null; if ((mFlags & FLAG_AUTHENTICATE) != 0) { String trimUser = (mLogin != null) ? mLogin.trim() : ""; - String trimPassword = (mPassword != null) ? mPassword.trim() : ""; - userInfo = trimUser + ":" + trimPassword; + String password = (mPassword != null) ? mPassword : ""; + userInfo = trimUser + ":" + password; } String address = (mAddress != null) ? mAddress.trim() : null; String path = (mDomain != null) ? "/" + mDomain : null; diff --git a/tests/src/com/android/email/provider/ProviderTests.java b/tests/src/com/android/email/provider/ProviderTests.java index df3bf155b..71249903c 100644 --- a/tests/src/com/android/email/provider/ProviderTests.java +++ b/tests/src/com/android/email/provider/ProviderTests.java @@ -354,6 +354,27 @@ public class ProviderTests extends ProviderTestCase2 { assertEquals(587, ha.mPort); } + /** + * Test preservation of username & password in URI + */ + @SuppressWarnings("deprecation") + public void testHostAuthUri() { + HostAuth ha = new HostAuth(); + ha.setStoreUri("protocol://user:password@server:123"); + String getUri = ha.getStoreUri(); + assertEquals("protocol://user:password@server:123", getUri); + + // Now put spaces in/around username (they are trimmed) + ha.setStoreUri("protocol://%20us%20er%20:password@server:123"); + getUri = ha.getStoreUri(); + assertEquals("protocol://us%20er:password@server:123", getUri); + + // Now put spaces around password (should not be trimmed) + ha.setStoreUri("protocol://user:%20pass%20word%20@server:123"); + getUri = ha.getStoreUri(); + assertEquals("protocol://user:%20pass%20word%20@server:123", getUri); + } + /** * Test simple mailbox save/retrieve */