History log of /packages/apps/Email/src/com/android/email/Controller.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cb1d65c47825dc7a45c7954cd93669296b35305e 26-Jul-2011 Ben Komalo <benkomalo@google.com> Fix mailbox finding and unit tests.

We seemed to not properly fallback to querying the database if the cache
did not contain a mailbox of a specific type. We may want to consider
caching mailboxes related to PIM data, but for now this is a quick fix.

Also fixes unit tests.

Bug: 5019661
Change-Id: Idcac0a6f15aa7f174890ae586f478fbb8f6e05b7
/packages/apps/Email/src/com/android/email/Controller.java
1ecfb5311b0315edf86a450398a8712dbfd86772 20-Jul-2011 Ben Komalo <benkomalo@google.com> Remove illegal references to IsolatedContext

This fixes a crash on account deletion, leaving around bad accounts that
were in limbo
Also remove a test for an unsupported operation

Bug: 5051951
Change-Id: Ieebc7f769075614ae1a656cf123d8ce0313e611d
/packages/apps/Email/src/com/android/email/Controller.java
4e4aba9ebc43c6a83190f3a883fa05bb7d5100b3 19-Jul-2011 Marc Blank <mblank@google.com> Clean up account reconciliation

* Move AccountReconciler to the Email app (from EmailCommon)
* Ensure that Controller.deleteAccountSync() performs ALL actions
needed to clean up after an account deletion (delete attachment
files, reset policies, refresh the UI, etc.)
* Add reconcileAccounts() API to AccountService
* Remove accountDeleted() and restoreAccountsIfNeede() from the
AccountService API
* Remove unused callback

Bug: 4883073
Bug: 4767084

Change-Id: I43ffaf009db1a6f306bb0f2a74fb4dd3b2c4b966
/packages/apps/Email/src/com/android/email/Controller.java
e71a19a52313a0fb615700e52a336b65f3c305da 15-Jul-2011 Ben Komalo <benkomalo@google.com> Build default mailboxes for POP3

Bug: 4580535
Change-Id: Ic800eed387d3e9e64e95cce691d13d98b4a48045
/packages/apps/Email/src/com/android/email/Controller.java
b81a31b29b22b1b11e8ad636638d2b8213e9f199 17-Jul-2011 Marc Blank <mblank@google.com> Handle message sets in a single EmailAsyncTask

* This prevents the possibility of RejectedExecutionException when
selecting large numbers of items

Change-Id: I8f9ba287d69021fdb99b4a8a30cc79755f669b97
/packages/apps/Email/src/com/android/email/Controller.java
2a33dde4d16f0468890a4852f5e4017a973a2342 13-Jul-2011 Marc Blank <mblank@google.com> Delete PIM data, etc. on device admin disable

* We were deleting secured accounts when device admin is disabled,
but we were not deleting associated data, which means that
contacts, calendar, and attachment data were left on device

Bug: 5021062
Change-Id: Iabeec2dcd6ef4f52dc52e43d62803e61f7881c0d
/packages/apps/Email/src/com/android/email/Controller.java
50a092c3d6155fcd704990450640cf159072b1a2 24-Jun-2011 Marc Blank <mblank@google.com> Add IMAP support for the "replied" state in messages

* Handle replied in new messages and updates
* Code added for upsyncing replied state, but the CL for
setting this state isn't yet submitted

Change-Id: I6f3ff56475d70f686f96ed6a84fae3468f42b1c8
/packages/apps/Email/src/com/android/email/Controller.java
7891106a7d6b4c406792a8a9144e5148e6bf5ddb 06-Jul-2011 Ben Komalo <benkomalo@google.com> Write reply/forward flags on Controller.sendMessage

- also fix some mixups with the actual icon states

Bug: 4947145
Change-Id: Iec1bbfc46ac956a6bf050e4fb162b94ea3c6b316
/packages/apps/Email/src/com/android/email/Controller.java
0b8e04c84def3a06ef45126b48efc485fa0a7628 29-Jun-2011 Marc Blank <mblank@google.com> More Store cleanup

Change-Id: I8f542175b4468c7a320322a57bfdaf19a7320165
/packages/apps/Email/src/com/android/email/Controller.java
29c89ad17a0983ddc4eb2b4922c93a53aff2d735 29-Jun-2011 Ben Komalo <benkomalo@google.com> Just mark search mailbox as not visible

This way we don't have to explicitly filter it in all the different
places we do selections on mailboxes.

Note that I didn't create an upgrade path for this. The only people with
search mailboxes are probably developers right now, and worst case for
people who experimented, they will just get the search mailbox visible

Change-Id: I9a0bf6df9985418d467a7348ed99a36521641b89
/packages/apps/Email/src/com/android/email/Controller.java
5a9c95f94eaaed326d3116b539b7005ab4f3f8c7 28-Jun-2011 Marc Blank <mblank@google.com> Return total number of results from IMAP search

Change-Id: I44eb83042774294aa5aaa8f45a46b82dd78b0141
/packages/apps/Email/src/com/android/email/Controller.java
66a47b8dac5e97e37c30b928bc5a227d74baada9 27-Jun-2011 Marc Blank <mblank@google.com> Clean up/simplify ExchangeUtils/ExchangeStore

* Rename ExchangeUtils to EmailServiceUtils
* Create calls for Exchange to use (eventually remove these)
* Get rid of lots of nonsense in ExchangeStore

Change-Id: Ic538cfe1de57eca24088ee1f590264283d12f511
/packages/apps/Email/src/com/android/email/Controller.java
bad39b2e00dcd9127f5e0aed96ab31cf0817be76 25-Jun-2011 Marc Blank <mblank@google.com> Clean up search handling in Controller

* Use same code for handling search mailbox for IMAP and EAS
* Allow "Load More" for EAS search mailbox

Change-Id: Id4a009c79a95302d627ff25f85e9c65bc461826f
/packages/apps/Email/src/com/android/email/Controller.java
9a01353f14f718c5447d6a3dc25b413be0f175d9 23-Jun-2011 Marc Blank <mblank@google.com> New search implementation for IMAP in MessagingController

* Add protocolSearchInfo column to Message table; this can be used
to store information related to search results. For IMAP, we
store the serverId of the mailbox that the message lives in on
the server
* Add upgrade code for this column
* Change MessagingController to use the proper serverId for remote
operations, depending on whether the Message is a search result
or not
* Fix some smaller issues with earlier code

Change-Id: I0c7f1d89a4659b95701d02646c0e8426680e2f6a
/packages/apps/Email/src/com/android/email/Controller.java
ed1dc9ee72410e07de24bc4a072d066981611a48 17-Jun-2011 Marc Blank <mblank@google.com> Support "Load More" for IMAP search

Change-Id: I47e5fd1fab421026ee52af72ba56338c69e9b467
/packages/apps/Email/src/com/android/email/Controller.java
f62fd3fd177a79579cde30e43a85eb9709eb348b 17-Jun-2011 Ben Komalo <benkomalo@google.com> ensure that search mailboxes don't have parents

This causes issues in the mailbox list when trying to auto navigate to a
search mailbox

Change-Id: Ie4e43f20ec662a7c9304dd906ba5a58560cba9f5
/packages/apps/Email/src/com/android/email/Controller.java
0b346432043e5871ab683da53550f755f82df0b9 17-Jun-2011 Marc Blank <mblank@google.com> Merge "First implementation of IMAP search"
627bc6ed57ee06cc588e64ff959bfd7870b659b6 13-Jun-2011 Marc Blank <mblank@google.com> First implementation of IMAP search

