History log of /packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
2c57e7036decceb3767ccc3714e9e9e417217b49 14-Sep-2011 Ben Komalo <benkomalo@google.com> Fix upgrade code.

In HC MR2 we introduced a column for a parentKey, but AFAICT, did not
use it. It was populated with a null value. The first upgrade code in
ICS assumed it was '0' which failed to upgrade it properly.

This prevents IMAP accounts from being broken when upgrading from GB ->
ICS.

Bug: 5252620
Change-Id: I000253b7c02ac1706710bdb21a820293f09cbea5
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
0b8e04c84def3a06ef45126b48efc485fa0a7628 29-Jun-2011 Marc Blank <mblank@google.com> More Store cleanup

Change-Id: I8f542175b4468c7a320322a57bfdaf19a7320165
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
6fea021e3dbe71aaa93512aba699d1bfda3d520d 29-Jun-2011 Marc Blank <mblank@google.com> Remove redundant and unused constants

Change-Id: Ie8658f86737880e3127a0a2c3b7f0557dde98b29
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
244d306ebb0addbc5d87008af9412b76c80e861e 29-Jun-2011 Marc Blank <mblank@google.com> Remove more useless code

* Strike another blow for sanity!

Change-Id: Id95b441f9577abda66f04113793d6b1c60500ebe
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
77160c8c08df90c8e9992596197e3438e46d41e5 29-Jun-2011 Marc Blank <mblank@google.com> Merge "Don't cache ImapFolders"
2720a818d5de169734434b114adfdf824a485f55 29-Jun-2011 Marc Blank <mblank@google.com> Don't cache ImapFolders

* ImapFolder is currently very unsafe for use by multiple threads,
causing, among other things, the referenced bug
* Since ImapFolder is very lightweight, there's no particularly good
reason to be caching them anyway
* Rename isOpenForTest to isOpen

Bug: 4972084
Change-Id: I2bf17b9cfc8549a222e991f3e59abfd00a4d3afd
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
35b0e95ca795e17b6dc8dd98c7ab847d65d9aa0c 29-Jun-2011 Marc Blank <mblank@google.com> Clean up Store implementation

* Remove unused argument from newInstance/constructor
* Create ServiceStore class, the superclass of ExchangeStore (and,
eventually, all Stores, until they can go away completely)

Change-Id: Ic5237236c5349ecf006538c58b63c1efe8e4ea61
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
f5418f1f93b02e7fab9f15eb201800b65510998e 14-Jun-2011 Marc Blank <mblank@google.com> Move Account into its own top-level class

Change-Id: Ide7c991b7d4d418dbe17164421425bf898ba64ee
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
12b82d9374947c9268217f45befe8a74bd9b60d7 20-May-2011 Ben Komalo <benkomalo@google.com> Move HostAuth to top level class.

No other changes made.

Change-Id: I1c6497c98abc0f99443ea42d8aed6295b263c123
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
171c3f2273223652b9999977d530a715420c0f64 16-May-2011 Todd Kennedy <toddke@google.com> Some more re-arrangement of code

No real code changes; just moving where code / constants live. Removed
one unused method of Store.

Change-Id: Ie7532381759a568cb23601e1071c8e199b6beb07
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
ebece4dbdcdfee85a410a0d00c9b6739ee3e705e 16-May-2011 Todd Kennedy <toddke@google.com> Make ImapConnect a top-level class

Split out ImapConnection to its own class. This allows us to update ImapStore
without worrying about links between it and the connection.

Also, added a bit more safety to the classes in terms of correctly freeing
resources. Whenever the connection is closed, it now releases all resources.
Additionally, if the connection is ever put back in the pool, any response
data is released.

Change-Id: Ie3bda40d677707a0d6655f57175e58dece539e19
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
53ea83ebf91f820692e8fa8e781f5cc982dd94db 14-May-2011 Ben Komalo <benkomalo@google.com> Move Mailbox to top level class.

No other changes made.

Change-Id: I3d8f3c521dc0d902be313b25252b4b6a4a96e7ee
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
019341af98ffe2dcd484bd0468c9858d9e7cd7a3 26-Apr-2011 Todd Kennedy <toddke@google.com> Set mailbox flags for message contents

For IMAP, it's possible for a mailbox to exist on the server, but, to be
unselectable. Previously, these folders were never added to the folder list.
However, with nested folder support, we need to have these folders in the
UX so the user can get to its sub-folders (which may be selectable).

Change-Id: I11135fafbb14b40660983804fb86bd223e180d5e
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
22208771b7b39c5d131372ba6bc45ab23cc22232 23-Apr-2011 Todd Kennedy <toddke@google.com> Add hierarchical folders to IMAP

We now create folder hierarcies for IMAP. This also includes a nifty SQL
statement that will get your existing database into shape.

Change-Id: If07a0632e9b250cf0c33c3e16bfba5816beab94c
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
1611d0baed730df920b0685d3031a4bc98c6f225 25-Apr-2011 Ben Komalo <benkomalo@google.com> Make ImapStore tests use mocks where possible

Change-Id: I2a1d5e7d3cc3b105a24a5fc29772bcd4a0308ad3
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
200c6bd9fa19b78acc2c1664f858521aa9885353 21-Apr-2011 Todd Kennedy <toddke@google.com> Simplify mailbox synchronization logic

The logic is simplified by creating database rows for new mailboxes down
in Imapstore. This means that the difference between local and remote folder
lists are mailboxes that need to be deleted.

Note -- this is still not the final CL. We probably update the database too
frequently and the column values aren't updated to support nested folders.

