Commit Graph

417 Commits

Author SHA1 Message Date
Marc Blank
0b5f15d61e Make sure account capabilities get set properly in UIProvider
* Change getCapabilities API to take an account, rather than
  the id of the account
* getCapabilities() can therefore execute even before Exchange
  is fully up and running

Change-Id: Id4c2a9942ea7a21e0c56401c50206b680274b43e
2012-07-25 13:25:02 -07:00
Marc Blank
00287c4d8f Remove unused code; rename some constants
* Also handle large batch operations in chunks

Change-Id: Ie566cb8d8bb73e8edd663de5228e905c223f031b
2012-07-20 10:25:11 -07:00
Marc Blank
a8b683cf3f More work on Imap2
* 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
2012-07-19 14:27:17 -07:00
Marc Blank
c6089bc01f Initial Imap2 implementation
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
2012-07-18 11:32:26 -07:00
Marc Blank
f419287f22 DO NOT MERGE: Move emailcommon2 sources to emailcommon
Change-Id: I06df7e467cd2e0117df8b8db3ddc6ff9da13f1c7
2012-06-28 11:15:06 -07:00
Paul Westbrook
7a7508c641 Build against the ICS SDK
Change-Id: Ib6429d43420b1382c8dfc81d30568c62cbbf92b6
2012-04-27 12:40:13 -07:00
Marc Blank
03cd72805d Revert to old Email app
* These are the last sources in the ICS-MR1 tree

Change-Id: Ida4651bddd92a06a518d00f3e1f275ab3a80c8ae
2012-04-25 13:58:23 -07:00
Marc Blank
e2166f7548 Add totalCount to Mailbox; send to UIProvider
Change-Id: If01868eb27a97540683f25148f32b8c41ae59c17
2012-03-10 20:15:58 -08:00
Marc Blank
55d0e821ea Report search result total to UI
Change-Id: Ic88e7594b98548a96c8c6f96d2f8a585e539f520
2012-03-09 14:04:49 -08:00
Marc Blank
ebb79619e8 Move account delete logic to EmailProvider
* This functionality had to move away from Controller

Change-Id: I557918a325eab8c83a9728fa1ce33dde8b86158f
2012-03-09 12:59:21 -08:00
Marc Blank
06a382f26f Fix up delete to handle trash/drafts deletions
* Also, while we're here, create default "last touched time" for drafts and
  sent so that they appear in the initial recent list

Change-Id: Ie2fe20b34625b5616dac5581f9bbd015f52a82bc
2012-03-08 14:36:26 -08:00
Marc Blank
70bbe5ec3c Add columns to Attachment for UIProvider use
Change-Id: I7f85431f409dbd6a5bd6d111b18d1fc89c00b9b2
2012-03-07 13:10:23 -08:00
Marc Blank
54c26f9d32 Improve hashCode() for Address
Change-Id: Ifa15e57d8b7ff83511aab853dc0a5da1eb14892d
2012-03-04 17:31:38 -08:00
Marc Blank
0ba6b91842 Give Address a hashCode() method
Bug: 1858468

Change-Id: Ic91292c7ab7cf8b42cdecd54fa2d4faf91b2ff4d
2012-03-02 15:18:57 -08:00
Marc Blank
9a5e2a798e Fix clearing of mailbox notifications
Change-Id: Ieb98a8908ec067229dd449790da55085585ef17b
2012-02-26 12:52:57 -08:00
Marc Blank
bf5caf97c5 Notify by mailbox, rather than account
* Update EmailProvider, removing two no-longer-used columns in Account and
  Mailbox

Change-Id: Ie0f10eb0ca315d73e82be968f7760a51a239ba3f
2012-02-24 14:51:59 -08:00
Marc Blank
272d22d641 Add last sync result definitions to EmailContent
Change-Id: I43ea9a9ed3e1982610443887298d54654deb01b8
2012-02-23 10:28:36 -08:00
Marc Blank
1dc7772d43 Support syncStatus and lastSyncResult in EmailProvider
* Also, trigger a sync on refreshUri

Change-Id: Ia8dee593decfc2101873071ad64fcc3fd1fd5f23
2012-02-22 11:50:18 -08:00
Marc Blank
4f813fb129 Convert POP3 to service
* Remove MessagingController and (almost all of) MailService

Change-Id: I8953b58b237de6a71fda770f1727bd94081fec55
2012-02-16 10:27:00 -08:00
Marc Blank
c84467afe1 Start of IMAP conversion to Service architecture
* Handle startSync and loadMore
* Use SyncManager rather than MailService for periodic sync
  and upload sync
* First of many CL's to disentangle sync from UI
* Note that the large majority of this CL is a refactoring
  of IMAP specific code out of MessagingController and into
  ImapService; MessagingController will eventually be
  removed entirely from the app, as will much of Controller

Change-Id: I13546d0694479b33cf93c25920dedc1d38227f6c
2012-02-13 11:04:56 -08:00
Marc Blank
87d7a60417 Handle update of draft
Change-Id: I15c2b2b85afeff19e4ae7520c36a6119ab1e5cca
2012-02-03 09:51:07 -08:00
Mindy Pereira
b057793bf2 Remove second copy of apache code. Depend on unified email for these classes.
Change-Id: Ibe3e18b8e38389bff7f0e3a3479b660b97f94c7e
2012-01-30 12:50:04 -08:00
Marc Blank
36ed276f7a Store UI-friendly addresses in EmailProvider database
* Currently, we store a generally incompatible packed string format
  for to, from, bcc, cc, and reply-to columns
* Change this to UI-compatible, comma-separated RFC822 strings
* Upgrade database to use new format

Change-Id: I42c01d72b49531c4324d3956edf5ff362d5c9120
2012-01-17 13:11:45 -08:00
Marc Blank
fd81e19779 Don't save Policy with Account
Change-Id: Ib3601daee8780640a07db573f623e99279c9f9b1
2011-11-21 13:04:26 -08:00
Andy Huang
f20f3e216f am 56d6f4a6: Merge "Style cleanup in email message header to make it more like Gmail" into ics-mr1
* commit '56d6f4a6f13b53051d17579c54cebe0372515f3d':
  Style cleanup in email message header to make it more like Gmail
2011-11-03 05:17:42 +00:00
Andy Huang
358a815701 Style cleanup in email message header to make it more like Gmail
Linkify email addresses in expanded message details
Remove divider line in upper header on phone
Embolden sender name
Twiddle expanded details line spacing and padding to match Gmail
Add space char to collapsed details recipient enumerator (comma)

Bug: 5520692
Bug: 5520787
Change-Id: Iad4a265168d111aa01654a33a9a14f7968fc3181
2011-11-02 15:50:00 -07:00
Marc Blank
4317ff162e am dea198bb: Add utility to determine if account can\'t auto-sync due to roaming
* commit 'dea198bb041754745c3b1522671fd31a79c7168c':
  Add utility to determine if account can't auto-sync due to roaming
2011-11-02 19:00:58 +00:00
Mindy Pereira
af9e4ef82e am ddcb0db4: Merge "Revert "Add utility to determine if account can\'t auto-sync due to roaming"" into ics-mr1
* commit 'ddcb0db429df71356360b2224b56b01b7051c34c':
  Revert "Add utility to determine if account can't auto-sync due to roaming"
2011-11-02 17:50:05 +00:00
Marc Blank
6638627595 am 483f4927: Merge "Add utility to determine if account can\'t auto-sync due to roaming" into ics-mr1
* commit '483f49274e0aed3d4158ac6c2ba9fd693acb2809':
  Add utility to determine if account can't auto-sync due to roaming