* Broke up synchronizeMailboxGeneric into three pieces; it's still
horrible, but this at least stops my eyes from bleeding
* Remove unused method/tests from Folder interface

Change-Id: Ib4d979536be657137cf70ca535cf429d707be41b
/packages/apps/Email/src/com/android/email/Controller.java
cb24e515b7983133133ca38bd3e3e6354daaab76 16-Jun-2011 Ben Komalo <benkomalo@google.com> Add one more error state to certificate process

When the KeyStore fails to give us back a certificate for any reason (it
was removed from the keystore perhaps), propagate the error back up.

Change-Id: I4f0ef783c1665589cc8ccb43d95da43a297a3e9a
/packages/apps/Email/src/com/android/email/Controller.java
22409fcffae4c6e551fb3e6ead4cdc92e33fded1 14-Jun-2011 Ben Komalo <benkomalo@google.com> Pass HostAuth when validating an account.

Since HostAuth is fully Parcelable, no sense passing the individual
fields.

Change-Id: I4d8fd2bbe7b47e8f1e2ff00c8c0cad8429eec159
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
85e4c101b014857fe40f87c3837b82564cfc5b6c 08-Jun-2011 Marc Blank <mblank@google.com> Remove storeUri's except during auto-setup

* Remove per-store limitations
* Use constants for VISIBLE_WINDOW, rather than having the
potential for differences between Stores

Change-Id: Idd5e0874bba6e3390e4f093bcb03f4b1bb399c11
/packages/apps/Email/src/com/android/email/Controller.java
9d2dae67506983c64f72350a4fb5967cfd85b9a8 09-Jun-2011 Todd Kennedy <toddke@google.com> Set proper default values for new mailboxes

When creating mailboxes (specifically 'drafts' or 'sent'), we need to ensure
that its default values for flags & server key are set correctly. In most
cases this is "okay" because the mailbox will be created on the server and
the values for these fields will be reset. However, in cases where system
mailboxes cannot be created on the sever (for example, the 'drafts' folder
on any POP3 account or an IMAP gmail account), these default values do not
get updated and we are unable to view the contents of these mailboxes.

bug 4356871

Change-Id: I9e6a394145f471b555c5827d5114bca243dbc37c
/packages/apps/Email/src/com/android/email/Controller.java
75a754660e33c5e18cacffff193983ba22a7b9b0 02-Jun-2011 Marc Blank <mblank@google.com> Update searchMessages API

* Store various search parameters in a new parcelable class

Change-Id: Iadec6a803b1bf17d89cd401c3fca1cb0ad3340d4
/packages/apps/Email/src/com/android/email/Controller.java
3096b4ae18f55c9ebf04d83c534da4d5e3370932 25-May-2011 Makoto Onuki <omakoto@google.com> Add Controller.deleteMessages(long[]) for batch delete