Change-Id: Ifbe4e0cf74ba81e5b6156b452ab72c56c35235ab
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
a50fc99b0c433f0cde31ba1c7ab87fb9ea86345d 19-Apr-2011 Todd Kennedy <toddke@google.com> Use Account instead of URI to create transports

There's no need to create a URI just to rip in appart again. Additionally, to
support additional changes (i.e. to use Mailbox instead of Folder in the
MessageController), we need to store the actual Account.

NOTE -- This change only affects IMAP and POP3. SMTP will come in a follow-on CL

Change-Id: I400036a17271c99272fd9c603547dcd713b50b9d
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
ba7652cda04d428ae7959f8bf6cbc6efe028bfce 19-Apr-2011 Todd Kennedy <toddke@google.com> Make ImapFolder a top-level class

No code changes; just moving the class

Change-Id: I4e4544d99d52dde85b96c99ef45da3a96e7d3d48
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
d31238ca881354938b9d923819da3c63ffb4ac12 22-Mar-2011 Todd Kennedy <toddke@google.com> Add support to query for message IDs

If an IMAP server supports the UIDPLUS capability, it can return the new UID
as part of the response to the "UID COPY" command. However, if the server does
not support UIDPLUS, we perform a SEARCH to try to determine the new message
UID.

This is the second of a couple modifications.

bug 4092301

Change-Id: I1f548b63becfec8733cb8ba9a3fe6ff4be6fdd83
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
284d8d7db5743d24b9aa246afe3d24139bdb0813 23-Mar-2011 Todd Kennedy <toddke@google.com> Add support for UIDPLUS capability

When copying messages between mailboxes using standard IMAP, we must perform
a QUERY or FETCH in order to determine the new message UID. However, if the
server supports the UIDPLUS capability, the server will return the new UID
as part of the response to the "UID COPY" command.

This is the first of a couple modifications. We still need to fallback to a
less efficient QUERY/FETCH if the server does not support UIDPLUS.

bug 4092301

Change-Id: I9279f7fd70daf85adba3b3e202c12d67ddf91f22
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
45d50a1ccffff5dd256a139497ac900f0eb5276b 02-Mar-2011 Andy Stadler <stadler@google.com> Don't send ID command to *.secureserver.net

Fixes connection failures with GoDaddy IMAP.

Bug: 3497713
Change-Id: I327d9b24598d7dead2d1b74f4e37d1e5885822a6
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
31d9acbf0623872f9d4a2b3210b5970854b654c7 12-Feb-2011 Marc Blank <mblank@google.com> Email split, part huit: Refactor constants, clean emailcommon

* There are three pieces to this CL (sorry):
1) Move and/or rename some constants into emailcommon
2) Move Utility to emailcommon, moving the few UI
related utilities back into Email (FolderProperties
and UiUtilities)
3) Remove all references to resources from emailcommon
* The three pieces relate in that, between them, they allow
the emailcommon static library to compile cleanly

Bug: 3442973

Change-Id: Ic5e3abaa2a1b36999e0b6653c6c2134ea1bd544f
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
32311cce0153fbb2708d871626a0797cc93b7e4e 10-Feb-2011 Todd Kennedy <toddke@google.com> Implement IMAP prefix support

We support two different ways for an IMAP prefix to be specified:
1. A text field on the IMAP configuration page. This is the most obvious to
the end user. It is also an explicit, manual configuration.
2. RFC2342 defines a NAMESPACE IMAP command to be able to query the prefix
from the IMAP server. This is an automatic configuration without any
user involvement (i.e. the UI will NOT change if a prefix is loaded in
this way)

If the user goes to the trouble of specifying a prefix, we will always honour
it instead of the namespace returned by the IMAP server -- even if the user's
configuration is wrong.

bug 1592696

Change-Id: I6b94c7aaac538f6cd9dc4694b0f1634e8c956bc1
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
2193962ca2b3157e79f731736afa2a0c972e778a 10-Feb-2011 Marc Blank <mblank@google.com> Email split, part quatre: Move along, nothing to see here

* No code was harmed, er, changed in the making of this CL
* All that's happened is that code that is needed by both Email and
Exchange have been moved into emailcommon
* This required import changes to many files, which explains the
length of the CL

Change-Id: I4e12455ba057a4a8054fdbd0b578c73afa411c8a
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
0d4fc55861ed4393aa82f124f2865695ef564641 09-Feb-2011 Marc Blank <mblank@google.com> Email split, part one: EmailService

* Create emailcommon package
* Move EmailService classes to emailcommon package
* Change references to aidl's to emailcommon package
* Add getApiLevel() command to EmailService

Bug: 3442973

Change-Id: Ic7d2115363cdff6ebb86c46650b0a5b2109b1c72
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
8d8537cd2e39268e0fdcd019bc8b6c4572b7c520 02-Feb-2011 Todd Kennedy <toddke@google.com> Resolve build warnings; part 3

Fixes deprecation warnings

NOTE: This does not resolve hostauth deprecation; that will be fixed
in a separate CL.

Change-Id: I47115516da34effbf885615cb439c9d3e6f95b84
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
11070a53970116a8216b8d83694041fe09560b91 01-Feb-2011 Andy Stadler <stadler@google.com> am 275b89d9: am 927dbc7c: Don\'t send IMAP ID unless server supports it

* commit '275b89d96949de6544c7bca999e241f659cf18b3':
Don't send IMAP ID unless server supports it
927dbc7c20072939fd0ebdf4cc89301a41d075c2 01-Feb-2011 Andy Stadler <stadler@google.com> Don't send IMAP ID unless server supports it