2011-11-02 17:31:48 +00:00
Marc Blank
dea198bb04 Add utility to determine if account can't auto-sync due to roaming
* We need to call this out to the user (a surprised user is an
  unhappy user)
* Required for fix to bug referenced below

Bug: 5533550
Change-Id: I64a870a703de7e02ce882aefc3636a1668021eb8
2011-11-02 08:59:36 -07:00
Mindy Pereira
ea4adf0c6b Revert "Add utility to determine if account can't auto-sync due to roaming"
This reverts commit 95abeed64a
2011-11-01 17:17:06 -07:00
Marc Blank
95abeed64a Add utility to determine if account can't auto-sync due to roaming
* We need to call this out to the user (a surprised user is an
  unhappy user)
* Required for fix to bug referenced below

Bug: 5533550
Change-Id: I7da337057b9b28300ddd485283920e12c1ae53da
2011-11-01 14:11:43 -07:00
Marc Blank
2736c1a11c Rewrite of security policy handling and service code
* Remove PolicyService APIs policiesRequired, policiesUpdated,
  isSupported, clearUnsupportedPolicies, and isActiveAdmin
* Add PolicyService API setAccountPolicy, which is the sole
  method by which security policies are promulgated
* Add protocolPoliciesEnabled and protocolPoliciesUnsupported
  to the Policy class; these are packed, localized strings
  indicating policies that the protocol itself have enabled
  and/or cannot support (i.e. these are policies that are
  unknown to the DPM, e.g. don't load attachments)
* Differentiate in security notifications between three kinds
  of policy changes - changes that don't require user
  intervention (e.g. reducing requirements), changes that
  require user intervention (the legacy notification), and
  changes that make the account unsyncable (e.g. the server
  adding an unsupportable policy). Handle all possible policy
  changes cleanly.
* Make security notifications per account (with multiple
  accounts, notifications would get arbitrarily munged)
* Expose ALL enforced policies via the account settings
  screen in two categories: policies enforced (including
  both policies enforced by the DPM and policies enforced
  by the protocol) and policies unsupported (note that these
  can only be seen if policies are changed after an account
  is created; we do not allow the creation of an account
  when any required policies are unsupported).  Add a
  button that forces a sync attempt, for accounts that
  are locked out, but whose policies have changed on
  the server (this would otherwise require a reboot).
* Updated unit tests

Bug: 5398682
Bug: 5393724
Bug: 5379682
Change-Id: I4a3df823913a809874ed959d228177f0fc799281
2011-10-25 10:32:34 -07:00
Marc Blank
0ff0e155c5 Fix findExistingAccount to treat underscore properly
Bug: 2318959
Change-Id: Ia39ed29084dc8111c61ff552fa65519789b7c23a
2011-10-20 18:41:26 -07:00
Ben Komalo
223267f701 Merge "Fix per account starred mailboxes." 2011-10-12 19:45:12 -07:00
Ben Komalo
513486cfb5 Fix per account starred mailboxes.
We always switched to combined view when we tapped "Starred" in a
mailbox list. This was confusing since tapping to show the mailbox list
will take you to the mailbox list for the combined view, even if there's
only one account on the device! Other confusing things happened like
showing coloured account chips, even if there's only one account.

This fixes it so that we pass the account ID when building the
selection. Lots of wiring to make it happen, but very little change
overall.

Bug: 5388326
Change-Id: I1fe52f211cceca0c1b26581e200f3c7adcd0734a
2011-10-12 19:44:39 -07:00
Ben Komalo
4d3f3f3ab9 Fix hostname verifier for Exchange connections.
When the socketfactory init code was moved, I forgot to re-add in the check
to skip hostname verification. This made "Trust all SSL certificates"
checkbox useless.

Bug: 5450563
Change-Id: Ie4cba749aaf8c0fd9f9c43f09ebf354c6600d4f0
2011-10-12 13:41:59 -07:00
Marc Blank
71c9683087 Improve policy logging
Change-Id: I023b7c5302ea00ab77edd697009fb00544951a80
2011-09-30 15:00:25 -07:00
Marc Blank
b169192c8a Update account object in Policy#setAccountPolicy
* We weren't updating the account object passed in to setAccountPolicy,
  which is problematic if the object is cached and used subsequently
  in the code (it would have stale policy values)

Bug: 5245056

Change-Id: I279570dfd66c4a65d751f73e2e56578be186d339
2011-09-06 10:46:49 -07:00
Marc Blank
c28fdfeaad Throw RuntimeExceptions when PolicyService calls fail
* Rather than returning false, which can cause unexpected
  results, e.g. locking out an account until reboot
* Partial fix for the referenced bug (there might be other
  causes)

Bug: 5221119
Change-Id: I5b47093a3411deb6995624887197297323db0d2d
2011-08-29 16:18:50 -07:00
Marc Blank
185fd5b3b8 Restore return statement erroneously deleted earlier
* Screwed up in I1f6e31bfd2e7c32bdd7886e54b02fd4640a96e6f

Bug: 5205488
Bug: 5203883
Change-Id: I619135bd5dd8359b4b0573316482356a9b517865
2011-08-24 17:14:07 -07:00
Marc Blank
1aba472486 Remove unneeded logging from EmailProvider
Change-Id: I229c3044566b6067efb7a8a06c10f41dbea3ad5a
2011-08-19 16:56:29 -07:00
Marc Blank
8b755f600c Make sure reconcileAccounts in AccountService is synchronous
* This is important so that callers can know that reconciliation
  is complete.

Bug: 5189766
Change-Id: I4fbbaa6506042f975e7ad4e828fe8399c4d4a366
2011-08-19 15:27:00 -07:00
Jorge Lugo
9ca5751db0 Merge "Add conversationId field to Message" 2011-08-11 17:45:52 -07:00
Jorge Lugo
c01a783cd6 Add conversationId field to Message
So that exchange can pass along conversationId when
syncing. It's not persisted in the database.

Change-Id: I53d68b27b292b0db0fd808e0deeb28751361f1f4
2011-08-11 17:07:50 -07:00
Marc Blank
a9f1631fb8 Remove STOPSHIPs in Email/Emailcommon
Bug: 5142183
Change-Id: I1f6e31bfd2e7c32bdd7886e54b02fd4640a96e6f
2011-08-10 16:43:20 -07:00
Ben Komalo
0e6a521747 Move IntentUtils to emailcommon.
This is needed so Exchange can fire up Email activities.
No change other than the move.

Bug: 5122497
Change-Id: I6ee3f61654745fafd444314ecf75eb8ae6bbd01d
2011-08-08 14:39:19 -07:00
Ben Komalo
03cb4a2135 Merge "Hide sync options and search icon when appropriate" 2011-08-07 15:44:30 -07:00
Ben Komalo
37a7469716 Hide sync options and search icon when appropriate
- hide sync options for mailboxes that aren't actually syncable
- hide search icon for any mailboxes that don't have any server
counterparts

Bug: 5086134
Change-Id: I60d5e5d1225a946464c5ea273c7d4b9299f433e5
2011-08-07 15:40:12 -07:00
Ben Komalo
994343b14b Fix SSL certificate selection for exchange.
- Since the Email and Exchange processes do not share UID, we need to
ensure the call to the KeyChain to request the certificate happens in
the Exchange process
- Misc UI fixes so it's not so ugly

Bug: 5117682
Change-Id: If80698850902e0178eb0998493b4cf4b89e2a15c
2011-08-05 11:28:52 -07:00
Marc Blank
8ba8c1648c Prevent leaking ServiceConnection when process/threads killed
Change-Id: Id5d85fbdd0d044a59cc61748432e3f714264bcd5
2011-08-03 15:40:16 -07:00
Ben Komalo
cb1d65c478 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
2011-07-25 16:51:47 -07:00
Ben Komalo
81a153463b Remove "Move" action on POP.
Bug: 5010614
Change-Id: If0a94840e9dc104566ba39d2e3240883dab5bba0
2011-07-20 13:21:06 -07:00
Marc Blank
aca9426581 Remove NotificationService; use Account columns for data storage
Bug: 5023662
Change-Id: I84df3b474dd6320327851003af985144cc16348e
2011-07-19 18:19:59 -07:00
Marc Blank
4e4aba9ebc 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
2011-07-19 10:31:33 -07:00
Ben Komalo
e71a19a523 Build default mailboxes for POP3
Bug: 4580535
Change-Id: Ic800eed387d3e9e64e95cce691d13d98b4a48045
2011-07-17 17:48:31 -07:00
Jorge Lugo
abec4e631c Merge "Prevent account flip flopping from compose" 2011-07-13 16:35:50 -07:00
Ben Komalo
4de538be2d Prevent account flip flopping from compose
There were two issues:
- the default account ID from the provider wasn't consistent: it was
using a snapshot from the cached data but that simply returns a Map, and
the values aren't guaranteed to be sorted (and indeed I saw that the
order was different on consecutive calls!)
- hitting app up from Compose always just kicked you out to the inbox
for the default account, but it probably should have used the account of
the compose screen, since it can be specified in the Intent

