diff options
author | Andy Stadler <stadler@google.com> | 2011-03-25 16:43:42 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-25 16:43:42 -0700 |
commit | 064c1870195a5d53346fd591072cc487083be7b6 (patch) | |
tree | ffab374ef1837a716767c1ce8b9880e5c855b097 | |
parent | 8f0a79c2ef29b714110ee00a4fc28f97a729d4ef (diff) | |
parent | 0408ee5b946142da9457b5bf596cb84d33d409e3 (diff) | |
download | android_packages_apps_Email-064c1870195a5d53346fd591072cc487083be7b6.tar.gz android_packages_apps_Email-064c1870195a5d53346fd591072cc487083be7b6.tar.bz2 android_packages_apps_Email-064c1870195a5d53346fd591072cc487083be7b6.zip |
Merge "DO NOT MERGE - Fix NPE in pop3 checkcapabilities" into gingerbread
-rw-r--r-- | src/com/android/email/mail/store/Pop3Store.java | 4 | ||||
-rw-r--r-- | tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java | 37 |
2 files changed, 38 insertions, 3 deletions
diff --git a/src/com/android/email/mail/store/Pop3Store.java b/src/com/android/email/mail/store/Pop3Store.java index 9990fde5b..7e6480d01 100644 --- a/src/com/android/email/mail/store/Pop3Store.java +++ b/src/com/android/email/mail/store/Pop3Store.java @@ -171,6 +171,10 @@ public class Pop3Store extends Store { @Override public void checkSettings() throws MessagingException { Pop3Folder folder = new Pop3Folder("INBOX"); + // Close any open or half-open connections - checkSettings should always be "fresh" + if (mTransport.isOpen()) { + folder.close(false); + } try { folder.open(OpenMode.READ_WRITE, null); folder.checkSettings(); diff --git a/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java b/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java index 4a210262d..75714f3d1 100644 --- a/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java +++ b/tests/src/com/android/email/mail/store/Pop3StoreUnitTests.java @@ -21,12 +21,12 @@ import com.android.email.mail.Address; import com.android.email.mail.FetchProfile; import com.android.email.mail.Flag; import com.android.email.mail.Folder; -import com.android.email.mail.Message; -import com.android.email.mail.MessagingException; -import com.android.email.mail.Transport; import com.android.email.mail.Folder.FolderType; import com.android.email.mail.Folder.OpenMode; +import com.android.email.mail.Message; import com.android.email.mail.Message.RecipientType; +import com.android.email.mail.MessagingException; +import com.android.email.mail.Transport; import com.android.email.mail.internet.MimeMessage; import com.android.email.mail.transport.MockTransport; @@ -205,6 +205,37 @@ public class Pop3StoreUnitTests extends AndroidTestCase { } /** + * Test a strange case that causes open to proceed without mCapabilities + * open - fail with "-" error code + * then check capabilities + */ + public void testCheckSettingsCapabilities() throws MessagingException { + + MockTransport mockTransport = openAndInjectMockTransport(); + + // First, preload an open that fails for some reason + mockTransport.expect(null, "-ERR from the Mock Transport."); + + // And watch it fail + try { + Pop3Store.Pop3Folder folder = mStore.new Pop3Folder("INBOX"); + folder.open(OpenMode.READ_WRITE, null); + fail("Should have thrown exception"); + } catch (MessagingException me) { + // Expected - continue. + } + + // Now try again (assuming a slightly different connection setup - successful) + // Note, checkSettings is going to try to close the connection again, so we expect + // one extra QUIT before we spin it up again + mockTransport.expect("QUIT", ""); + mockTransport.expectClose(); + setupOpenFolder(mockTransport, 0, "UIDL"); + mockTransport.expect("QUIT", ""); + mStore.checkSettings(); + } + + /** * Test small Store & Folder functions that manage folders & namespace */ public void testStoreFoldersFunctions() throws MessagingException { |