Commit Graph

440 Commits

Author SHA1 Message Date
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