Bug: 5012008
Change-Id: Ic9a753b261e047790453bc1a9417bc0c6d2f87f9
2011-07-13 14:46:50 -07:00
Marc Blank
190b2fb8a1 Add support for TrafficStats; use with IMAP/POP3
* All IMAP/POP3 functionality uses TrafficStats except for
  attachment loading (subsequenc CL)

Bug: 4988322

Change-Id: I91d826e0f7151a2101b642c868ab8c37e9660332
2011-07-12 11:28:58 -07:00
Ben Komalo
f4f10a3fdf Make client certificate requests optional.
This prevents things from always failing if the server requires a client
SSL certificate.

Note that the solution used to determine if a certificate request was
made for a given request is approximate; it is timestamp based and can
theoretically give a false positive. In practice, this is very unlikely,
since another cert request had to have happened around the same time,
AND the response must be a 401/403.

Change-Id: Ieb77cf91db3bd52ba4adf1fb07357fef7e204ba5
2011-07-11 09:28:33 -07:00
Ben Komalo
025d29fd4b Fix some missed account setup flags.
There were two places where account flags were being set on setup: one
was in manual setup when the user selected the account type
(pop/imap/eas), and another was when it was automatically determined
from XML. The two paths were inconsistent and one was setting bits like
SUPPORTS_SEARCH but the other wasn't.

This fixes being able to search in IMAP

Bug: 5011932
Change-Id: I50eada7485aaef4e2a85d25fa7eb9ac7ab03093a
2011-07-10 18:26:15 -07:00
Ben Komalo
7891106a7d Write reply/forward flags on Controller.sendMessage
- also fix some mixups with the actual icon states

Bug: 4947145
Change-Id: Iec1bbfc46ac956a6bf050e4fb162b94ea3c6b316
2011-07-06 18:10:16 -04:00
Makoto Onuki
745b33b8ff Fix all NoSuchMethodErrors
Change-Id: I05adf2b99c819d6aa2d3b52c52a8c655d9307337
2011-07-01 12:44:27 -07:00
Marc Blank
2bdf7ee0f0 Delete orphaned mailboxes/messages/policies at provider startup
Bug: 4972132

Change-Id: Icc756a9e28b77de052261903089b040d229e7b5d
2011-07-01 09:21:09 -07:00
Makoto Onuki
8de5bda815 Close cursor properly.
Also, don't issue separate query()s for each recent mailbox.

Bug 4977956

Change-Id: I3ccd437a7efd5c3599c4a1952ba091a7b3b815bf
2011-06-29 19:21:14 -07:00
Marc Blank
0b8e04c84d More Store cleanup
Change-Id: I8f542175b4468c7a320322a57bfdaf19a7320165
2011-06-29 15:22:05 -07:00
Marc Blank
244d306ebb Remove more useless code
* Strike another blow for sanity!

Change-Id: Id95b441f9577abda66f04113793d6b1c60500ebe
2011-06-29 14:07:25 -07:00
Marc Blank
77160c8c08 Merge "Don't cache ImapFolders" 2011-06-29 13:34:44 -07:00
Marc Blank
2720a818d5 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
2011-06-29 13:02:55 -07:00
Makoto Onuki
50d934360d Fix the "onPostExecute executed even when cancelled" issue
Renamed onPostExecute to onSuccess and made sure it won't called
if a task is cancelled in time.

Also removed isCancelled().  To implement it right we should make sure
that onPostExecute() isn't finished when setting mCancelled, but it's a bit
of a pain to implement right, and we don't really have to use it.

Change-Id: I3a0baf504506ffc4952a5553f7098a8415842fa3
2011-06-29 10:22:38 -07:00
Makoto Onuki
4a893e60b4 Switch to EmailAsyncTask
Also remove the isCancelled test in onPostExecute, where it should
never return true.

Change-Id: Ica2b07db22d73769c2ead5f232f4890bd3bb87da
2011-06-29 09:50:52 -07:00
Makoto Onuki
6b968c1dce Introducing DelayedOperations
This helps post runnable to the handler and cancel pending runnables
at once.

It'll be used for delay-call methods that initiate a fragment transaction,
and cancel then in onSaveInstanceState().

Change-Id: Ib8bdb0e676e756854ab067a27e5e0f397219a4b4
2011-06-27 17:00:50 -07:00
Ben Komalo
ca22a51a9c Merge "Replace details dialog with expando subheader" 2011-06-27 09:58:30 -07:00
Makoto Onuki
178e2930e7 Supress the usual mime warnings from mime4j
Supress "Body part ended prematurely" and "Unexpected end of headers detected".
I believe these happens because we feed partial messages to the parser.

We've kept these logs only "just in case", but I don't think it's ever been
usueful...

Change-Id: I29e5e48abf71612eed656ce6569246caf8a320bc
2011-06-26 14:02:52 -07:00
Ben Komalo
5cba9c10ac Replace details dialog with expando subheader
Change-Id: I7b0f63b7b5ce7172ac32b8c00891005b9f2e28ee
2011-06-25 16:34:37 -07:00
Makoto Onuki
d8a2e33998 Add debug log to investigate bug 4905749
Change-Id: I1cfe12b0150490ec08caa02332bcca88521ff5fd
2011-06-24 18:44:31 -07:00
Ben Komalo
472d75f1b4 Merge "Misc cleanups and avoid logging PII" 2011-06-24 09:54:38 -07:00
Marc Blank
9a01353f14 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
2011-06-23 22:02:00 -07:00
Ben Komalo
877b9070fa Misc cleanups and avoid logging PII
Change-Id: I9f906dabe0dd00a434ff88878f0639c835b2e2a7
2011-06-23 19:41:47 -07:00
Ben Komalo
53300963ff Save/restore message list context
This fixes opening messages after rotations. Oops.
Bug: 4905495