Only send IMAP ID to servers that include ID in the CAPABILITY response.
Always sending IMAP ID was found to cause problems with some servers.

Better compliance with RFC 2971.
Thanks to Samsung for debugging & reporting this.

Change-Id: I495f80949f9f811470853a1f2f8e506d8236d8cf
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
980c2256f17309d778431ce9dd2687ebc62fe800 25-Jan-2011 Andy Stadler <stadler@google.com> Catch base64 errors and handle in-place

Bug: 3362752
Change-Id: I63adb8663c90a7710176cc1c481bbfa5b4b859c4
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
f252d5d95e225a31f86d45b9f7d200dcd7eb5c16 05-Jan-2011 Andy Stadler <stadler@google.com> am 42749c91: am 1a791e67: Fix NPE when switching IMAP into TLS

* commit '42749c9105c663e035a0863d7a6bda111b5c7112':
Fix NPE when switching IMAP into TLS
1a791e675ba5092569125bf09a9fcc721bd4c5e1 05-Jan-2011 Andy Stadler <stadler@google.com> Fix NPE when switching IMAP into TLS

* Update MockTransport to allow TLS connections
* Test TLS connection in ImapStore unit tests
* The bugfix: Re-query capabilities after closing/reopening parser for TLS

(Note: Actually, this is required by the IMAP RFC 3501, 6.2.1)

Bug: 3315939
Change-Id: I51f838043e87750b5712a1bd2e4f9c821b58c808
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
d3e4f3ca7e43fb7ebaa140f93a44a1fb96a0577e 18-Oct-2010 Marc Blank <mblank@google.com> Use notifications for login failures

* For now, clicking on the notification takes the user to the
Welcome activity, as we don't have final flows for the new
account setup UI
* Need comment on strings; the problem is that notification
text must be rather short if we're to use the standard
notification display. It looks like newer UI will allow
3 lines instead of 2, however.
* Tested w/ IMAP, POP3, EAS, and SMTP

Bug: 2322253
Change-Id: I7ed6fa5599179870cbcdb14af062e956eff37ec5
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
f255081a85bd1680c6a2d2b7225aa45cd104cb66 06-Aug-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Fix handling IOException in ImapStore

- mConnection.destroyResponses() should be protected with
if (mConnection != null).
When we get an IOException, we close the connection and null it out in
ioExceptionHandler(). So mConnection can be null at any point after
where ioExceptionHandler() first appears.

- ioExceptionHandler should close its parent ImapFolder only if the argument
connection is mConnection.
Methods like exists() may pass an ImapConnection which is not mConnection
to ioExceptionHandler. In which case we don't have to close the ImapFolder.

Bug 2898211

Backport of I8f9f45d91f596bb8da1a1575593e652d66deb643

Change-Id: I070458b5535540aba69ad7eee88bd2af8ad5f7b1
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
29f0638f4d12db2e42fce7b8a74495d6f368417e 11-Aug-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Handle multiple IMAP SEARCH results.

Apparently IMAP servers may return multiple SEARCH responses for a
single SEARCH command, and we need to handle all of them.

Before the IMAP rework there was 3 methods that issued the SEARCH command.
Two of them ware doing it right, but the other wasn't, which was what
I copied from, unfortunately!

In case you're wondering, originally the test for this method was done through
upper methods, e.g. getMessage().

Bug 2911647

Backport of Ia50072944d5b01c1e59541c3a966067b13910cc4

Change-Id: Iab5d3fa21e403f2e1043990112154fbb72322b02
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
8aa79ba695391c975cdac90676e68e97097d3a21 14-Jun-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Test for interaction between ImapStore and vendor policy.

Backport of I092b3a0f2f40d9aa19f2f61066362099c8b3f50b

Change-Id: I492f975e66d67aae62024804a294e796f23d2aad
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
6275e8b1441b9fb87dd3cc623e90ea61a180013b 01-Jun-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Always destroy ImapResponses.

Unfortunately it's hard to write tests for this change, but at least
all tests pass with Idc7b88c4.

Backport of If0335a848dfcc23aecea22c21b2cce73dac7ff6f

Change-Id: I6cb3525bc3c67bbf2fb101488bf95edbead5d299
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
565f58b9aaa66c218df862ca6e3ee3fa1530ab0e 01-Jun-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Add TODOs to ImapStore.

Backport of I5a9f246eb81cfca6008f82e8c2ffff8b7f28ba1d

Change-Id: I1422e8ae35e2ba560d1227669b9f720b937033a7
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
57ab324a115352bff019ec4c74520a1b5116c1b9 29-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Follow-up to the new IMAP parser.

- Replace string literals in ImapStore with constants.
- Simplifies ImapStore.en/decodeFolderName
- Mix cases in the test data to test for case-insensitivity

Backport of I88424357227bcf78528df5e6a1c4ba45d54cc65b

Change-Id: I254fe82324f6ff530e40ca0cff7073f670cf9aa3
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
ff0712cb1e2e1902d754ac37ab637b94b8cc8933 20-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: New IMAP parser to fix long-lasting problems.

