* Also avoid looping through zillions of messages when
checking uid's
* Always have 25 (or whatever the visible limit) messages
loaded
Change-Id: Ib2f02a59cc438e3fd14d7ac607fb01d9a5fa5282
* Much, much faster
* Remove message length pass and lots of other useless code
* Create pseudo-attachment for long messages (click to download) that
includes size (so user can determine whether it's worth it)
* Handle download of message via pseudo-attachment; real attachments
are then created as necessary.
TODO: Add real UI with UX input (or modify existing to clean up the
loose ends)
TODO: Optimizations for loading the whole message
TODO: Get server delete working (isn't working currently anyway)
Change-Id: I31f3809fc5a2f9fd490d33cfed70d2930654e71d
* Refactor/simplify Transport/MailTransport
* Add serverCert column to HostAuth table in EmailProvider
* During first connection to server, save the server certificate
in the HostAuth; on subsequent connections, ensure that the
certificate presented has the same public key as the one
stored
* For now, we'll just fail to connect (with a CertificateException)
if there's a mismatch
TODO: Add some UI to handle different certificates
Bug: 6888866
Change-Id: Ia79497e89eaad8d43617b50d3771121b2ed7f687
* Handle sending mail and moving to sent folder
* Implement picker for sent folder
* Upload sent items to server
* Add support for "automatic" sync window
* Move some files from Email -> emailcommon
* The added files are copied directly from Email (and can be
removed if/when Imap2 is merged back with Email)
Change-Id: I3a6a3d224826e547748be2f1b567b6294ad5db89
This CL includes the following:
* New Imap2.apk generation (not included in builds)
* "Push IMAP" option for accounts when Imap2.apk present
* Account creation/setup
* 2-way sync of messages, deletions, flag updates
* Push (messages, flags)
* Folder list hierarchy handling
* Message text (one plain or html part)
* Picker UI for trash folder (placeholder)
* Capabilities handling/UI command
Major Imap2 new features:
* Push
* Multiple folder sync
* Sync window (like EAS)
TODO:
* Picker UI for sent folder
* Upload of sent messages to server
* Search
* Multiple viewable parts
* Probably lots more, incl. unit tests
Change-Id: Ia5d74073d9c307e0bdae72a7f76b27140dde7d14
The Email.apk checks for "-STARTTLS" in the SMTP server's EHLO response
but SMTP servers may respond with STARTTLS on the last line as such:
250 STARTTLS
Or even as part of a line as such:
250-XSECURITY=NONE,STARTTLS
Checking for "-STARTTLS" in this case will break. The fix is to simply check
for "STARTTLS" instead.
See http://code.google.com/p/android/issues/detail?id=19109
And http://code.google.com/p/android/issues/detail?id=2309
Change-Id: I3a590a4398cb664f46875650550986a67f320f76
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
* The existing IMAP search code is well-known to be primitive and
largely broken. In particular, it fails with any non-ASCII
character and with a variety of symbols (e.g. quotes, slashes,
etc.) Basically, it's an accident waiting to happen, returning
empty data sets even when the query might reasonably be expected
(or known) to return valid data.
* The current CL uses the IMAP literal string format to represent
the query text; this string can be sent either in ascii or in
UTF-8, and since it is sent as an octet (byte) count followed by
8-bit data, it also solves any quoting issues that might come
up. So, we kill two birds with one stone.
* The bug in question was punted to a subsequent MR; however, I
think it would be a mistake to ship the code without this
CL, which has been tested against the three common IMAP servers
that we aim to support.
Bug: 4690713
Change-Id: Iaa542bfc56737871f3cbc9c83f0e768415a7f2b6
* Caching Senders isn't a great idea; during validation, it causes
the bug referenced below. It's a small optimization anyway, so
we'll just get rid of the cache.
* Also, remove unused code
Bug: 5144603
Change-Id: I539284dfa6d457fffd5cb011b8e1db5881249636
* 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
Adhere to RFC2821 Sec. 4.1.3 Address Literals should be enclosed by brackets and
prefixed with 'IPv6:' if the sender is an IPv6 host
Original author: Jon Starling
Bug: 4207470
Change-Id: Id327930001188186713e38d1ce8ecc1dad8cfbc0
* 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
* 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
* Rename ExchangeUtils to EmailServiceUtils
* Create calls for Exchange to use (eventually remove these)
* Get rid of lots of nonsense in ExchangeStore
Change-Id: Ic538cfe1de57eca24088ee1f590264283d12f511
* 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
* 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
* Remove per-store limitations
* Use constants for VISIBLE_WINDOW, rather than having the
potential for differences between Stores
Change-Id: Idd5e0874bba6e3390e4f093bcb03f4b1bb399c11
Some email servers require client certificates to be presented to
establish an SSL connection. While this certificate will be maintained
by the system key store, we need to store the "alias" of the certificate
stored in that system store.
Wiring up to use the actual alias will be done in future CL's. It is
currently unused.
Change-Id: I8d1290151342daea9ceb0df8a4088405b44faa81
When legacy support for mailboxes with a parent key of '0' was removed, the
parent key for POP3 mailboxes was not updated. This forces the parent key
for all POP3 mailboxes to be "no mailbox". If we ever want to support virtual
mailboxes for POP3 accounts, this will need to be adjusted.
Change-Id: I4ae0e386db4bcdaf559b87ca17cbe0d151dea75b
After appending a message to a mailbox (i.e. like appending to the 'sent'
mailbox after composing a new message), we would try to determine if the
append was successful by searching for the message. Most servers return an
APPENDUID response with the message's new UID. However, on those that don't
support APPENDUID, we need to perform a SEARCH for the message id. On one
set of these servers, the search would fail if the query string was
surrounded by parenthesis. However, another set of servers will fail if the
query string is not surroudned by parenthesis. So, we now try both ways.
Change-Id: I5a82ad241fb927e28aa5d05376568d5eac266a95
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
No real code changes; just moving where code / constants live. Removed
one unused method of Store.
Change-Id: Ie7532381759a568cb23601e1071c8e199b6beb07
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
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
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
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
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