Change-Id: Ibb9984245f7a040b65d472ad4103da587c28c83b
2011-06-23 12:38:42 -07:00
Marc Blank
d12f78d6ba Fix cursor-related errors:
1) Have CachedCursor implement CrossProcessCursor; still need to
  figure out how this ever worked
2) Close cursor used internally in findMailboxOfType

Bug: 4869024
Change-Id: Id20d37b7b83e133aa4d5fe9293a42ae217024f01
2011-06-22 10:59:06 -07:00
Marc Blank
0404a331ad Merge "Improve EmailContent caching..." 2011-06-21 23:46:37 -07:00
Marc Blank
6e418aa41a Improve EmailContent caching...
* Guarantee that up to 16 Account (with HostAuths), and Policy rows
  are always cached.  Also, 6 commonly used Mailboxes per Account
  (Inbox, Outbox, Drafts, Sent, Trash, and Search)
* Precache these rows when EmailProvider starts up
* Ensure that newly added, precachable rows are cached when created
* Clean up some inefficient/wrong caching code
* Fix a commonly called method in NotificationManager in which we
  load a single Mailbox row using selection vs withAppendedId
* Confirm that we don't read from the database in typical use and
  heavy message loading
* Add a special URI for finding mailbox by type (using the cache)
* Add special-case code for EmailContent.count(Account.CONTENT_URI)
  which is used in a number of places (including on the UI thread)
  and whose value is easily determined
* Add a special URI to get the default account id
* Confirm that all unit tests work

The goal here is to be able to load all Account, HostAuth, Policy,
and Mailbox objects (by id) without worrying about disk access.
There will still be a single disk read for uncommon Mailbox reads,
but this should be considered acceptable.

Change-Id: Ibc9aa7acc73185e360b0b6f3053b90a985e97210
TODO: Unit tests
2011-06-21 21:39:19 -07:00
Ben Komalo
505ac4b09b Prevent NPE when account can't be found for policy
Added some tests to ensure no orphaned policy

Bug: 4686450
Change-Id: I64a1f5de05f3e73052cb41828ed6bf1a2e26d22a
2011-06-21 18:26:16 -07:00
Makoto Onuki
95ad0f0e93 Wait for initial sync in Welcome.
Change-Id: I5052e8a3e3af5565184c391200b9ab63dff4b50b
2011-06-21 13:58:42 -07:00
Makoto Onuki
ce4cce05b2 Fix failing tests
Fixed activity tests and and activity.setup tests.

Bug 4762098
Bug 4766087
Bug 4590590

Change-Id: Ifbd49f38c59854c65b6c48a1b03ca8153bfa558b
2011-06-21 11:18:32 -07:00
Jorge Lugo
ae95fbf4d0 Merge "Added quick responses." 2011-06-20 15:10:06 -07:00
Jorge Lugo
5a3888f35b Added quick responses.
Added "Insert quick response" button to MessageCompose's action bar. Clicking
it opens dialog with available quick responses. Selecting one of the responses
will insert it into message body at the current cursor location. Also added
menu in account preferences to create, edit, and delete quick responses.

Change-Id: I85f3f6b36801cf112ec9d7c31135a917456173d7
2011-06-20 13:31:50 -07:00
Marc Blank
ed1dc9ee72 Support "Load More" for IMAP search
Change-Id: I47e5fd1fab421026ee52af72ba56338c69e9b467
2011-06-17 15:43:18 -07:00
Marc Blank
0b34643204 Merge "First implementation of IMAP search" 2011-06-16 20:27:16 -07:00
Marc Blank
627bc6ed57 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
2011-06-16 20:26:52 -07:00
Ben Komalo
cb24e515b7 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
2011-06-16 16:14:03 -07:00
Marc Blank
1579b7864a Merge "Fix Store caching" 2011-06-16 13:58:24 -07:00
Ben Komalo
f4dbbf1099 Indicate to the user when a cert error happens.
This introduces an exception which needs to be thrown from a KeyManager
when it tries to establish a connection with a server requesting a
certificate.

Change-Id: I06dfad7789ed5d320b630e7e4380e15da42a48df
2011-06-16 11:37:23 -07:00
Ben Komalo
d09cff0888 Make "don't allow camera" a supported policy.
This sends the bit to the DPM. Separate changes have been/will be made
to change the provision parser and support it in the DPM.

Bug: 4185316
Change-Id: I44872ceb095a28539b047a0641cc499c7186a9b3
2011-06-16 10:44:48 -07:00
Marc Blank
f65bdbdaf5 Fix Store caching
Bug: 4671090
Change-Id: I07413eb713c564f6dbcac45091357153cfe19a5d
2011-06-16 09:24:44 -07:00
Ben Komalo
913e26180d Fix ambiguously named getters.
Change-Id: Ieec918a520fd291d8d85695d1a86b85a73b266a5
2011-06-14 17:38:19 -07:00
Ben Komalo
22409fcffa Pass HostAuth when validating an account.
Since HostAuth is fully Parcelable, no sense passing the individual
fields.

Change-Id: I4d8fd2bbe7b47e8f1e2ff00c8c0cad8429eec159
2011-06-14 14:47:18 -07:00
Ben Komalo
78959916e7 Add support for client side SSL certificates
This introduces the ability for clients (i.e. the exchange service) to
register "special connection types" that use a client certificate stored
in the system keystore. The alias is encoded into the URI scheme for
those clients, and the socket factory used for those connections will
use the approprate KeyManager.

Lots of TODO's, including bubbling a lot of this up to the higher level
and wiring the UI to actually set the alias in the HostAuth table.

Change-Id: If5e1901c5b58731fdabd3e6b6da7198134b512d2
2011-06-13 18:16:22 -07:00
Marc Blank
e57a83d39a Add flags for server-side search support
* Also, a convenience method to test the base flag
* Follow-up CL will add these flags for Exchange

Change-Id: I38dc1d19e89805989e674c17919db238b4913a1c
2011-06-13 16:50:10 -07:00
Marc Blank
f5418f1f93 Move Account into its own top-level class
Change-Id: Ide7c991b7d4d418dbe17164421425bf898ba64ee
2011-06-13 15:37:22 -07:00
Marc Blank
85e4c101b0 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
2011-06-09 13:34:43 -07:00
Ben Komalo
724c3a81cd Introduce scheme name escaping in SSLUtils.
Change-Id: I73f19e7d40d0b19dfd41cfaf7db0879ef2e3a3ea
2011-06-08 13:33:38 -07:00
Ben Komalo
313586c8eb Introduce client cert alias for HostAuth.
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
2011-06-07 18:48:23 -07:00
Todd Kennedy
4c4b088a21 Merge "Add "lastTouchedTime" column to the mailbox table" 2011-06-03 09:26:14 -07:00
Todd Kennedy
9dcb72e1ec Add "lastTouchedTime" column to the mailbox table
The last touched time will track the last time a message within that mailbox
was read. This will be used for the recent list.

Change-Id: I97a5fda52fd09b416fc3278a11a87b807da05c9c
2011-06-03 08:51:25 -07:00
Marc Blank
75a754660e Update searchMessages API
* Store various search parameters in a new parcelable class