- Also removed the accoundId parameter, which wasn't used.
- Also cleaned up MailboxListFragment.onDrop.
(the restored Message was only used to get the account id, but
it's no longer needed.)

Bug 4384642

Change-Id: I8f6635011dae0529a82972617101e1c130090b76
/packages/apps/Email/src/com/android/email/Controller.java
b522a2c16684359b1cb4a685dd8ab7938a59624d 17-May-2011 Todd Kennedy <toddke@google.com> Merge "Fix Store re-using old data"
581e3c2333deec3d57d9a18a2ed6da26ae71c8a2 17-May-2011 Todd Kennedy <toddke@google.com> Fix Store re-using old data

The key for the Store cache was not adjusting properly for account
changes (such as port changes, etc...). As such, it was possible to
get an invalid store.

Now, there's problem with leaking Account objects if the store account
changes (see bug 4440839). This is "okay" for now since account changes
are fairly uncommon and Account objects are light. However, this should
be fixed at some point.

Change-Id: I4ddcbc3e2759b7b1374d0300706373678dedec94
/packages/apps/Email/src/com/android/email/Controller.java
54c91f00d7f967690a80b992062e75c40182d088 17-May-2011 Makoto Onuki <omakoto@google.com> Use IllegalArgumentException, not InvalidParameterException

Because IllegalArgumentException is the standard one.

Change-Id: Ib4d0bfa88a3d4218148a7cb248d9baa2124a72ba
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
bfac9f2e8a13f6c719608a6948203bbef921c99f 13-May-2011 Makoto Onuki <omakoto@google.com> Move some of the log constants from Email to Logging

Change-Id: If9f4e4e3adcdef897a0d6a4e153bb446a8b24fdd
/packages/apps/Email/src/com/android/email/Controller.java
b221cbc785d7c868a69a144da31756c50c0e11b4 12-May-2011 Marc Blank <mblank@google.com> Add messaging exception status for "attachment not found"

* Adding this enables 4409976 to be fixed in a user-friendly manner

Bug: 4409976
Change-Id: I4f5ce890b6957c27a0f59656467dbe23b480a7e3
/packages/apps/Email/src/com/android/email/Controller.java
0993190cafebc107bd27a26996b5d63d4a4ede10 06-May-2011 Marc Blank <mblank@google.com> Complete rewrite of account backup/restore code

* Use EmailProvider to backup/restore into a backup database
* Remove all of the old AccountBackupRestore code
* Get rid of the legacy Account class and all of the Preferences
crap that referenced it
* Remove corresponding tests

Change-Id: I2de75aafdacc87246174303961e58547303f641e
/packages/apps/Email/src/com/android/email/Controller.java
c4cdb11d24c19428dd39f986b00c1a29e75e1505 03-May-2011 Todd Kennedy <toddke@google.com> Remove notification if messages seen off device

If we receive new messages, we may display a notification to the user. If
those same messages are read elsewhere (i.e. via a web client), we will
remove the notification.

Change-Id: Iba09afe01942e0deaac8210fd6f9b315b1c8c93f
/packages/apps/Email/src/com/android/email/Controller.java
aeee10e57ef4d931e7708fde218d590453a82aea 28-Apr-2011 Marc Blank <mblank@google.com> Rework of security policy storage

* Replace crazy (and soon to be "full") bit fields stored in an account's
securityFlags with a row in a newly created Policy table (thus, fully
expandable)
* Update code from database version 17 to 18; adds Policy table, a
policyKey row in Account, and a revised trigger that deletes Policy
information for deleted Accounts
* Update old PolicySet unit tests to work against the new Policy class
* Add test for the conversion of securityFlags to Policy
* Tested in a variety of scenarios; appears to be functionally equivalent

Change-Id: I1505ee75230d6a0d3c2b62a46326f39c2c7f9eb5
/packages/apps/Email/src/com/android/email/Controller.java
e87ff6c3cbbfc5e3636f9827b58820652e3ea1c5 27-Apr-2011 Todd Kennedy <toddke@google.com> Opportunistic cleanup

not making any real code changes:
* removed deprecated, unused methods
* remove 'throws' clauses when that exception is never thrown
* renamed method Controller#moveMessage()-->moveMessages()

Change-Id: Ifd006f760f0c19283e94a11a45c71295c8da35f7
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
d2fd1252d504fa61db9eb8362442cf20f1198e0f 22-Apr-2011 Marc Blank <mblank@google.com> Add status code(s) for disabled sync (needed for EAS 14.0)

Change-Id: Ie65141c4d83412274dbbc39dffed7c3be394bb84
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
7dc1e86d91148fb79c380eacf734813ee8828299 12-Apr-2011 Ben Komalo <benkomalo@google.com> Less aggressive selection change in msg content.

All focus changes to the message body content was pushing the selection
to the end, which is wrong if state restoration happens, and is just
non-standard behavior if the user explicitly taps on a particular spot
on the text view. Make this slightly less aggressive.

Misc other changes in compose view.

Bug: 3076256
Change-Id: I9edb9c3c4edb5ddec12207f4136f3ca73cabf89d
/packages/apps/Email/src/com/android/email/Controller.java
78684ccc795c0d5211dfc04a834cb452dccb1058 31-Mar-2011 Marc Blank <mblank@google.com> Temporary search UI

Change-Id: Ia138ca93f0b28fd0915aa79c965f752f7c08ee90
/packages/apps/Email/src/com/android/email/Controller.java
c60b8d0529168edecf2376a6f421a0ae1e10fe29 31-Mar-2011 Marc Blank <mblank@google.com> Add searchMessages command to EmailService

* Also, document service methods in EmailServiceProxy

Change-Id: I46cc68c8c2aa870ea82474c70d944640bb66b0ef
/packages/apps/Email/src/com/android/email/Controller.java
edd1c9ac7e92da3ca5459f4c7c3154b98ff68eac 10-Mar-2011 Todd Kennedy <toddke@google.com> Fix NPE when trying to open attachments

The attachment info may be null when we attempt to mark them for downloading.
Add a null-check before we try to dereference the info structure.

bug 4053184

Change-Id: I831e3abd100664c92f7af585014a03250e40ff64
/packages/apps/Email/src/com/android/email/Controller.java
dc78a769fce18d259eccc602c4623fa74cdf5319 14-Feb-2011 Marc Blank <mblank@google.com> Email split, part dix

* The coup de grĂ¢ce for Exchange in Email
* Remove Exchange bits from AndroidManifest
* Update Android.mk to create static jar for emailcommon
* Delete all com.android.exchange files
* Delete all exchange-only strings
* Change loadAttachment service method to take only attachment id and
background flag
* Add code to AttachmentProvider.openFile() that opens an output file
for attachment writes
* Make sure deviceId is determined in Email app (not Exchange)

Bug: 3442973
Change-Id: I775600252fd121f474d51cb26fefbfcc50e387af
/packages/apps/Email/src/com/android/email/Controller.java
3a5c1fb274a9ce72d708d88509bf2607cb018ddd 13-Feb-2011 Marc Blank <mblank@google.com> Email split, part neuf: Setup, logging, attachment glue

* Make "Exchange" option in account setup depend upon availability of the
Exchange EmailService
* Make presence of Exchange logging depend upon availability of the
Exchange EmailService
* Make AttachmentDownloadService use service rather than ExchangeService
class
* Move SSLUtils to emailcommon/utility
* Move account manager type defs to emailcommon/AccountManagerTypes
* Update proguard.flags
* This is the penultimate CL for the Email package itself; the next CL
creates a clean, SDK-compatible Email application

Bug: 3442973
Change-Id: I9162cf5fa6b5a043ded0fdd1e25fd3ce5948ad8f
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
a7bc0319a75184ad706bb35c049af107ac3688e6 10-Feb-2011 Marc Blank <mblank@google.com> Email split, part six: EmailContent

* Moved EmailContent to emailcommon

Change-Id: Ib3db1bfcfe74554c0e5afd3cfce6d72f26e9aeb9
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
8a574694606f0e5d781334d0d426fc379c51f3ed 09-Feb-2011 Marc Blank <mblank@google.com> Email split, part trois: AccountService

* Create AccountService.aidl and AccountServiceProxy in emailcommon
* Implement AccountService in email
* Use AccountServiceProxy in Exchange for account reconciliation,
notifications, etc.
* Move sync window constants into emailcommon
* Split attachment provider utilities and constants into emailcommon

Bug: 3442973
Change-Id: I89dce28b799b193243c07774dab65d830ae62775
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
5e39f90e9d4665713eba38586b08546f1d581adb 02-Feb-2011 Todd Kennedy <toddke@google.com> Resolve build warnings; part 4

Fix unchecked warnings

Change-Id: I872740fca4e5050e6ed2922eabc7e46e5e97ff3c
/packages/apps/Email/src/com/android/email/Controller.java
f92dd2bf3ea445db9b9a0eb9a447b5cbdb1a6e05 21-Jan-2011 Todd Kennedy <toddke@google.com> Don't display toast for background download failures

When downloading attachments in the background, do not display any errors
on the display.

NOTE: This is a partial fix for general background attachment downloading issues

bug 3373982

Change-Id: I874ed902bde293303e10308f38b992b2bb15b6aa
/packages/apps/Email/src/com/android/email/Controller.java
2ac18339439631f2539a4cd35056b8ae65d5a24f 20-Jan-2011 Marc Blank <mblank@google.com> Delete attachment if there's no corresponding message

Bug: 3372440
Change-Id: I5c3653c5f27e0aa7bab52ca0d979e14bb6bafc34
/packages/apps/Email/src/com/android/email/Controller.java
aeea97275d27f42d724b17e37aed2d0302271007 18-Jan-2011 Marc Blank <mblank@google.com> Don't report connection error when account isn't initialized

* We report uninitialized for updateFolderList when no mailboxes
have been created

Bug: 3235788
Change-Id: I337cfeac83bf320e8078e5a837976414fdd93e0f
/packages/apps/Email/src/com/android/email/Controller.java
1daf8766937e0d8dda6a35870b3e27435c92df9a 14-Jan-2011 Makoto Onuki <omakoto@google.com> Fix NPE in Controller.deleteMessageSync

Bug 3351148

Change-Id: I0015c84e5758504a66a4373668afea063f5b2e15
/packages/apps/Email/src/com/android/email/Controller.java
69af769688acc28a20cdbad046cea2565456801c 08-Jan-2011 Marc Blank <mblank@google.com> Fix issues w/ security-related account data deletion

* Stop running syncs
* Delete all EmailProvider data except the account itself (with
cleared sync key) and the account mailbox (necessary for syncing
to sync after security hold is lifted

Bug: 3245779
Bug: 3253952
Change-Id: Idc208ef5ed85808b085ebab9c26a428fb0451e34
/packages/apps/Email/src/com/android/email/Controller.java
900021dbeeb93409c069a04a740c2436e30d1b2a 05-Jan-2011 Andy Stadler <stadler@google.com> Prevent duplicate mailbox creation

* Synchronized findOrCreateMailboxOfType

Bug: 3291982
Change-Id: I7146458112296aa2b0f4b8f24d0c86f16a8b6626
/packages/apps/Email/src/com/android/email/Controller.java
cbdd9f78b2605e87e45e4f6761b0a8c444a8cd4c 21-Dec-2010 Marc Blank <mblank@google.com> Distinguish mailbox requests that are user requested

Bug: 3251757
Change-Id: Ie417ebf44c8b740db88e5854077782930359a958
/packages/apps/Email/src/com/android/email/Controller.java
2959a7e073c87e2fa5fab42ec543b352a91cf187 23-Dec-2010 Andy Stadler <stadler@google.com> Fix ANRs from Email.setServicesEnabled()

* Create sync & async versions
* Rename all callsites so sync is very apparent
* Fix callsites appropriately
* Clean up interaction between reconciler and setServicesEnabled

Bug: 3133770
Bug: 3134677
Change-Id: Iefbc7814d9aa390baea6345e450e2a4768bf0a9a
/packages/apps/Email/src/com/android/email/Controller.java
3b1cccf234cd95c3e1c4c568bc588ab06b06d3aa 23-Dec-2010 Andy Stadler <stadler@google.com> Async code for read/unread and starred

* Move each worker into async (combining common code)
* Update unit tests to match
* Make the message->account->controller lookups more efficient

Bug: 3134653
Change-Id: Icc82998a5d8eb07c7ebc7edbd28cd9308378d866
/packages/apps/Email/src/com/android/email/Controller.java
aef9515ee70f1f0b6cc4fa601078597b55831331 10-Dec-2010 Makoto Onuki <omakoto@google.com> Controller.Result callbacks should all have accountId

- Added accountId to loadAttachmentCallback/loadMessageForViewCallback

- Cleaned up LegacyListener/MessagingListener.
Removed the constructors which take messageId and attachmentId, which
are used to bridge loadAttachmentProgress, which the callsite doesn't know
these IDs. The inconsistency (only loadAttachmentProgress() uses the member
messageId) doesn't look too good, so extracted this into a separate class,
MessageRetrievalListenerBridge.

Change-Id: I46303e50df2b0e1fe8616e7c9cef632ac14f23aa
/packages/apps/Email/src/com/android/email/Controller.java
45e04b009d570235c542f3c97eaa7e1d00e6cc7b 08-Dec-2010 Makoto Onuki <omakoto@google.com> Update error banner

1. Error banner now pushes down the entire screen, rather than covers it.
2. Switch to the new ObjectAnimator for the animation to achieve #1.
(Traditional Animation doesn't do this)
3. Dismiss the banner when getting any callback with MessagingException == null
and progress > 0, only when the account is the one that caused the last error.
4. MessageListXL now registers its own ControllerResult to detect
connection errors, and more importantly, when they're cleared.

Bug 3240874
Bug 3240406

Change-Id: I07f8e2f589bb1d312859824f9ec398879003ba16
/packages/apps/Email/src/com/android/email/Controller.java
d3a9ab946caef4cdc8ef81f7fd8f445fdba3782f 02-Dec-2010 Andy Stadler <stadler@google.com> Leave empty inbox when clearing out account.

* Makes things simpler for UI state on a wiped account
* Also wipe sync keys from remaining account & inbox
* Unit tests

Bug: 3245274
Bug: 3245779
Change-Id: I74cc6d7859dad54961426b70ffe0541ce49e3b91
/packages/apps/Email/src/com/android/email/Controller.java
e29189e3eeea9c629777b3deed6ea2be67caa737 30-Nov-2010 Andy Stadler <stadler@google.com> Cleanups to Controller & AttachmentProvider

* New method in AttachmentProvider to delete all attachments for an
account, and unit test it.
* New method in Controller to delete all synced data for an account,
and unit test it.
* Fixed existing problem with Controller unit tests (needed cache clear)
* Fixed existing problems in Controller (mContext vs. mProviderContext)

Bug: 3197935
Change-Id: I79c6a03c21f18d37eeb8158cd1c2af0e0a6e9d2e
/packages/apps/Email/src/com/android/email/Controller.java
cf3fb71bc6fd795c10dc1d7467292532c19041ae 16-Nov-2010 Marc Blank <mblank@google.com> Implement password expiration for EAS

* Hoist wipe() method from AbstractSyncParser to AbstractSyncAdapter
* Add deleteAccountPIMData(accountId) to the EmailService API
* Implement deleteAccountPIMData for EAS

Change-Id: I1037cde25fc2b24419f399446cfa0906dc0174d1
/packages/apps/Email/src/com/android/email/Controller.java
02d59d21949a77c60859b615312f02e6d8003490 25-Oct-2010 Marc Blank <mblank@google.com> Delete secured accounts if device admin is disabled

* Update unit test

Bug: 2817683
Change-Id: Ia7117c34e7bbba13ac4f2ff375d19b3ef94ef49c
/packages/apps/Email/src/com/android/email/Controller.java
be1aa37dc516a9c3dd4af65b11f92a5951f5c5c3 23-Oct-2010 Makoto Onuki <omakoto@google.com> Don't use sendMailCallback() -- don't track outbox status

There're differences between how SMTP and EAS use this callback.
We should eventually unify the behavior, but till then let's not
use sendMailCallback().

Bug 3116377

Change-Id: Ic5ecf16251c11ab2bd2e16e29bd417f1ece67f14
/packages/apps/Email/src/com/android/email/Controller.java
77aabd951992057a543f1699150971bf1f2d4394 15-Oct-2010 Makoto Onuki <omakoto@google.com> Don't move drafts to trash

Now deleted drafts are really deleted, rather than getting moved to trash.

Also rewrote the test to avoid creating AsyncTasks on the test thread.
In this case it seems to be running fine, but I've had problems doing this
before.

Bug 3099179

Change-Id: Ice5298bf94312ce764d90aa35c5a6c5262ec5b42
/packages/apps/Email/src/com/android/email/Controller.java
e069246d48bf5f90dfe20dacd709d495173ebb47 23-Sep-2010 Makoto Onuki <omakoto@google.com> Make sure callback is still registered when calling wrappee

This caused callback methods getting run after onDestroy() problem.

Bug 2799534
Bug 3011802

Change-Id: Id505e328bbff096a9f7474c033443ff6663a5fdf
/packages/apps/Email/src/com/android/email/Controller.java
b8efc2d048175f4d12630a036f9aed4e9be0f982 02-Sep-2010 Makoto Onuki <omakoto@google.com> Make sure MessageView series don't use mMailboxKey

Because "move" and "delete" are asynchronous operations, Message.mMailboxKey
can change any time. We can't use stored values.

(Fortunately it was used at only one place, and this was actually unused.)

Change-Id: Idc1300a00122fe0e6372b0374cddc98aa54a47fc
/packages/apps/Email/src/com/android/email/Controller.java
11aea1efe45b23c1217b31be029a527c9dc460b8 01-Sep-2010 Makoto Onuki <omakoto@google.com> "Move to" multiple messages

Now Controller.moveMessage supports moving multiple messages.

Change-Id: I5d9715cd94e55cf14254b4d4d731524be9d014a8
/packages/apps/Email/src/com/android/email/Controller.java
086aac2386a575a0e2c78b1fa8dd8ea13825ae2b 27-Aug-2010 Makoto Onuki <omakoto@google.com> MailboxFinder should ignore callback for non-target account

There were two cases where MailboxFinder responded to updateMailboxListCallback
when it shoulnd't.
- Callbacks for non-target accounts
- Callbacks arrived after the operation is finished

Make sure these callbacks are properly ignored.
Also, make sure startLookup() can't be called more than once.

Change-Id: I823c11ab5f96df4eb84594c08d3325d12319f708
/packages/apps/Email/src/com/android/email/Controller.java
64b64cca01c1a827c1b3824f099fd638cfb15826 27-Aug-2010 Marc Blank <mblank@google.com> Rename SyncManager to ExchangeService

* Updated comments and checked for 100-columns

Change-Id: I4ab5aaa9425714f8e035e1952db3fec63d498ae1
/packages/apps/Email/src/com/android/email/Controller.java
85cf69d371e70c5b58aa736c90788e6ba545fbba 27-Aug-2010 Marc Blank <mblank@google.com> Fix "move to folder" for both IMAP and EAS

* We were zero'ing the server id BEFORE the move, rather than
afterward; this is fixed in the current CL

Change-Id: I4a5f2b2de5794a110a8f657c80dfeac4955b5909
/packages/apps/Email/src/com/android/email/Controller.java
b53b1501055cbf5040bfd7b88a9cda084574c398 24-Aug-2010 Marc Blank <mblank@google.com> IMAP implementation of "move to folder"

* Clean up Controller.deleteMessage to work with new EmailContent
utility methods, and move out of the UI thread
* Add unit test for Controller.moveMessage

Change-Id: Ic49e2ecc7ef2252dd4d51f4c3b313b936fda78b6
/packages/apps/Email/src/com/android/email/Controller.java
4dcb1c5fdaacc40309b77af2a32532bc60218523 25-Aug-2010 Marc Blank <mblank@google.com> Fix attachmentExists (recognize mContentBytes)

* Add unit test for attachmentExists

Bug: 2937856
Change-Id: I020f58740618c084676bbf1cdfad3795edb07688
/packages/apps/Email/src/com/android/email/Controller.java
45f530ba5553dcbe3e548930945c40e13736deb3 24-Aug-2010 Makoto Onuki <omakoto@google.com> Integrate Controller w/ AttachmentDownloadService

* Add ControllerService to Controller and call this from
AttachmentDownloadService to handle attachment loading

(It's a redo of I3a6c2a40. Submitting for mlbank, who had a trouble
with repo.)

Change-Id: I7c90761ec4e213d6dc331fc894c7b77e84ad43a6
/packages/apps/Email/src/com/android/email/Controller.java
c184f36c2df16431693d7709e28ded593efc3da7 24-Aug-2010 Marc Blank <mblank@google.com> Revert "Convert Controller to a full service"

This reverts commit 0e6d972641c19467d6b26351ce14a3f44c9fd6f4.

Change-Id: I005fc34152396806468edef919a3620961ddb4fe
/packages/apps/Email/src/com/android/email/Controller.java
64dcd7700e134d112c3bd7460539fc1c97a13eb2 24-Aug-2010 Marc Blank <mblank@google.com> Add moveMessage to the EmailService API

Change-Id: Ia10f4a75b4c1288ec52dda8b925b9aee442b8e4a
/packages/apps/Email/src/com/android/email/Controller.java
0e6d972641c19467d6b26351ce14a3f44c9fd6f4 20-Aug-2010 Marc Blank <mblank@google.com> Convert Controller to a full service

Change-Id: I2078fd047ff46f85936c8bf798a5edd3678bb5b4
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
21efedb67fdfff208cef3a18804771fd1d1fff30 16-Aug-2010 Makoto Onuki <omakoto@google.com> Rework/cleanup of "refresh".

Added RefreshManager, which is responsible for getting refresh requests
from UI and keeping track of what is being refreshed.

Conceptually it's a part of Controller, but extracted for easier testing.

- Now sendPendingMessagesForAllAccounts() is owned by RefreshManager
rather than Controller.
- Also updateMailboxRefreshTime/mailboxRequiresRefresh have been moved
in from the Email class.
- Now MessagingException implements a method to return an error message
for the UI.

The refresh button on 2-pane doesn't work as intended yet, because the
spec is a bit too complicated (as described in the TODO in
MessageListXLFragmentManager.onRefhres()).

This change touches many file mostly because it cleans up a lot
of code duplication.

Change-Id: I058ab745ccff10f6e574f6ec4569c84ac4a3e10e
/packages/apps/Email/src/com/android/email/Controller.java
4be3bc1ec8a52308ee1998f0a31d7e491e06b3c1 14-Aug-2010 Makoto Onuki <omakoto@google.com> Properly unregister mock controllers

Some tests create mock controllers. They register themselves to
MessagingController when instantiated, but never unregister.

Added a cleanup method, and call it for each instance.

(I was hoping it would spped up unit tests, but it didn't. Still
it's a nice thing to do.)

Change-Id: Ia90f0380aef388d22f7cfcf6e9203e05444b3285
/packages/apps/Email/src/com/android/email/Controller.java
6d8bfa67c438ee18921d13d8bfba876aacaa9ff6 10-Aug-2010 Makoto Onuki <omakoto@google.com> Make AccountBackupRestore/"delete account" robust.

Fix for crashes caused by an incomplete account
which typically a crashed unit test leaves behind.

- "Delete account" now works for incomplete accounts
- AccountBackupRestore won't crash.

Change-Id: Ie235aa15cf9b970fd184c60f14406aa7353c6f00
/packages/apps/Email/src/com/android/email/Controller.java
ec15f2356e47d621584cc3fc84c9c02557e0a0df 28-Jul-2010 Makoto Onuki <omakoto@google.com> Extract the mailbox lookup logic into an independent class

This new class MailboxFinder is responsible for looking for a mailbox
by an account id and a mailbox type.

If a mailbox is not found on the first try, it'll tell Controller
to refresh the mailbox list, and try again later.

This will be used by MessageListXL.

Change-Id: I4adc3db025fb271c254aa2b58b3b753281dc7398
/packages/apps/Email/src/com/android/email/Controller.java
8d8f86e899165772a7d91250b98dfc3c0d78b538 25-Jun-2010 Marc Blank <mblank@google.com> Cleanup and speed up isMessagingController

* Use the new Account.getProtocol() method to determine whether an
Account "isMessagingController" (i.e. uses the legacy controller)
* Cache the result of this test, so that it's only done once per
Account
* Add unit test

Change-Id: I6a0ec789a84bdf30b55156e6337a627fb4e81a08
/packages/apps/Email/src/com/android/email/Controller.java
391ae25c43a38829cc0990af18c36bdc7cc374cf 05-May-2010 Marc Blank <mblank@google.com> Handle viewing of attachments that are, themselves, emails

* Add intent filter for application/eml and message/rfc822 mime types,
launching MessageView with a Uri
* Modify loadMessageTask to handle the Uri by parsing the attachment's
input stream with Pop3Message.parse(), and then creating an
EmailProvider message in a special Mailbox created to hold
"attachment" messages
* Delete all "attachment" messages after the parent message is closed
* Add unit tests

Change-Id: I20276ee006b9f05b889f3c808d3dc407cde26d49
/packages/apps/Email/src/com/android/email/Controller.java
291b90fb24214f767485c427739d25842936dff7 18-Jun-2010 Makoto Onuki <omakoto@google.com> Adding method that deletes an account synchronously.

New tests that's under development will need it.

Change-Id: I5abf168dae6ed0e78db4ae82210673decfa9ece7
/packages/apps/Email/src/com/android/email/Controller.java
91d47ccb47e4d4e340854a091d39886fbbadbf15 17-Jun-2010 Makoto Onuki <omakoto@google.com> Cleaning up MessageListFragment.

- Introduced EmptyCallback to avoid the flood of null checks.

- Fixed some TODOs in MessageListFragment.
- Notably, sendPendingMessages() is now handled by the fragment itself,
rather than by the activity.
- Moved two DB accesss from the UI thread to a worker thread.

- Replaced the 'mailboxid < 0' check with isMagicMailbox(), which is more
explicit and easier to understand.

- Renamed some methods in preparation of moving to the activity.

Change-Id: Ie730c2c561050bbfa83a38252fcf09d59238f7ea
/packages/apps/Email/src/com/android/email/Controller.java
7e1de3c484ad0faa5f2d789649c1b4979e071044 11-Jun-2010 Makoto Onuki <omakoto@google.com> Fix NPE in Controller and MessagingController.

Bug 2553401
Bug 2186777
Bug 2721133
Bug 2684365
Bug 2530534

Change-Id: I5185d9196deab5ba3a9866e2de2a9be04a04ca03
/packages/apps/Email/src/com/android/email/Controller.java
954bcd45b0c9febfb41bb0dc3dde2eca7559a290 04-Jun-2010 Makoto Onuki <omakoto@google.com> Move account deletion feature to Controller.

Change-Id: Icd3a7cc4ff0db8fb65d3e01868543e7ce8ea79e7
/packages/apps/Email/src/com/android/email/Controller.java
3f545a4060982b8a5d715905c7818d59056c1ee0 07-Jun-2010 Makoto Onuki <omakoto@google.com> Controller rework.

- Controller.Result is now a class rather than an interface,
so subclasses don't have to implement empty methods.

- Replaced Threads with AsyncTasks, which is more light weighted
because it uses pooled threads.

- Removed the Result argument from Controller's methods.
These argumetns weren't used, except in serviceCheckMail.

Regarding serviceCheckMail, the new code behave differenly from the old code.
If there's already listeners registered when it's colled, they wouldn't get
called in the old code, but they will in the new code.
But I think this difference is okay because that's how it works for
POP/IMAP accounts.

Change-Id: I37a857ce7c089c1a411cb7f1fcfcb72c9f5fd2a6
/packages/apps/Email/src/com/android/email/Controller.java
c7b6145c125cf0f9bdd6426db11ee796fe8b1cf1 04-Jun-2010 Makoto Onuki <omakoto@google.com> Fix the cache in Controller.

Turned out we can't reuse EmailServiceProxy, so only cache the account type.

Change-Id: I5499c2440082580d6f0739ae85b888f1afb65ba8
/packages/apps/Email/src/com/android/email/Controller.java
768aff4c88a13c1663b1c33b1ab03637e5ce375b 03-Jun-2010 Makoto Onuki <omakoto@google.com> Cache for Controller.getServiceForAccount.

Change-Id: I607c437d6e0781ae8305df22c13a0e3a003c623f
/packages/apps/Email/src/com/android/email/Controller.java
968be441b4c253668c4ee1c7a3f8e4b0eb12cf24 21-May-2010 Makoto Onuki <omakoto@google.com> Don't store arbitrary Context in singletons, which causes memory leak.

We have singletons that store a Context passed to getInstance().
The problem is that when we call them, we casually pass any Context at hand.
If it's an activity (which is often the case), it'll never be GCed.

This CL make them store the application context insteaed.

Change-Id: I1abcc2c08d3f8201416d6c14720f041693823b4e
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
605371e793c7038cf24c15ca5090f27ab431ce79 04-Apr-2010 Andrew Stadler <stadler@android.com> Show a less-generic error message for security errors

* In Controller, map EmailServiceStatus.SECURITY_FAILURE
to MessagingException.SECURITY_POLICIES_REQUIRED
* In MessageList, map MessagingException.SECURITY_POLICIES_REQUIRED
to string account_setup_failed_security

Bug report will be forwarded to next release to get a more specific
string with proper translation.

Bug: 2563988
Change-Id: Ia1e6e947e3c0c7e6bd37301de2ea8ef4d641ef14
/packages/apps/Email/src/com/android/email/Controller.java
f5c3db12de89365c6d52c6d75c7b684e2c0d16ff 02-Apr-2010 Marc Blank <mblank@google.com> Fix NPE in resetVisibleLimits

* resetVisibleLimits can be called via BootReceiver, which isn't in the
Email app process, so it can (and apparently did) get a RemoteException
* This causes the query to return null; we have to check for it or we
get this NPE

Bug: 2564904
Change-Id: I4b75e3c74ac7d1276f609f2fc957afdaa8da2f64
/packages/apps/Email/src/com/android/email/Controller.java
22d29c67dacf4e8155a588d59815f1f97ecf0588 19-Mar-2010 Makoto Onuki <omakoto@google.com> Fix potential NPE with restoreMailboxWithId().

There are a few places where we don't do the check in restoreMailboxWithId,
but they don't look trivial enough for me to fix.

Bug 2530534

Change-Id: I77b37a87ef108048077f14c1e8a3457ee494100a
/packages/apps/Email/src/com/android/email/Controller.java
9fe51f632965f5d085ae45a1089c7c97dcec8881 02-Feb-2010 Makoto Onuki <omakoto@google.com> Gather common exchange related methods into one place

So that it'll be easier to remove exchange dependency.
/packages/apps/Email/src/com/android/email/Controller.java
bb9b5163c19449efab72746351479d193be5e122 29-Jan-2010 Makoto Onuki <omakoto@google.com> Move non-exchange specific classes to com.android.email.service.
/packages/apps/Email/src/com/android/email/Controller.java
5de54008e58ff63d388e4d448b50a47950990e22 25-Jan-2010 Marc Blank <mblank@google.com> Handle Exchange meeting invitation responses

* Includes some refactoring of internal "request" code in SyncManager
* Adds Message flags to tag meeting invites and cancellations
* Adds meetingResponse method in EmailService
* Hooks into Controller and MessageView UI included

Change-Id: I4c5e10bccc4b41956b94d9dfa55925e5af030939
/packages/apps/Email/src/com/android/email/Controller.java
9ef6f645f57d869a600113f555389b5d5e368c21 17-Oct-2009 Mihai Preda <preda@google.com> Controller: modify the test for "attachment already loaded".

Bug 2192510.

update unit test.
/packages/apps/Email/src/com/android/email/Controller.java
f9ccc0ba88e00c4175f6720aca07876d50b9f22f 01-Oct-2009 Andrew Stadler <stadler@android.com> Plumb send-message status callbacks from service

* Make sure service callbacks are installed
* Route from service sent-message callback to controller results

This sends the callback information back to listeners who care about
sent messages. Note, due to impedance mismatch between the service
and the controller, this should not be used for much more than an
indication that outbox status has changed.

Bug # 2158497

Change-Id: I8d013d97ef53dcca85216f9b8c027ba3917c1e85
/packages/apps/Email/src/com/android/email/Controller.java
7768ce276ede4ee979df28ee514ddca79bdb90ab 25-Sep-2009 Mihai Preda <preda@google.com> MessageCompose: delete the attachments that are removed in the UI.

Bug 2139949.
/packages/apps/Email/src/com/android/email/Controller.java
e892f6f978c18d1d43f94681f4d73f36d5f8a2cd 25-Sep-2009 Marc Blank <mblank@google.com> Harden a few calls in Controller

* Check for null account (situation in which the Account has been
deleted)

Change-Id: Iabd949c32443c7496a249ac5b7cdca22fc920a18
/packages/apps/Email/src/com/android/email/Controller.java
fa52e6c95674aef6461a5cfc670a052e1c5b7f2f 21-Sep-2009 Andrew Stadler <stadler@android.com> Clean out old mailbox names logic and fix a couple of bugs.

* Get rid of old Account.getxxxFolderName() calls.
* Clean up any call sites to them
* Properly rename the existing special folder name identifiers
* Use a hash table in MessagingController to improve identification
of special folders for IMAP accounts
* Fix a bug in Controller, which was creating new server-side folders
using localized names.
* Fix a bunch of code in Controller that was using mContext, instead of
using mProviderContext to support testability.
* Fix broken unit tests in ControllerProviderOpsTests

Fixes bug 1904373
/packages/apps/Email/src/com/android/email/Controller.java
9312faea437854f075df57b9ec23a5d57cb8db0c 19-Sep-2009 Andrew Stadler <stadler@android.com> Restore lost connection error UI

We lost the reporting of connection errors in the UI. These were
originally displayed in FolderMessageList, under the name of each folder.

In the new implementation, we borrow the "undo" banner from Gmail and
display it whenever there is a connection error in a mailbox.

* Add banner, and code to animate it on/off the top of the list.
* Toggle banner whenever a connection state change occurs in MessageList
* Toggle banner whenever a connection state change occurs in MailboxList
* Slight change to callback semantics for sendMailCallback
/packages/apps/Email/src/com/android/email/Controller.java
0c4dc85190028f389f0dcbc3dbed0b344d20a313 16-Sep-2009 Andrew Stadler <stadler@android.com> Harden against crashes caused by account deletes

The basic failure mode is to delete an account while it is being
synced or some other background activity. The fixes in this CL will
harden against this, but it will not be a perfect solution; That
will require shutting down all sync, which is difficult in the current
too-many-threads implementation.

Primary bug# 2112564
/packages/apps/Email/src/com/android/email/Controller.java
f9ab857a5599faac2896394180fcd4ed56b09941 11-Sep-2009 Andrew Stadler <stadler@android.com> Implement delete-from-trash

* Edit Controller.deleteMessage() to handle both cases
* Refactored to start from processPendingActionsSynchronous() and
dispatch to series of smaller methods to handle deletes vs. updates
and the details of the various specific operations.
* Added processPendingDeletesSynchronous() which looks for delete-from-
trash and does the right thing locally and/or remotely.

Fixes bug # 1811026
/packages/apps/Email/src/com/android/email/Controller.java
6c21942ec45f561d711b3d74ecca8e62afb735c4 10-Sep-2009 Andrew Stadler <stadler@android.com> Implement move-to-trash for IMAP and POP3.

* Define new message-loaded state "FLAG_LOADED_DELETED" (used only for
POP3, which needs to write sentinel messages that are not displayed.)
* Also renamed the other flags to make the naming more consistent.
* Tweak MessageList query generation to inhibit display of deleted
message sentinels, and MessagingController won't try to resync them.
* Clean up implementation of Controller.deleteMessage()
* Add support for move to trash to MessagingController. This operates
in three primary modes:
* POP3 local delete (no server-side interaction)
* POP3 server delete
* IMAP server delete (and copy to IMAP trash mailbox)
* Add missing implementation in provider to delete all of the attachments
for a given message
* Fix progress reporting in activities (the test for error vs. progress
was inverted, which caused progress indicators to keep spinning
after errors.)
* Fix broken account settings UI (POP3 delete policy was not persisting)

Addresses bug 2097409

TODO delete from trash / empty trash

Change-Id: I00188e6dc2093823106e009f35b68c760227c9e6
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
df86adf87328a439347260331592509787020420 25-Aug-2009 Andrew Stadler <stadler@android.com> Finish the code to demand-load partially loaded messages.

This happens in two primary cases:
1. When a very large POP message was skipped during initial sync
2. When any message was interrupted during initial sync, e.g. by
a dropped connection.

Changes:
* Added loadMessageForView and callbacks to Controller (and touched all
files with Controller listeners)
* Rewrote loadMessageForView in legacy MessagingController to work with
provider.
* Update flow in MessageView to use loadMessageForView when needed.
* Restored the use of "loading.html" and "empty.html" assets (although
I think we should replace them with simple layouts & views.)
* Some random cleanup in MessageView

Satisfies bug # 2065563
/packages/apps/Email/src/com/android/email/Controller.java
77398c42899a383680005b92955a29ab3d872c5c 24-Aug-2009 Andrew Stadler <stadler@android.com> Reenable Load More Messages for IMAP/POP

* Properly reset all mailbox limit values
* When load more messages is clicked, increment limit and resync
* Also fixed a race condition in provider

Resolves bug 2065626

Change-Id: If50f25a5cb3b549b3acc48406c78533ad86ed4d5
/packages/apps/Email/src/com/android/email/Controller.java
4b41bae270ea4c49ec8403084db43ee9b37cdda4 20-Aug-2009 Andrew Stadler <stadler@android.com> Enable IMAP/POP sending and EAS resend

* Finish IMAP/POP sections of Controller.sendMessage
* Rewrite MessagingController.sendPendingMessagesSynchronous
* Add deleteAllAttachmentFiles to AttachmentProvider, and unit test
* Rework sendMessage callbacks and integrate into MessageList UI
* Send pending from UI

TODO:
* Find other places from which to call deleteAllAttachmentFiles
/packages/apps/Email/src/com/android/email/Controller.java
d366346a640c93d70b78ddadfbc3a3b74944359b 20-Aug-2009 Marc Blank <mblank@google.com> Implement sendMessageStatus callback in EAS

* Change API for callback to include message subject (when msg is isn't valid)
* Update users of callback to add the new argument
* Use API in EasOutboxService to send status messages back to the UI

Still TODO: Add relevant error codes for sending problems that are not related
to connection or login issues
/packages/apps/Email/src/com/android/email/Controller.java
e346193f06c6c3ffd8412ce151109df8b7f45999 20-Aug-2009 Andrew Stadler <stadler@android.com> Add status item to bottom of message list.

* Add code to (optionally) add footer, update text & progress dynamically
* Add hook to dispatch various actions (refresh, load more, etc.)
* Some cleanup of the launch helpers for MessageList

TODO:
* controller handler for the "send messages" case (subsequent CL)
* controller handler for the "more messages" case (subsequent CL)
* reporting of send results etc. into the status line
/packages/apps/Email/src/com/android/email/Controller.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/Controller.java
46d7d7f1b6387d144c3f9e7c987418dc8f55fad4 18-Aug-2009 Andrew Stadler <stadler@android.com> Rework service to use provider accounts and controller.

* Rewrite service logic to select and update one account at a time
* Add checkmail API to Controller, and much rework/cleanup of existing
callback API's
* Rewrite notification posting code
* Rewire connection to MessageList to be opened by notifications, to
cancel notifications, and to reset the "new message" count whenever
an account is viewed.
* Boilerplate cleanup to a lot of activities because they share the
callbacks that have had minor changes.
* Remove old push controls from Store API

In progress:
* To provide notification mechanism for EAS pushed mail
/packages/apps/Email/src/com/android/email/Controller.java
9627d014e16235eadf981b9165807dc72a14a383 12-Aug-2009 Mihai Preda <preda@google.com> MessageCompose: update body on save.

- plus unit tests.
- and some attachment refactoring.
- move PROJECTION_ID up to EmailContent.
- add index on messageKey to Attachments and Body tables.
- add missing Columns.ID field in EmailContent.
/packages/apps/Email/src/com/android/email/Controller.java
3f1ac4da947f426775c9546f2e37206f58ce1a6e 12-Aug-2009 Andrew Stadler <stadler@android.com> Add code to handle IMAP/POP attachments.

IMAP messages up to about 25k will be downloaded properly.

* Move Store->Provider message rewrite code to a separate utility.
* Add code to descend a Store message and write provider attachments.
* Unit test basic IMAP attachment handler

TODO:
* handle large IMAP messages.
* unit test for POP
* unit test for large IMAP messages
/packages/apps/Email/src/com/android/email/Controller.java
cc402e42ab70699fb43d23e69a724639b9507738 09-Aug-2009 Marc Blank <mblank@google.com> Clear error states on network reconnect; add temporary notifications; see details

* When we get a network connect broadcast, clear error states so sync can
restart for any boxes in an error state
* Add temporary notification code for the testers
* Add file-based debug logger
* Add Exchange logging to debug screen (adds additional exchange debugging)
* Add Exchange sd card logging to debug screen (logs to sd card)
* Change setLogging service API to send an int rather than a boolean
* Make sure push mailboxes are set up again when account changes to push
* Make sure push mailboxes are set up again when account mailbox starts
* (Fixed contacts sync bug found during debugging these changes)
/packages/apps/Email/src/com/android/email/Controller.java
2917e895c7e7c33407a77c76232569d4bd4905cf 29-Jul-2009 Mihai Preda <preda@google.com> MessageCompose:
- set displayName for composed messages (from To:)
- set FLAG_LOADED
- do the save & send in an AsyncTask
- some clean-up
/packages/apps/Email/src/com/android/email/Controller.java
f00dccd32125c727cc18d837b59c15c95f5d78bc 31-Jul-2009 Marc Blank <mblank@google.com> Massive reworking of EAS serialization; much smaller and faster now

* Remove all use of Strings in favor of the parser's static final int's
* Strings remain in Tags for debugging output only
* Renamed lots of classes to be more consistent
* Centralized logging behavior in Eas class
* Found and fixed some bugs in the process:
- Account deletion wasn't removing HostAuth's correctly in the trigger
- Adding a second EAS account was trashing the first one
- Fixed looping sync behavior caused by Exchange 2003 bug
/packages/apps/Email/src/com/android/email/Controller.java
77898e14e96feb5d107c4e69b5241169e7425058 31-Jul-2009 Andrew Stadler <stadler@android.com> Enable logging in EAS based on Email.DEBUG flag.
/packages/apps/Email/src/com/android/email/Controller.java
8f7f93a7b36d873d5adba65f4da54819880c0285 31-Jul-2009 Andrew Stadler <stadler@android.com> Enable account & mailbox sync for exchange

* Now attempts folder list sync for exchange
(goto folder list and click sync)
* Folder sync never seems to call our callback - bug in EAS side?

* Now attempts mailbox sync
(go to an EAS mailbox and click sync)

Also:
* Cleanup start/stop/error path for IMAP/POP as well
* Small bugfix in SyncManager.java (was calling wrong callback)
* No longer trying to set mailbox read/unread count in IMAP/POP
/packages/apps/Email/src/com/android/email/Controller.java
ea69fc40d75f5fcf38872f836cdea9fb3aa9c991 30-Jul-2009 Andrew Stadler <stadler@android.com> Rework Controller to use new single callback from EAS.

* Use unified callback instead of per-call callbacks
* Remove per-call tag
* Rework MessageView to operate without tag
* Minor cleanups in service side
/packages/apps/Email/src/com/android/email/Controller.java
c449cba5101f083d4cef8acd9972bc05598bad44 29-Jul-2009 Marc Blank <mblank@google.com> First pass at implementing new IEmailServiceCallback.

* Add setCallback method to IEmailService interface
* Remove the callback from loadAttachment and loadMore in SyncManager and
EmailServiceProxy
* Remove the callback from PartRequest
* Update EasSyncService to use the saved callback in SyncManager

Note: Unsure how to handle the case in which SyncManager dies, since it
will no longer have the callback available...
/packages/apps/Email/src/com/android/email/Controller.java
334903369e1ea8f032d7ffd67f57f4e7004dc2cf 28-Jul-2009 Mihai Preda <preda@google.com> initial Controller.sendMessage() and invocation from MessageCompose.
/packages/apps/Email/src/com/android/email/Controller.java
a98de7e55e91229c35352b496fad3fbb108a9609 28-Jul-2009 Andrew Stadler <stadler@android.com> Finish Attachment support for EAS accounts.

* Change service API to allow caller to supply complete target path/file
* Also allow caller to supply the final content_uri
* In MessageView, use full integration with EAS service API and
attachments content provider to enable:
* Save: Only works on SD card
* View: Works w/o SD card using content provider & intents
* Thumbnail previews
/packages/apps/Email/src/com/android/email/Controller.java
b8a781f220617d6e7750c5e9f093742206add45f 24-Jul-2009 Marc Blank <mblank@google.com> Load EAS attachments internally with new API ; re-sync after account changes

* Fix bugs #1993689 and #1997842
* Update test for attachment name creation
/packages/apps/Email/src/com/android/email/Controller.java
6ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6 23-Jul-2009 Andrew Stadler <stadler@android.com> Moving message operations into Controller, and load attachments.

* Moved logic into Controller:
* toggling read/unread
* toggling favorite status
* some new unit tests
* load attachment
* Completed logic for EAS to save attachments and MessageView to
begin and complete that process.

NOTE: Until EAS has a mode for saving the attachment locally (and I
rewrite the attachmentprovider to handle the new database) I am
implementing "view" attachment to just call "save". This means that
attachments "viewed" will be dropped onto the SD card, instead of
cached and flushed.

TODO: Controller is not properly working in its own thread, yet, so
we are not properly preventing ANR's yet.
/packages/apps/Email/src/com/android/email/Controller.java
9e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857 23-Jul-2009 Andrew Stadler <stadler@android.com> Remove saveOrUpdate from EmailContent to prevent stale writes

* Numerous classes modified to deal with this change
* Fixes bugs 1993292 and 1994671
* Renamed various setter and getter methods to reflect the underlying
field names
* Renamed syncFrequency to syncInterval in Account and Mailbox
* Convenience method added to AccountSettings to save only user settings
* Calls to content.update(context, content.toContentValues()), which save
all fields, should be double-checked for correctness, making sure that
content has current data and will not conflict with other threads that
might modify that data
* Ran all unit tests to confirm proper function

NOTE: The logic to enforce single default account no longer works,
because that logic is in Account.save() and does not run via
Account.update(). I have patched out a small section of the relevant unit
test and will file a bug to come back for this fix.
/packages/apps/Email/src/com/android/email/Controller.java
c6893ddf0fc1a647ca13a2b3aac2c68ca345de37 09-Jul-2009 Mihai Preda <preda@google.com> First steps towards using the new EmailContent.Message in MessageCompose.
/packages/apps/Email/src/com/android/email/Controller.java
7c3cca80a0b4dacb7bcb48c65a9999138b5df82b 06-Jul-2009 Andrew Stadler <stadler@android.com> Reenable delete-message UI and write delete-from-provider.

* Longpress delete in MessageList
* Delete or Menu-Delete in MessageView
* Add deleteMessage() to Controller
* Unit tests for the new code in Controller
/packages/apps/Email/src/com/android/email/Controller.java
7b0b463477ef7172bd4b9e19c6338634ebedd8ee 23-Jun-2009 Andrew Stadler <stadler@android.com> List messages from MessagingController & Stores.

* update MessageListener callbacks and remove the callbacks that
edit data (this comes through the provider now).
* provide simple linkage via Controller to sync a mailbox
* update FolderMessageList to trigger mailbox sync
* rewrite synchronize to push messages into provider
* small improvements to FML (sorting; show read/unread status)
* note: trailing whitespace cleanup in some files
/packages/apps/Email/src/com/android/email/Controller.java
bcec088320fc56cd5b5e1bbc706e4b7e304b95bf 18-Jun-2009 Andrew Stadler <stadler@android.com> Begin implementation of new master controller

The first thing we'll implement is a function to list remote folders,
and it will call the existing MessagingController to do that for IMAP
and POP3.

Also change default folder type # order to get desired order in UI
/packages/apps/Email/src/com/android/email/Controller.java