- Almost completely re-wrote ImapResponseParser layer
- We no longer use simple ArrayList and String to represent
imap response. We have classes for that. (Type safe!)
These classes are also NPE-free.
(which isn't necessarily a good thing, though)
- A lot of clean-ups and fixes in ImapStore.
- More tests for ImapStore.

Now ImapResponseParser moved to com.android.email.mail.store.imap.parser,
but inside, it's 99% new code.

This CL introduces many new classes, but most of them are small classes
to represent the IMAP response.

Problems that this CL fixes includes:
- Special characters in OK response
- Handling BYE response
- Case sensitivity
- ClassCast/ArrayIndexOutOfBound/NumberFormatException
- Handling NIL/literals at any position

Bug 2480227
Bug 2244049
Bug 2138981
Bug 1351896
Bug 2591435
Bug 2173061
Bug 2370627
Bug 2524881
Bug 2525902
Bug 2538076

Backport of I7116f57fba079b8a5ef8d5439a9b3d9a9af8e6ed

Change-Id: I38b6da7b82110181dc78a2c63c6837c57afa81ae
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
80202a9599d25fe9f01e23897938e7280ce1c554 20-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Clean up ImapStore and related classes.

- Introduce Fetchable
- Made static some methods/nested classes in ImapStore
- Removed ImapBodyPart
- Fixed lien breaks

Backport of Iec1aff2771faa28717753d6e2d9db96d940233a9

Change-Id: Ia97257c40a6edbe0abc4937068e9cd20e6c558d8
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
286eafcf5fa7d37c9100567c8e550c3092106d93 19-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: More tests for IMAP, clean up, and a few bug fixes.

- A few new tests in ImapStoreUnitTests.
- Added TODOs to ImapStoreUnitTests (for mainly NO response handling)
- Renamed ImapStore.releaseConnection to poolConnection.
- Fixed a bug in getConnection where it'd return a closed connection.
- Now getConnection() hanles BYE response for NOOP correctly and treat the
connection as closed.

Backport of I48e5b89049338f7d4f1ac77cd7ac7243945a9575

Change-Id: I529c6667a1e60c67285b7050b2b1e4b67eccc104
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
cd0b60e97ae739555413b2bfd543e4f452a005c6 18-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: More test for ImapStore/ImapFolder.

- Also, fixed a potential crash in getMessages().
It could happen when a client is gettign a message list while
another client is removing messages.

Backport of I04b1de6bc384cffb7a5286bcec0a349a3d62a623

Change-Id: I227ecbf5bd68c999ba0ab8cd50ef798ef4ef35e4
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
e4cfdfd05962a743319a401fb02161567b26cb8c 13-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Simplify MessageRetrievalListener.

Main motivation: not to make the new IMAP parser too complecated.

- Removed messageRetrieved.
Motivation:
- It's not easy to call messageRetrieved() at the proper timing
from the new IMAP parser, and this method wasn't used anyway.

- Renamed messageFinished to messageRetrieved.
And removed the "number" and "ofTotal" arguments.
Motivation:
- They weren't used. Also there was inconsistency about
what to pass as "numebr". (i.e. 0-based or 1-based?) There was
even a bug that caused passing a wrong number.

Backport of If92dbfe681b78a0eea8125188ede63a8f00dcf49

Change-Id: Icdea45e0a9ac567b1cdfb44e975e60bb11815472
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
550aa6163fdb9681d6adee018a313d5f82629b34 10-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Clean up member variables.

- Fix misnomered fields. (e.g. static mMember -> static sMember)
- Reduce visibility. (e.g. mark as private)
- Mark final / static if possible.

Note it's on master.

There's a lot more cleanup oppotunities in the activities, but they're going
to go through a major overhaul, so I didn't bother.

Backport of b3f7dd0169a35221184b9327c8ce337b09dc6d1f

Change-Id: Ic33f9518f23805716e2aec0ab42edb92107e066c
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
7894ee82b3a9f22d460a0c6f79e87be27686a649 18-Aug-2010 Marc Blank <mblank@google.com> New attachment download support for Controller (IMAP/POP3)

* Supports download via AttachmentDownloadService

Change-Id: I66143a79b99dcdbd307524ba0b81227f09a00e4a
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
367ebd7fa5935d9d514d4be5d708c334e4b73127 11-Aug-2010 Makoto Onuki <omakoto@google.com> Handle multiple IMAP SEARCH results.

Apparently IMAP servers may return multiple SEARCH responses for a
single SEARCH command, and we need to handle all of them.

Before the IMAP rework there was 3 methods that issued the SEARCH command.
Two of them ware doing it right, but the other wasn't, which was what
I copied from, unfortunately!

In case you're wondering, originally the test for this method was done through
upper methods, e.g. getMessage().

Bug 2911647

Change-Id: Ia50072944d5b01c1e59541c3a966067b13910cc4
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
c14ff6ea453530eb06e41b81e6513b32f63631b4 06-Aug-2010 Makoto Onuki <omakoto@google.com> Fix handling IOException in ImapStore

- mConnection.destroyResponses() should be protected with
if (mConnection != null).
When we get an IOException, we close the connection and null it out in
ioExceptionHandler(). So mConnection can be null at any point after
where ioExceptionHandler() first appears.

- ioExceptionHandler should close its parent ImapFolder only if the argument
connection is mConnection.
Methods like exists() may pass an ImapConnection which is not mConnection
to ioExceptionHandler. In which case we don't have to close the ImapFolder.

Bug 2898211

Change-Id: I8f9f45d91f596bb8da1a1575593e652d66deb643
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
d6d874f8c6ce2580ef9ec2406fe411af45b2d92d 02-Jun-2010 Marc Blank <mblank@google.com> Streamline security setup flow

* The setup flow is changed such that the user is asked to activate
device administration before leaving the setup flow, rather than
having to wait for the notification to appear, etc.
* Accounts requiring security are created in a security hold state
to prevent initial sync until device administration is active

Change-Id: I7e33cf98466370ae27414b99018f7aee71e9e237
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
34f29c8a7478cf8c85578d176ac27d973ecca7e4 14-Jun-2010 Makoto Onuki <omakoto@google.com> Test for interaction between ImapStore and vendor policy.

Change-Id: I092b3a0f2f40d9aa19f2f61066362099c8b3f50b
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
977a7d206a866f07774d98aa2ffa2c51aa057de1 01-Jun-2010 Makoto Onuki <omakoto@google.com> Always destroy ImapResponses.

Unfortunately it's hard to write tests for this change, but at least
all tests pass with Idc7b88c4.

Change-Id: If0335a848dfcc23aecea22c21b2cce73dac7ff6f
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
d7470b86876195b07b6208ac7800895289994114 01-Jun-2010 Makoto Onuki <omakoto@google.com> Add TODOs to ImapStore.

Change-Id: I5a9f246eb81cfca6008f82e8c2ffff8b7f28ba1d
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
bf580534063ce6948339ed94edc447e8d1540a4f 29-May-2010 Makoto Onuki <omakoto@google.com> Follow-up to the new IMAP parser.

- Replace string literals in ImapStore with constants.
- Simplifies ImapStore.en/decodeFolderName
- Mix cases in the test data to test for case-insensitivity

Change-Id: I88424357227bcf78528df5e6a1c4ba45d54cc65b
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
7e5ba0e1eaee76ab6e6c7ea9362348f660796596 20-May-2010 Makoto Onuki <omakoto@google.com> New IMAP parser to fix long-lasting problems.

- Almost completely re-wrote ImapResponseParser layer
- We no longer use simple ArrayList and String to represent
imap response. We have classes for that. (Type safe!)
These classes are also NPE-free.
(which isn't necessarily a good thing, though)
- A lot of clean-ups and fixes in ImapStore.
- More tests for ImapStore.

Now ImapResponseParser moved to com.android.email.mail.store.imap.parser,
but inside, it's 99% new code.

This CL introduces many new classes, but most of them are small classes
to represent the IMAP response.

Problems that this CL fixes includes:
- Special characters in OK response
- Handling BYE response
- Case sensitivity
- ClassCast/ArrayIndexOutOfBound/NumberFormatException
- Handling NIL/literals at any position

Bug 2480227
Bug 2244049
Bug 2138981
Bug 1351896
Bug 2591435
Bug 2173061
Bug 2370627
Bug 2524881
Bug 2525902
Bug 2538076

Change-Id: I7116f57fba079b8a5ef8d5439a9b3d9a9af8e6ed
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
4f0186c60819e1b06c1018c30f259282e0ae36b2 20-May-2010 Makoto Onuki <omakoto@google.com> Clean up ImapStore and related classes.

- Introduce Fetchable
- Made static some methods/nested classes in ImapStore
- Removed ImapBodyPart
- Fixed lien breaks

Change-Id: Iec1aff2771faa28717753d6e2d9db96d940233a9
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
cbe4ae9291160877f6664289e3713d5ef792bca5 19-May-2010 Makoto Onuki <omakoto@google.com> More tests for IMAP, clean up, and a few bug fixes.

- A few new tests in ImapStoreUnitTests.
- Added TODOs to ImapStoreUnitTests (for mainly NO response handling)
- Renamed ImapStore.releaseConnection to poolConnection.
- Fixed a bug in getConnection where it'd return a closed connection.
- Now getConnection() hanles BYE response for NOOP correctly and treat the
connection as closed.

Change-Id: I48e5b89049338f7d4f1ac77cd7ac7243945a9575
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
2552b7b705ef2253501e09b0bd4284ea42c26762 18-May-2010 Makoto Onuki <omakoto@google.com> More test for ImapStore/ImapFolder.

- Also, fixed a potential crash in getMessages().
It could happen when a client is gettign a message list while
another client is removing messages.

Change-Id: I04b1de6bc384cffb7a5286bcec0a349a3d62a623
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
dbbd2ba22c63f38c268c1c33e285cfcc50f6da27 13-May-2010 Makoto Onuki <omakoto@google.com> Simplify MessageRetrievalListener.

Main motivation: not to make the new IMAP parser too complecated.

- Removed messageRetrieved.
Motivation:
- It's not easy to call messageRetrieved() at the proper timing
from the new IMAP parser, and this method wasn't used anyway.

- Renamed messageFinished to messageRetrieved.
And removed the "number" and "ofTotal" arguments.
Motivation:
- They weren't used. Also there was inconsistency about
what to pass as "numebr". (i.e. 0-based or 1-based?) There was
even a bug that caused passing a wrong number.

Change-Id: If92dbfe681b78a0eea8125188ede63a8f00dcf49
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
b3f7dd0169a35221184b9327c8ce337b09dc6d1f 10-May-2010 Makoto Onuki <omakoto@google.com> Clean up member variables.

- Fix misnomered fields. (e.g. static mMember -> static sMember)
- Reduce visibility. (e.g. mark as private)
- Mark final / static if possible.

Note it's on master.

There's a lot more cleanup oppotunities in the activities, but they're going
to go through a major overhaul, so I didn't bother.

Change-Id: I3fde73ba5f1f9ff675fff07c510e1e49521dde42
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
165e8bfe7a46564ea98bb16cb059102ba356a1b5 08-May-2010 Makoto Onuki <omakoto@google.com> Cleanup: Add @Override

(Note it's for froyo-plus-asop)

Change-Id: Ic4211c08586e33c44d5d6267c0c9d37f8c7cdc85
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
af6724527e564d35dd27ac35e24dbced554792e5 02-Apr-2010 Makoto Onuki <omakoto@google.com> Added a test for IMAP APPEND

It's a preliminary change for IMAP bug fixes.

Also,
- Fixed a potential bug in ImapFolder.setFlags where it'd throw
StringIndexOutOfBoundsException if flags is empty.

- Added a generic flag to proguard.flags so that now all methods with
the "ForTest" sufix are automatically preserved.
Turned out it wasn't needed for this CL, but it should come in handy
someday.

Bug 2538076
Change-Id: I49a08afc196c7b7f1f30477dfc38ac5381045d84
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
38e52ccc72772a1771845b8704b11a89cd7207aa 31-Mar-2010 Mike LeBeau <mlebeau@android.com> Fix build breakage caused by mblank in 47050.

Change-Id: Ic67fbc611c707a6ff4de558ca15e848f25b92728
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
13e497dd406c910219b3bd9f71895808b4a91673 30-Mar-2010 Marc Blank <mblank@google.com> Fix NPE in ImapStore.create

Bug: 2557382
Change-Id: Ia2135e332162b0ae9d0ab85fbcc532ead089e815
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
6cec1104fe8863fce2ee86ff5145076e6c436a00 29-Mar-2010 Doug Zongker <dougz@android.com> relocate android.util.base64.* -> android.util.*

b/2553469 - API REVIEW: android.util.base64

Change-Id: I5394427a8e2c94b87ca45a533e417f7088a69f8f
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
c4fcd852ba2437645afa5c90dcbac8a66e8dbf25 18-Mar-2010 Andrew Stadler <stadler@android.com> Eliminate duplication in Yahoo! sent mailbox

* Yahoo! is not supporting search by UID so I can't identify the new
the UID after I upload. This inability to correlate the local and
remote messages means that we wind up syncing the same message back
down, in a loop, which spawns more messages.
* Yahoo! has partial support for UIDPLUS, and reports the new UID when
I append (upload) messages.
* Modify IMAP parser to parse response lists
* When APPENDUID is reported, use it (and skip the search)
* Modify the few other existing users of response lists to use the
parsed versions instead. Provided a couple of lightweight utilities
to make it easier to work with ImapList.
* Unit tests for most of it.
* Optimization: share a static date/time parser for all IMAP connections

Bug: 2448220
Change-Id: Ic10fc1a195ccf4671a498188cc8b17848c8d9df7
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
69ade70f2d0857f4eadae97734ee8891e77895cb 08-Mar-2010 Makoto Onuki <omakoto@google.com> Log recent network activities when IMAP parser crashes.

Added DiscourseLogger, which stores last N (currently 64) lines of IMAP
commands sent to the server and responses received from the server.

We dump it to logcat when the IMAP parser crashes, that is, a) getting a
RuntimeException in ImapFolder.fetch() or b) getting a Runtime/IOException
in ImapResponseParser.

Bug 2480227

Change-Id: I6b5a728a7df106627ec29bb3c7c04a97a99b444b
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
44552da606048720de11f89321dc767ef291c391 10-Mar-2010 Andrew Stadler <stadler@android.com> Reduce memory overhead in Message and MimeMessage

Message and MimeMessage were creating a lot of unnecessary sub-objects
even when not needed, so do a bunch of lazy initialization. This should
raise the bar on the size of gigantic inboxes giving us trouble.

* Specific optimizations:
* Replace date formatter with a shared static
* lazy create mHeader (ArrayList)
* lazy create mFlags (HashSet)
* optimize MimeHeader fields class
* lazy create local message-ID (expensive-to-make uuid String)
* make message-id string less expensive to create
* Other cleanups:
* add some override annotations
* privatize some members
* update a fragile test (not a deep fix, it's still fragile)

Side effect, should be faster too.

Bug: 2357564
Bug: 2093422
Change-Id: I8a873879d402e2662339d5398ad0b15da6e580e9
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
726a9fcef3963d8b6f09105e802a8377fbdb567a 24-Feb-2010 Makoto Onuki <omakoto@google.com> Ignore FETCH responses that don't have UID.

We've observed that the secure.emailsrvr.com email server returns an excess
FETCH response for a UID FETCH command. Excess responses don't have the
UID field, even though we request, which led the response parser to crash.

This patch fixes it by making the parser ignore response lines that don't
have UID.

Bug: 2441065
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
cb95fbe13554ee6b4e46d9fd3bcd983e09a688cb 26-Feb-2010 Andrew Stadler <stadler@android.com> Send CAPABILITY to all IMAP servers

* Send CAPABILITY to all servers, not just when we check TLS
* Feed capabilities into IMAP ID generation
* Unit tests updated

Bug: 2332183
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
8068c99945661c7a32d3ae45e3a630d165fa2e3f 20-Feb-2010 Makoto Onuki <omakoto@google.com> Don't use hidden APIs

- The entire android.pim package is hidden.
Use java.text.ParseException instead of android.pim.DateException.

- TelephonyManager.getDefault() is hidden.
Use Context.getSystemService() instead.

- Use newly added Base64 in the framework.

Bug 2226160
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
33c972e0c62e474d2b2f5a293b92893cac0ea47a 15-Feb-2010 Doug Zongker <dougz@android.com> use the framework Base64 instead of android-common

Change-Id: Ib4f75f66fe8acb1bb5de614bb10e8c938b1d27ef
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
f44a40cda14a49d5b02636a3a8a8b2eb8c23fc00 08-Feb-2010 Doug Zongker <dougz@android.com> replace Email's private base64 class with one from android-common

Convert all usages of com.android.email.codec.binary.Base64 to use
com.android.common.Base64 instead, except for Base64OutputStream
(which doesn't exist in android-common yet).

Change-Id: I339a1f451245138187080c7444fcabef8d13f8aa
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
ecb1af804144689d4ead96a247b565f9b4eb8160 02-Feb-2010 Andrew Stadler <stadler@android.com> Finish up IMAP ID implementation

* scrub all external strings to keep them compliant for IMAP protocol
* move Build.MODEL to x-android-device-model
* send x-android-mobile-net-operator
* send AGUID
* unit tests for above
* retrieve providers from VendorPolicyLoader

Bug: 2332183
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
468371917e68bfcb8f364f9b837754e5874a6647 26-Jan-2010 Andrew Stadler <stadler@android.com> IMAP ID

* Add IMAP ID command to all login sequences
* Send generic information for now
* Explicitly catch & discard parsing errors, since we really don't
care if the command succeeds or not.
* Unit tests

Bug: 2332183
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
b6756688b1bf07c50b999c9d30dd6cb224d3812b 07-Oct-2009 Andrew Stadler <stadler@android.com> Handle IMAP empty bodies more safely

Some IMAP servers return NIL if you BODY.PEEK[TEXT] a messsage with
no body, instead of the more canonical {0}CRLF. Instead of messing with the
parser to deal with that, it makes more sense not to try and fetch empty
bodies. So there are three changes:

* Don't fetch parts when size = 0
* Don't append "null" when there is null body text
* Slight change to attachment handling so size is reported >0
* Unit tests on some of the related lower-level protocol stuff

Bug http://b/issue?id=2160387

Change-Id: Ifb8fb0ed5ce7297908e1ae8d5a02dda5975c4a3c
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
e4a7cc440f081ef9c4375a2bd2f82680cc11b152 30-Sep-2009 Andrew Stadler <stadler@android.com> Re-enable modernized version of "optional" SSL/TLS

* Add "Accept all certificates" modes to incoming/outgoing secure choices
* Change URI scheme slightly to make "trust" a flag, not part of the
protocol.
* Change Stores to know about new URI scheme
* Slightly rework Transport API to make "trust" an independent flag
* Adapt HostAuth to handle new Uri scheme
* Remove the old ambiguous "optional" code, which was allowing
some unsigned certificates, but was *also* allowing TLS to
optionally start (though not SSL, despite the UI strings.)
* Add a few unit tests to EmailContent
* Add logging and a bunch of comments to TrustManagerFactory, and a bit
of simple cleanup to make it more readable.
* Add missing conversion of SSLException->CertificateValidationException
in TLS so we get the correct certificate errors from TLS too.
* Re-enable TLS for mac.com accounts (which had a certificate problem)

Fixes bug http://b/2119755, http://b/1374780, and probably a raft of
earlier and/or external bugs about certificate problems.

Change-Id: Iaf99a8da3eaadaa4cdeec224737838b5d6813e55
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
0d4681cd6606015fd242f148ec213a3256a81ec7 29-Sep-2009 Andrew Stadler <stadler@android.com> Catch possible NPE in IMAP sync.

I don't know the root cause of the null pointer (possibly a broken
connection earlier in the sync) but we shouldn't be crashing here.

Fixes http://b/2135743
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
b422bda4d65c2a504ecb588e57ace450aa9c5e80 26-Sep-2009 Andrew Stadler <stadler@android.com> Messages upsynced to "sent" should be marked as "read".

Part of cleanup of bug 2097471 but also addresses old bug 1362964.
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
c41c47fa07a22f8a7612fb0191f152a36d95b7a5 25-Sep-2009 Andrew Stadler <stadler@android.com> Enable message upload

* Create logic to detect upsyncable messages in Sent
* Note: Drafts is now local only for IMAP - no sync, either way
* Rewrite MessageController.processPendingAppend for Provider world
* Write provider message -> legacy message converter
* Fixed bug in IMAP APPEND (it was not picking the right UID for the
uploaded message.)
* Better handling of server internaldate
* Add constants for new X-Android-Body-Quoted-Part header
* Add EmailContent routines to get each of the 5 parts of the body
* Remove "Load more" from unsynced message lists
* Add toString to MimeHeader for debug support

Bug # 2097471

TODO (next CL): Upload attachments records too

Change-Id: I209182f5adc6b6696919f559e3cbbdd58b3eed3a
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
423206653fc1841153f6c6c00599a65d5c5f2191 27-Aug-2009 Andrew Stadler <stadler@android.com> Sync "read" and "favorite" back to server.

* Add \FLAGGED support to IMAP (writeback)
* Add code in Controller to kick MessagingController
* Rewrite pending commands system to scan through provider's updated
messages table and react
* Fix a unit test that I broke
* Cleaned out some of the old PendingCommand support

Addresses the 2nd half (upsync) of bug 1904385

TODO:
Can I add a unit test for IMAP flag writer?

Change-Id: I5a96a695d4f35fca1395506f165b86d9fb19b543
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
2ac94a9cc254ff0a4c17407eb1bda31d433ef651 26-Aug-2009 Andrew Stadler <stadler@android.com> Update Star and Read/Unread from IMAP server

* Set the star and the read/unread states properly when a
message is downloaded for the first time.
* Update them on already-downloaded messages.

This is download only - not upload
Bug 1904385

Change-Id: Id03a0957677bb39f4a57ed0542eaa8accc36ab48
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
0d1078363581db8caded06cf94e729e88a88761a 19-Aug-2009 Andrew Stadler <stadler@android.com> Finish loading large IMAP/POP messages

* Handle messages >25k
* When structure is available (e.g. IMAP) pull in the entire body
and the list of attachments
* When structure is not available (e.g. POP) pull in a large chunk of
the body to try and capture the message body at least.
* Implement loadAttachment for IMAP/POP to demand download large items
* Tested with IMAP & POP messages

INCOMPLETE (file bugs):
* implement logic for the old loadMessageForView calls that comes from
MessageView (when you open a message that's partially-loaded)
* Resolve handling of mimetype when attachment info is read (currently
we're assuming base64 in a couple of places)
* delete account => delete attachments
* delete attachment => delete file
* create account => clear existing attachments for acct id
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
f33986d5cc248d2eeed0707143d81e94866f8e3a 16-Jul-2009 Mihai Preda <preda@google.com> Eliminate Config.LOGV (deprecated, always false).
Add Email.LOGD as a development log guard.
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
80257af81bbdbd015e81324a7b5c27b763b9d512 19-May-2009 Andy Stadler <nobody@android.com> AI 149020: Manually merge CLs 148814, 148818 which fix IMAP response parsing to be
able to handle a literal string in the middle of the response.
BUG=1814528

Automated import of CL 149020
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
5551f7feb210313aaf3e5a33cdaec5f991ba3288 24-Apr-2009 Andy Stadler <> AI 147714: New, lighter-weight version of CL 147620. Still touches as many files,
due to API change, but still has a smaller footprint. Also fixes the
bug in the original, which is that we actually needed to udpate the
local trash folder, not the remote one.
BUG=1807499

Automated import of CL 147714
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
b633efa2b7386b814ff5b9cd05af4c1c8a905fb7 24-Apr-2009 Andy Stadler <> AI 147708: Automated g4 rollback of changelist 147620.
*** Reason for rollback ***
We figured out a simpler solution affecting fewer files - we
don't actually need the new remotestore API.
*** Original change description ***
Some stores require changing the UID of a message when it is
copied to a new folder (I'm looking at you, EAS). Add a callback
to Folder.copyMessages() which allows the store to report back
such changes. Then, add a new api to record the new values:
Folder.updateMessages().
For now, the two APIs are linked by a common callsite in
MessagingController, so the existing stores can use a minimal
implementation - if they don't call the callback, nobody will
call the update.
BUG=1807499

Automated import of CL 147708
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
1df530294d37573e1b1a97bc1c01a43af3127224 24-Apr-2009 Andy Stadler <> AI 147620: Some stores require changing the UID of a message when it is
copied to a new folder (I'm looking at you, EAS). Add a callback
to Folder.copyMessages() which allows the store to report back
such changes. Then, add a new api to record the new values:
Folder.updateMessages().
For now, the two APIs are linked by a common callsite in
MessagingController, so the existing stores can use a minimal
implementation - if they don't call the callback, nobody will
call the update.
BUG=1807499

Automated import of CL 147620
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
c6039f7d17eea53ea7aa59dfade42d9546440929 14-Apr-2009 Andy Stadler <> AI 146134: Add persistence API for remote stores & folders to use while
syncing. This provides a key-value store, per folder, that
can be used by network Stores to record persistent data such
as sync status, server keys, etc.
Note that, by definition, this only applies to remote folders
(e.g. IMAP, POP3). You'll see everywhere that LocalFolder is
passed null, and this is correct - LocalFolder *is* persistent
storage and does not need external help.
Note to reviewers: The core changes are Folder.java,
LocalStore.java, and LocalStoreUnitTests.java, so please give
them the bulk of your reviewer attention. The other files
are just following along with minor API changes. Of those,
the one worth close examination is MessagingController.java,
which is the only place in the system where remote Folders
are bonded with Local Folders and thus where this new API
comes into play.
Note to jham: Can you please take a look at
LocalStore.LocalFolder.setPersistentString() and recommend
better SQL foo than my primitive test-then-update-or-insert
logic, which is not transactional or threadsafe.
BUG=1786939

Automated import of CL 146134
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
cd7e5664f9de81dbe3ba8e57941ca6aa6c1dc3d7 14-Apr-2009 Andy Stadler <> AI 146061: Add persistent storage that Store classes can access.
The current design for Store classes (e.g. IMAP) did not provide for
any persistent storage. This is the beginning of a mechanism to
provide that. It's quite simplisitic - each Store can read/write one
persistent string - but that's enough for the first simple use case
(saving some sync data for EAS).
The core changes here - suggest reviewing first - are in Account.java,
Store.java, and AccountUnitTests.java. Everything else is just
following the API change that was necessary.
Note that, by definition, this only applies to remote stores (e.g.
IMAP, POP3). You'll see everywhere that LocalStore is passed null, and
this is correct - LocalStore *is* persistent storage and does not need
access (so far, at least).
BUG=1786939

Automated import of CL 146061
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
ae8ca3fbd1545c3a94011d7d70bcadac99e7779f 27-Mar-2009 Andy Stadler <> Automated import from //branches/donutburger/...@143018,143018
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
3469902379242c723b871d1dcb09b02d0998d538 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
3b85e2c2b5662c58525baa41479e42c59e292f66 13-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@138607
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
96c5af40d639d629267794f4f0338a267ff94ce5 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
8c2158a5ebb88e226c23b66ff95910158a2727df 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
687f9962d7095e18ef994cd0e64337f02ed1a5bd 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java
8978aac1977408b05e386ae846c30920c7faa0a6 21-Oct-2008 The Android Open Source Project <initial-contribution@android.com> Initial Contribution
/packages/apps/Email/src/com/android/email/mail/store/ImapStore.java