Change-Id: Iadec6a803b1bf17d89cd401c3fca1cb0ad3340d4
2011-06-02 21:41:17 -07:00
Ben Komalo
cd7dce5b39 Merge "Move the custom SSLSocketFactory into emailcommon" 2011-06-02 10:29:41 -07:00
Marc Blank
a613aa18f5 Merge "Add transient to Account (for holding AccountManager account)" 2011-06-02 09:41:28 -07:00
Marc Blank
dcac884697 Add transient to Account (for holding AccountManager account)
Change-Id: I2eba00b4e2f4fe0dfdc71547bfac9159728ea0e9
2011-06-02 09:41:07 -07:00
Ben Komalo
12a3e3e4b9 Move the custom SSLSocketFactory into emailcommon
Change-Id: I48da54a74fd3fe573d20e581b69e35944ba9c8ff
2011-06-01 20:27:02 -07:00
Todd Kennedy
fa1b3a8f37 Save widget config to shared preferences
The way the config activity communicates with the widget will be through
shared preferences. We now read / write shared preferences for widget
configuration. One step closer to the configuration activity...

Change-Id: I7c54259d84ad8d304a61652af5b3edff4c7d67db
2011-06-01 15:14:55 -07:00
Todd Kennedy
44f5cd67c9 Remove widget views
The new widget UX allows for a single display mode for the widget. This can
be configured when the widget is added or at a later time during widget
re-configuration.

We don't have the configuration activity (yet). We first need to restructure
the widget to take a single account / mailbox combination. Hooking up the
configuration activity will occur in a future CL.

Change-Id: I38a5796c44938a6abd0d2bb50ac77241cc86a497
2011-06-01 10:46:32 -07:00
Marc Blank
09a071a879 Don't use multipart/alternative for SmartReply/Forward text
* When confirmed fixed, this should be backported to MR2/MR2

Bug: 4490341
Change-Id: Ie99047b465ed7087e6e0100f7d517ac3fb6b803c
2011-05-26 10:19:01 -07:00
Marc Blank
fae5ebbfd2 Cleanup code in Policy
* Use a single method for setting/clearing an account's policy

Change-Id: I90fd97d4a5ba452d4656bbabd06a40797c82e10c
2011-05-25 17:38:12 -07:00
Marc Blank
f3ff0ba910 Create AccountManager acct for pop/imap on upgrade from GB
* Also, unit test for upgrade path

Bug: 4439595
Change-Id: I508a3d8ea70c1a894a412528314e42a39f3ae0e7
2011-05-25 08:31:24 -07:00
Todd Kennedy
5675ea88d3 Add a second fragment to select the mailbox
After choosing the account, we need to select a mailbox for the shortcut.
In order to replace the fragment, we cannot hardcode it in the XML. Instead,
we need to dynamically create it.

Also, restructure the fragment class and rely on the class to "do the right
thing"

Change-Id: I752ad5bbdf2484332ec2b73852cae74a5d2092fa
2011-05-24 16:00:33 -07:00
Ben Komalo
12b82d9374 Move HostAuth to top level class.
No other changes made.

Change-Id: I1c6497c98abc0f99443ea42d8aed6295b263c123
2011-05-19 15:28:48 -07:00
Makoto Onuki
b36ac01792 Changes for NO_XXX
- Added Message.NO_MESSAGE
- Renamed PSEUDO_ACCOUNT_ID_NONE to NO_ACCOUNT
- Removed PARENT_KEY_NONE and use NO_MAILBOX instead
- For starters, cleaned up the UI controllers to use them.

Change-Id: I6cfd87ece2fced8e9f7c76d034c4d1dbf9e4db10
2011-05-17 14:36:00 -07:00
Makoto Onuki
54c91f00d7 Use IllegalArgumentException, not InvalidParameterException
Because IllegalArgumentException is the standard one.

Change-Id: Ib4d0bfa88a3d4218148a7cb248d9baa2124a72ba
2011-05-16 17:48:46 -07:00
Makoto Onuki
4c4e4c3515 Clean up the method to build message list selection.
- Moved the method to EmailCommon.
- Use *_SELECTION for magic mailboxes
  (meaning we now use subqueries for magic mailbox selections, rather than
   building the mailbox ID list by ourselves)

Change-Id: I3ebf6af62fd912fea6faea0f75e05fc61c87af3b
2011-05-16 11:08:05 -07:00
Ben Komalo
e0bb7e7909 Make Mailbox parcelable
Also fix unit tests

Change-Id: I5f64f53b278b7bc27053d831760b155532a14e33
2011-05-13 18:35:08 -07:00
Ben Komalo
53ea83ebf9 Move Mailbox to top level class.
No other changes made.

Change-Id: I3d8f3c521dc0d902be313b25252b4b6a4a96e7ee
2011-05-13 17:42:02 -07:00
Makoto Onuki
bfac9f2e8a Move some of the log constants from Email to Logging
Change-Id: If9f4e4e3adcdef897a0d6a4e153bb446a8b24fdd
2011-05-13 14:24:38 -07:00
Todd Kennedy
577ddb7dd7 Remove notifyNewMessages() service callback
Since the notification controller now operates exclusively using database
observers, there's no reason for the exchange service to call the
notifyNewMessages() service API.

Change-Id: Iaa7e2f5eae786162eab23b02b03ce6d1e8a738e9
2011-05-13 09:10:28 -07:00
Todd Kennedy
76061eba14 Remove SuppressWarning("unused") wherever possible
Change-Id: Ie799f02ab39a7d020af1fb98b6bac45fc0fd1298
2011-05-12 16:02:06 -07:00
Marc Blank
a830547adf Merge "Add messaging exception status for "attachment not found"" 2011-05-12 15:53:50 -07:00
Todd Kennedy
5701e0a555 Suspend notifications for currently shown account
We will suspend notifications whenever we display the message list for an
account (including "combined inbox").  As soon as the message list is paused,
notifications will be resumed.

Change-Id: I481a0f59ce68f89c32210d862d0267f3f334063b
2011-05-12 14:03:14 -07:00
Marc Blank
b221cbc785 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
2011-05-12 12:11:43 -07:00
Marc Blank
ffeb7de284 Merge "Fix a race condition in which an Attachment might be wrongly deleted" 2011-05-11 18:03:26 -07:00
Marc Blank
2f6cbb021c Fix a race condition in which an Attachment might be wrongly deleted
* This is a serious bug dating back to the first Honeycomb release
* It was possible that a newly created Message could not yet be
  committed to the database when the AttachmentDownloadService
  tries to download one of that message's attachments.
* ADS, when it sees that the message (apparently) doesn't
  exist, deletes the Attachment (it appears to be orphaned)
* The effect is that the user never sees one of the attachments
  in a message.
* This bug has been reported externally
* The fix is simply to check for the message's existence before
  deciding to delete it (this check will always work properly)

Bug: 4409692

Change-Id: I106ed2fe88d2435ad7a462fced5cb307c2559fd6
2011-05-11 17:27:37 -07:00
Todd Kennedy
e7fb4ac9e3 Add account observer to NotificationController
The notification controller now observes changes to the account database and
adds or removes message observers as appropriate.

Change-Id: I1670fcfd6ce744030199b86708a6ada55b239a84
2011-05-11 17:22:56 -07:00
Marc Blank
b2a909598b Create/test method to set "not downloadable" flag based on policy
Change-Id: I08bec46d0c961bdc9530768f5198346338b3e2f3
2011-05-11 11:21:33 -07:00
Marc Blank
791665da67 Merge "Add plumbing for disallowing attachment download per policy" 2011-05-10 18:31:36 -07:00
Marc Blank
9d9b481a85 Add plumbing for disallowing attachment download per policy
Change-Id: I860dfb5c28933dcd4bf96c8e4bc890bff0f53c42
2011-05-10 18:26:00 -07:00
Todd Kennedy
d31d64d330 Merge "Use observers to manage new message notifications" 2011-05-10 17:09:07 -07:00
Marc Blank
5d08360a9b Merge "Complete rewrite of account backup/restore code" 2011-05-10 16:23:41 -07:00
Todd Kennedy
83693a6aca Use observers to manage new message notifications
We were sort of using observers to maintain the new message notifications.
However, other parts of the code would poke into the notification controller
to set things such as a list of newly added message IDs. Now, we rely
exclusively on db observers to manage notifications.

As a side effect of this, we now set the notification text correctly to be
the most recently _added_ message. This may be different than the most recently
sent message [since there may be a non-negligable delta between when the
message was sent and when it was received].

NOTE this still suffers from an outstanding bug where we continue to get
notifications when the Eamil UX is visible. That and monitoring changes to the
account table will be addressed in future CLs.

Change-Id: I4c68273716cc685574a1ca71e5d634f53fe0d882
2011-05-10 15:36:07 -07:00
Todd Kennedy
dd9d472569 Merge "Add unit test for Utility#updateLastSeenMessageKey" 2011-05-10 08:12:34 -07:00
Marc Blank
9279fc1b94 Add message flags for "replied to" and "forwarded"
* These will be required for EAS logo certification

Change-Id: Iaa8c970878a319fac68b3533889e6774f9cd54f9
2011-05-09 11:22:32 -07:00
Marc Blank
0993190caf 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
2011-05-09 10:39:17 -07:00
Todd Kennedy
a17ee57c7f Add unit test for Utility#updateLastSeenMessageKey
Change-Id: I1335ac53c5de418fd0ed6c2b38be60165db1cb8c
2011-05-09 09:49:32 -07:00
Todd Kennedy
ae993bda32 Merge "Add lastSeenMessageKey column to the mailbox table" 2011-05-06 15:07:58 -07:00
Todd Kennedy
a9ac20b96f Add lastSeenMessageKey column to the mailbox table
The last seen message key is the id of the last message that we've "seen" for
that mailbox

Change-Id: I197f8a191654225ada1ce553cc959db775809c88
2011-05-06 14:51:41 -07:00
Ben Komalo
8d042850fb Re-work the way MessageCompose handles attachments
Now attachments are actually stored in an explicit list, instead of
being inferred from the state of the UI. This makes it possible to
switch states and restore attachments, and test.

Change-Id: I8c5f80f17f8c9e78d880ac4a1ac6ae22c2ec0579
2011-05-06 11:53:53 -07:00
Todd Kennedy
c4cdb11d24 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
2011-05-05 12:00:27 -07:00
Marc Blank
c96cd4a848 Merge "Add new policies to Policy and associated data structures" 2011-05-05 11:49:55 -07:00
Marc Blank
f91a03f520 Add new policies to Policy and associated data structures
* Update Policy unit test

Change-Id: I24a980537a73e40fca9fceb1b6ad6b2feaa9c342
2011-05-05 11:49:15 -07:00
Marc Blank
74143e89d5 Prevent NPE's in calls to database utility methods
* Before the Email/Exchange split, EmailProvider was guaranteed not to return a null
  cursor; this is no longer true
* We now throw a new RuntimeException (ProviderUnavailableException) when calling
  commonly-used utility methods (e.g. restoreXWithId) and the cursor as returned from
  EmailProvider is null (which implies that the provider isn't available).

Change-Id: I152d13bff0129c23586cd570d23c87d69cfce372
2011-05-05 08:49:34 -07:00
Marc Blank
335a724ee6 Implement "automatic" sync lookback (Email side)
* Update sync window options to include "Automatic" and "All"
* Make the default (for new accounts) "Automatic"

Change-Id: Icbc696f55abcfad79e66079ebb414ca50778dcaa
2011-05-05 08:16:44 -07:00
Marc Blank
55db7c098f Merge "Rework of security policy storage" 2011-05-03 11:20:46 -07:00
Marc Blank
aeee10e57e 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
2011-05-03 11:11:47 -07:00
Ben Komalo
0bb7f1c37c Fixes to MessageCompose saving.
- "save draft" no longer closes the message
- ensure consistent state if there are successive saves
- misc changes to the way a message is loaded if there is a pending save

Bug: 3072398
Change-Id: I9cd01319772293e4d410020ab27603821a95ec9f
2011-05-03 10:35:11 -07:00
Makoto Onuki
567442bcf8 Merge "Fix "move to" dialog." 2011-04-27 12:44:23 -07:00
Makoto Onuki
4e033e0ac7 Fix "move to" dialog.
- Now we always use a fragment as a callback, rather than assuming the parent
  activity implements it.
- Use a generics trick to make sure the callback fragments really implements
  Callback.
  (Might be abuse of a language feature, but it's at least safer than runtime
  check...)

Bug 4314669
Bug 4345496

Change-Id: If4048d456b298784097e202cffab170177ac7b2d
2011-04-27 12:43:45 -07:00
Todd Kennedy
e87ff6c3cb 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
2011-04-27 12:01:04 -07:00
Marc Blank
265530723b Expose unsupported policies in the UI (account setup)
Change-Id: I75b650af92c87bd990009e54072ac4b58ed0895b
2011-04-26 18:12:45 -07:00
Todd Kennedy
27cf8b5ffe Display full pathname in move-to dialog
With the recent changes to hierarchical folders, the move-to dialog is
quite unusable if you have multiple child folders with the same name.
While waiting for UX to decide on the exact display, make a few quick
changes to display the fully-qualified pathname instead of just the
child folder name.

Change-Id: Id5c1cc98364fbf7a82a05ac30e944507c7d16320
2011-04-26 11:45:47 -07:00
Todd Kennedy
22208771b7 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
2011-04-25 15:11:38 -07:00
Marc Blank
d2fd1252d5 Add status code(s) for disabled sync (needed for EAS 14.0)
Change-Id: Ie65141c4d83412274dbbc39dffed7c3be394bb84
2011-04-22 12:50:37 -07:00
Marc Blank
224c7215f1 Add new account flag SYNC_DISABLED and add comments to all flags
Change-Id: Ib153282c2294deb0e322b3cd71f90087a8cb23f9
2011-04-21 14:50:21 -07:00
Todd Kennedy
7f40e8290b Merge "Simplify mailbox synchronization logic" 2011-04-21 12:29:18 -07:00
Todd Kennedy
200c6bd9fa 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
2011-04-21 11:54:30 -07:00
Makoto Onuki
f11295f335 Simplify showToast()
Now it can be used without an activity.

Change-Id: I9c122c9a1e330a909c5ba27aaaca27f746300929
2011-04-21 09:38:37 -07:00
Todd Kennedy
a50fc99b0c 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
2011-04-20 08:31:24 -07:00
Ben Komalo
8a05da7c8c Remove uneeded layer of parcelling.
ListStateSaver did nothing more than hold a Parcelable, and was a
Parcelable itself. The abstraction may have been useful at some point,
but that time seems to have passed.

Change-Id: I2f1f45828782ab44aa8935aa50b825e07845a2a5
2011-04-14 15:30:54 -07:00
Ben Komalo
28b3fec5c1 Include guava in Email.
- adds a compile time dependency to the guava library
- changes to use @VisibleForTesting in places to ensure it works

Change-Id: I2c5c4f9861234fec3613da011185e5c11f228466
2011-04-14 13:49:01 -07:00
Todd Kennedy
a8ba5e76dc Merge "only allow navigating to mailboxes w/ children" 2011-04-13 14:56:16 -07:00
Todd Kennedy
f7036b7379 only allow navigating to mailboxes w/ children
If a mailbox doesn't have any sub-mailboxes, only allow selecting them to view
any contained messages. Do not update the mailbox list.

Change-Id: I6f469bf20a57dc440885402084c21ff184f13dff
2011-04-13 14:35:03 -07:00
Marc Blank
4bf590d400 Merge "Create constant for unknown sync window (0, i.e. uninitialized)" 2011-04-13 11:54:28 -07:00
Marc Blank
38eb3b3a94 Create constant for unknown sync window (0, i.e. uninitialized)
Change-Id: I85410162893e76748f293f48fd12571eeaf4b620
2011-04-12 14:19:58 -07:00
Makoto Onuki
0efbee2bd0 Merge "Fix bug that prevents from accepting 2 invites in a row." 2011-04-12 13:56:59 -07:00
Makoto Onuki
5dceaa5b5e Fix bug that prevents from accepting 2 invites in a row.
mPreviousMeetingResponse is tied to the current response state, so it
should be reset too when we clear the response checkboxes.

Bug 4132763

Change-Id: If816706f47f8500441330882fb4f372b31465ff5
2011-04-12 11:08:16 -07:00
Ben Komalo
2577842269 Misc fixes and dead code removal.
Change-Id: I48b2fa5f7bf619197d882c71e8b174d31d130e26
2011-04-11 14:01:01 -07:00
Marc Blank
78684ccc79 Temporary search UI
Change-Id: Ia138ca93f0b28fd0915aa79c965f752f7c08ee90
2011-04-06 08:51:14 -07:00
Makoto Onuki
e553c6ec0b Merge "Store UUIDs in account shortcuts, rather than IDs." 2011-04-05 10:41:25 -07:00
Makoto Onuki
0b6cb1c330 Store UUIDs in account shortcuts, rather than IDs.
Bug 4192836

Change-Id: I1d6349ed3ad70867f113b9a9f7eb8717b88b24c1
2011-04-04 14:12:05 -07:00
Marc Blank
3d1bb65eec Merge "Add searchMessages command to EmailService" 2011-04-04 11:29:31 -07:00
Marc Blank
c60b8d0529 Add searchMessages command to EmailService
* Also, document service methods in EmailServiceProxy

Change-Id: I46cc68c8c2aa870ea82474c70d944640bb66b0ef
2011-04-04 11:28:25 -07:00
Marc Blank
1e7e2829d8 Fix HTML highlighting
* We need to "and" off the alpha bits from the Color constant

Change-Id: I2e30bd9df74fffed82c637c79927993a49447e23
2011-04-04 09:26:34 -07:00
Marc Blank
76f614720d Highlight utility for HTML and text
* Add utilities for adding highlighting markup to HTML and
  highlighting spans to plain text (for Webview and UI,
  respectively)
* Rename Snippet.java to TextUtilities.java and move to utility
  package

Change-Id: Ic443ab5ce9c0199fa82a68e1592bf259494cadd2
2011-03-31 13:49:52 -07:00
Todd Kennedy
de70ee5f78 Don't duplicate HTML in reply / forward
On exchange servers that support "smart reply", the original message is
actually appended by the server. In this situation, we should not append
the original HTML text on the client.

but 4177192

Change-Id: I6fad74ac761e2abfe7cb0f536df4db30f7d5ca9a
2011-03-25 14:25:48 -07:00
Makoto Onuki
9f0283dbd7 Merge "Better fix for the PendingIntent issue." 2011-03-23 15:30:51 -07:00
Todd Kennedy
284d8d7db5 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
2011-03-23 15:15:45 -07:00
Makoto Onuki
308ce92847 Better fix for the PendingIntent issue.
Refactor the changes introduced in Ib02842bb.

- Now Welcome and AccountSettingsXL accept intents with URLs of the following
style, and get IDs from query params, rather than extras.

Welcome:
content://ui.email.android.com/view/mailbox?ACCOUNT_ID=1&MAILBOX_ID=2&MESSAGE_ID=3

AccountSettingsXL:
content://ui.email.android.com/settings?ACCOUNT_ID=1

- Now the "new message" and "login failed" notifications use these new style
intents, so the system wouldn't merge PendingIntents for different accounts.

Also:
- Moved all notification creation logic to NotificationController.
  (Except the one in CalendarSyncEnabler; which is used only to support
  upgrading from pre-froyo and I don't think it's worth refactoring.)

- Note the "password expired/expiring" and "security needed" notifications
aren't changed; they still use extras to store account IDs.  This is okay
because these notifications are not per-account.

Bug 4065269

Change-Id: I70737438d2e7c45fd7488a5b0a7105c8568e02f7
2011-03-23 14:49:38 -07:00
Makoto Onuki
d72f7bdf11 Improve EmailAsyncTask
Added 6 methods:
- execute{Parallel,Serial}
- cancelPreviousAndExecute{Parallel,Serial}
- runAsyncParallel{Parallel,Serial} (replacement for Utility.runAsync)

Bug 4083415

Change-Id: I5ca33000e52fc5265ccc84a6e5acb0d3359d0eb4
2011-03-21 16:41:08 -07:00
Marc Blank
5604f5eebc am b50a766d: Merge "Remove STOPSHIP logging" into honeycomb-mr1
* commit 'b50a766d4acc563beff90d22dc3dac48038ff4f1':
  Remove STOPSHIP logging
2011-03-17 08:03:08 -07:00
Marc Blank
b50a766d4a Merge "Remove STOPSHIP logging" into honeycomb-mr1 2011-03-17 07:58:04 -07:00
Andy Stadler
b959d9b9b2 am 22759bac: Handle complex chars policy correctly
* commit '22759bacd95385d95d3d9321f490763df1aba89d':
  Handle complex chars policy correctly
2011-03-16 12:38:57 -07:00
Marc Blank
da3c4b8261 Remove STOPSHIP logging
Change-Id: I73786fb2f4ff10d3c0767a873e5eb1e443f1affc
2011-03-16 11:08:56 -07:00
Andy Stadler
22759bacd9 Handle complex chars policy correctly
* We needed to set DevicePolicyMnager.PASSWORD_QUALITY_COMPLEX
* Setting this, we also need to clear some of the defaults for complex
  mode that are not correct for Exchange's definition of "complex".
* Unit tests

Bug: 4092218
Change-Id: Iea7bd05d48f1aa9406222c1db5937cfd7f2662b8
2011-03-16 09:48:08 -07:00
Makoto Onuki
665b180147 Merge "DO NOT MERGE: Make ACTION_SEND_MULTIPLE work with file: URI" into honeycomb-mr1 2011-03-08 10:32:34 -08:00
Todd Kennedy
8e09307b27 am 39121c75: Fix display of inline images
* commit '39121c758dcc919b5fde4c893d488916e26d3140':
  Fix display of inline images
2011-03-08 10:21:54 -08:00
Todd Kennedy
39121c758d Fix display of inline images
Inline images can be specified in two different ways -- explicitly with a
Content-Disposition of "inline" or implicitly with no Content-Disposition.
We correctly handled the former. For the later, we now default to an "inline"
disposition if one was not specified. This is acceptable per RFC 822 which
states:

     Content-Disposition is an optional header field. In its absence,
     the MUA may use whatever presentation method it deems suitable.

Additionally, if the disposition is not specified by the server, we need to
look at the Content-Type header for the file name.

bug 2824698

Change-Id: I146f7a67197b4e737e5f82a3d570e0f74e23fa35
2011-03-08 07:53:56 -08:00
Andy Stadler
c5b23e1e71 DO NOT MERGE: Harden Device.getDeviceId()
* If we read a null deviceName, delete the file and create a
new one.

Bug: 3506362
Backport of Ida670db2f4b75cb9c94636a0af541ae5df50addf

Change-Id: If844fe2a2f3d7096a8b18e826a3640a7d9dff830
2011-03-07 17:05:00 -08:00
Andy Stadler
a0145e173f DO NOT MERGE: Add account flag for use by sync adapters
Bug: 2028418
Backport of Idc4bd74877b4edee9dab5401c4825eab82220f23

Change-Id: Ie119973ef11e982d75caf85ff03caada6e869695
2011-03-07 12:12:01 -08:00
Makoto Onuki
7a15938763 DO NOT MERGE: Make ACTION_SEND_MULTIPLE work with file: URI
To determine mime-types of attachments from the ACTION_SEND and _MULTIPLE intents,
- Use ContentResolver.getType() for content: URIs
- Use inferMimeType() for file: URIs

Tested with Gallary and Downloads.

Bug 3510624

Backport of Ibfa4b383463f157e18fd634e55f5be4b9adf6aa5

Change-Id: Id2815738673f3822a97e92414b84f6a5d46eb96f
2011-03-07 10:46:09 -08:00
Makoto Onuki
03f7615039 Merge "Make ACTION_SEND_MULTIPLE work with file: URI" 2011-03-07 10:43:50 -08:00
Makoto Onuki
92cbc9369b Make ACTION_SEND_MULTIPLE work with file: URI
To determine mime-types of attachments from the ACTION_SEND and _MULTIPLE intents,
- Use ContentResolver.getType() for content: URIs
- Use inferMimeType() for file: URIs

Tested with Gallary and Downloads.

Bug 3510624

Change-Id: Ibfa4b383463f157e18fd634e55f5be4b9adf6aa5
2011-03-07 10:32:16 -08:00
Marc Blank
5f75f85454 Merge "Harden Device.getDeviceId()" 2011-03-04 18:04:16 -08:00
Marc Blank
a6de89e79c Harden Device.getDeviceId()
* If we read a null deviceName, delete the file and create a
  new one.

Bug: 3506362
Change-Id: Ida670db2f4b75cb9c94636a0af541ae5df50addf
2011-03-03 16:54:39 -08:00
Marc Blank
b812cc7298 Merge "Add account flag for use by sync adapters" 2011-03-03 16:48:46 -08:00
Marc Blank
0dd02cc1f0 Add account flag for use by sync adapters
Change-Id: Idc4bd74877b4edee9dab5401c4825eab82220f23
2011-03-03 16:10:33 -08:00
Makoto Onuki
ab8caebec6 Merge "DO NOT MERGE: Fix ANR: Run getPreviewIcon on bg thread" into honeycomb-mr1 2011-03-03 15:31:13 -08:00
Todd Kennedy
d8bce7e731 DO NOT MERGE Add original HTML message to forward/reply
When replying or fowarding an HTML message, we now send both plain text and
HTML bodies as a multi-part mime message. We take special care to ensure the
message bodies are in their own multi-part block and do not interfere with
any additional attachments to the message.

bug 3060920

Backport-Of: I2fc3cb4e1f65bcc28486a62731b44b0ee0a99719

Change-Id: I89ec2795b55ceb7472a8ee3db2dc8f50cf537d9c
2011-03-03 15:27:09 -08:00
Todd Kennedy
7d513c791a Merge "Attach original HTML message on forward/reply" 2011-03-03 15:25:50 -08:00
Makoto Onuki
ef2bc0b3e9 DO NOT MERGE: Fix ANR: Run getPreviewIcon on bg thread
The new class EmailAsyncTask might look overkill, but
this is what I've been wanting for long time.
In many activities we store all AsyncTasks we start to member fields
so that we can cancel them in onDestroy().  (e.g.
MessageViewFragmentBase.mLoadMessageTask and mReloadMessageTask)
With EmailAsyncTask these fields will no longer be necessary.
We'll be able to just fire up as many AsyncTasks as we want, and clean them
up in onDestroy() with just cancellAllInterrupt().

Bug 3480136

Backport of Id8aa1ba1500eee58cfab8b562b95e9ed852b3e29

Change-Id: I2d2966ff878862a5246c031d1d4e221da5a7e81a
2011-03-03 14:55:54 -08:00
Makoto Onuki
ba125ab5ac Fix ANR: Run getPreviewIcon on bg thread
The new class EmailAsyncTask might look overkill, but
this is what I've been wanting for long time.
In many activities we store all AsyncTasks we start to member fields
so that we can cancel them in onDestroy().  (e.g.
MessageViewFragmentBase.mLoadMessageTask and mReloadMessageTask)
With EmailAsyncTask these fields will no longer be necessary.
We'll be able to just fire up as many AsyncTasks as we want, and clean them
up in onDestroy() with just cancellAllInterrupt().

Bug 3480136

Change-Id: Id8aa1ba1500eee58cfab8b562b95e9ed852b3e29
2011-03-03 14:43:07 -08:00
Todd Kennedy
9cc51b72c6 Attach original HTML message on forward/reply
When replying or fowarding an HTML message, we now send both plain text and
HTML bodies as a multi-part mime message. We take special care to ensure the
message bodies are in their own multi-part block and do not interfere with
any additional attachments to the message.

bug 3060920

Change-Id: I2fc3cb4e1f65bcc28486a62731b44b0ee0a99719
2011-03-03 14:37:03 -08:00
Andy Stadler
7fd14be804 Enable SD card encryption policy when emulated
* This is is a minimal implementation that only supports the external
  encryption policy when there is no physical/removable storage, and
  the emulated external storage is located within an encrypted backing
  store.

Bug: 3351426
Change-Id: Id96e9277f810beeebf816a914acd3d733eb713ea
2011-03-02 16:41:19 -08:00
Marc Blank
4ef0960790 Merge "Add some Mailbox flags for use in folder management" 2011-03-02 16:11:38 -08:00
Marc Blank
fdf4a94094 Add some Mailbox flags for use in folder management
* These flags are documented in place
* Also add constants for sentinel values of PARENT_KEY

Change-Id: I0403a196599fa938528d874dc56d56522a573d56
2011-03-02 16:11:12 -08:00
Makoto Onuki
19b2a7ebc9 New debug setting to enable strict mode logging.
For now it only enables it for the main process.  I've added a flag
to EmailServiceProxy for EAS, but it's not used in the exchange side.

Bug 3500292

Change-Id: I5b27c69fe7cc995a430e9def54b2463076032c78
2011-03-02 10:41:48 -08:00
Ying Wang
37f3385803 Split out emailcommon/Android.mk
Change-Id: I846ee2a4b541f4709e647aa537c61549db2bec2e
2011-03-01 15:56:27 -08:00
Ying Wang
a07f2ae0b1 Revert "Split out emailcommon/Android.mk"
This reverts commit c28bf35319.
2011-03-01 14:52:05 -08:00
Todd Kennedy
7c87bfc33a Change "appendQuotedText" to "useSmartReply" in Rfc822Output
Slight API change to make it more clear what the method parameter is for.
Also add some additonal test conditions to the Rfc822Output tests.

Reapply changes in CL https://android-git.corp.google.com/g/#change,99090

Change-Id: I7a48c9544e48cbdf44b14f4b1f8d92fe01f7861e
2011-03-01 14:46:38 -08:00
Ying Wang
c28bf35319 Split out emailcommon/Android.mk
Change-Id: I90653e8601ee3ee6a8719d87ffb93222a11a22c0
2011-03-01 12:29:05 -08:00