• Home
  • History
  • Annotate
  • only in /packages/apps/Email/tests/src/
History log of /packages/apps/Email/tests/src/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
358a8157015c7cfe9ca219a9f516656f5975666d 02-Nov-2011 Andy Huang <ath@google.com> 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
om/android/emailcommon/mail/AddressUnitTests.java
8919237f343b53153eb1a244cd0d9e2d4936e7ea 21-Oct-2011 Marc Blank <mblank@google.com> Merge "Fix findExistingAccount to treat underscore properly"
0ff0e155c51250bedc35b5b585003c8cb87f2244 21-Oct-2011 Marc Blank <mblank@google.com> Fix findExistingAccount to treat underscore properly

Bug: 2318959
Change-Id: Ia39ed29084dc8111c61ff552fa65519789b7c23a
om/android/emailcommon/utility/UtilityMediumTests.java
41495761db2d22377a2db2f0cc98a78bdff7daa6 21-Oct-2011 Ben Komalo <benkomalo@google.com> Delete stale test.

This test has been disabled for over a year. I call it unnecessary and a
burdern at this point.

Bug: 2938323
Change-Id: I98bd67a0ed3bb1b880a5e7b6bcf8c90b8cf2de46
om/android/email/activity/setup/AccountSetupNamesTests.java
513486cfb5d446f098b1c97d16932e51e316d1a7 13-Oct-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/activity/MessageOrderManagerTest.java
om/android/email/provider/ProviderTests.java
faf9ecc992c34de53969335f9fb403d2b17f3163 03-Oct-2011 Marc Blank <mblank@google.com> Enforce "auto-sync app data" setting for POP3/IMAP

* We were using the deprecated ConnectivityManager for this; we should now be
using the setting in ContentResolver
* Also, remove broadcast receiver code that is no longer relevant

Bug: 5405352
Change-Id: I985a95071aea92d235a2708925f775b817ba2328
om/android/email/service/AttachmentDownloadServiceTests.java
002a1802cad235ffa8f7152e0d0a5a2ebad14f63 16-Sep-2011 Ben Komalo <benkomalo@google.com> Prevent flicker in opening Email.

Welcome had some assumptions that some things had to be done
asynchronously, such as checking inbox status.
This can now be done on the UI thread and so transition into Email can
be done immediately in onCreate, except if there's reconciliating to
be done

Bug: 4599569
Change-Id: Iaaac21e73c985c60e1b7974fb0429948b35968e4
om/android/email/service/MailServiceTests.java
1b65e834c3d3281de9e0eb74e04def6ded8baa14 15-Sep-2011 Marc Blank <mblank@google.com> Allow multiple wildcards in providers.xml; add hotmail domains

* Change handling of the providers.xml file to allow asterisk
as a placeholder for an individual domain name part
(the previous behavior was a very greedy wildcard)
* Add hotmail aliases using the new scheme
* Update unit tests

Bug: 5318329
Change-Id: I73a0dfcb956830b18c5460a1b3ddfc58459d08c9
om/android/email/activity/setup/AccountSettingsUtilsTests.java
32bed4bb8e23d7322ab338773d135845f392d3cf 24-Aug-2011 Ben Komalo <benkomalo@google.com> Fix unit tests.

- make attachment download service injectable
- fix assertions for account manager account checks
- update message compose ID's so they're consistent on tablet/phone

Bug: 5198343
Change-Id: I9976f5b9e5590dd61fb0a62937d3f9203fefe236
om/android/email/activity/MessageComposeTests.java
om/android/email/provider/ProviderTests.java
0e6a521747970d5427f10c25cdc070d2341dc93a 08-Aug-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/activity/IntentUtilitiesTests.java
cb1d65c47825dc7a45c7954cd93669296b35305e 26-Jul-2011 Ben Komalo <benkomalo@google.com> Fix mailbox finding and unit tests.

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

Also fixes unit tests.

Bug: 5019661
Change-Id: Idcac0a6f15aa7f174890ae586f478fbb8f6e05b7
om/android/email/SecurityPolicyTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
23a4b15e08bfe57be3242790d1a92db8dd4b9980 22-Jul-2011 Ben Komalo <benkomalo@google.com> Fix notification issues.

- use title as ticker text
- also properly play notification sounds on new messages. Before, if you
left a notification unread, and a new message comes in, no sound would
be played. Since fixing that, it introduces another issue where on
initial sync, tons of new messages come in (and the sync could take > 1
min). We throttle them with a 15 second interval. The notification is
always updated to reflect the most up to date information, but sounds
will never be played closer than 15 seconds together.

Bug: 5020191
Bug: 5067059
Change-Id: I5ca474fd3b210ee856035bd78bd72931da80fe40
om/android/email/NotificationControllerTest.java
81a153463bd9d2e4f71a0985a102548b16a88ec0 20-Jul-2011 Ben Komalo <benkomalo@google.com> Remove "Move" action on POP.

Bug: 5010614
Change-Id: If0a94840e9dc104566ba39d2e3240883dab5bba0
om/android/emailcommon/provider/MailboxTests.java
1ecfb5311b0315edf86a450398a8712dbfd86772 20-Jul-2011 Ben Komalo <benkomalo@google.com> Remove illegal references to IsolatedContext

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

Bug: 5051951
Change-Id: Ieebc7f769075614ae1a656cf123d8ce0313e611d
om/android/email/ControllerProviderOpsTests.java
om/android/email/SecurityPolicyTests.java
4e4aba9ebc43c6a83190f3a883fa05bb7d5100b3 19-Jul-2011 Marc Blank <mblank@google.com> Clean up account reconciliation

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

Bug: 4883073
Bug: 4767084

Change-Id: I43ffaf009db1a6f306bb0f2a74fb4dd3b2c4b966
om/android/email/SecurityPolicyTests.java
om/android/email/provider/ProviderTests.java
om/android/email/service/MailServiceTests.java
e71a19a52313a0fb615700e52a336b65f3c305da 15-Jul-2011 Ben Komalo <benkomalo@google.com> Build default mailboxes for POP3

Bug: 4580535
Change-Id: Ic800eed387d3e9e64e95cce691d13d98b4a48045
om/android/email/ControllerProviderOpsTests.java
3c4061ae61fd2ea713d94e9fd1233b961b57ad84 18-Jul-2011 Ben Komalo <benkomalo@google.com> Merge "Filter out inbox from recent mailboxes"
0932da35f5696f99cbba9abf8d98818576b784fb 18-Jul-2011 Ben Komalo <benkomalo@google.com> Filter out inbox from recent mailboxes

Bug: 5039553
Change-Id: I9b58e9331028250f9bc3027429d2a6ec418186d6
om/android/email/activity/RecentMailboxManagerTest.java
b81a31b29b22b1b11e8ad636638d2b8213e9f199 17-Jul-2011 Marc Blank <mblank@google.com> Handle message sets in a single EmailAsyncTask

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

Change-Id: I8f9ba287d69021fdb99b4a8a30cc79755f669b97
om/android/email/ControllerProviderOpsTests.java
0796b8aa61d6782a425e68cd77763ea1e701e592 15-Jul-2011 Ben Komalo <benkomalo@google.com> Don't save empty drafts.

Note: all unicode sending unit tests are broken due to chip issues. I've
filed a separate bug on that.

Bug: 5012204
Change-Id: I17392f65e5bd8349780b79d9cbe10492d8e7a7d9
om/android/email/activity/MessageComposeTests.java
d6ad9b8c0315e7718d1713cec1a81b5a82d768ac 14-Jul-2011 Ben Komalo <benkomalo@google.com> Fixup recent mailboxes.

The default recent list should be pre-populated and fall off the list as
normal. The previous implementation showed a default list if there were
no touched mailboxes, but then the default list disappeared as soon as
there was one touched.

Bug: 5020673
Change-Id: Ifad607a9d36feff837ab42d039ce9209f223f345
om/android/email/activity/RecentMailboxManagerTest.java
acd985efb4b29da28953308ba3d5c8f43b760379 14-Jul-2011 Ben Komalo <benkomalo@google.com> update one more test for default account changes

Change-Id: I36344a9c0a29d718ec9dd3d51d9abfbc435252f0
om/android/email/provider/ProviderTests.java
52e66110d8934cf0a3dd632101a56d4ef45b549a 14-Jul-2011 Ben Komalo <benkomalo@google.com> Unit test updates for default account changes

Change-Id: Id619de198a84d1da43068a90474ed76ece9a30b5
om/android/email/provider/ProviderTests.java
cf7cd933dba6845b365c4bed28ae53580fefbef0 11-Jul-2011 Ben Komalo <benkomalo@google.com> Filter out Search mailbox from recents.

Bug: 5015109
Change-Id: I4e4982bbedc388529eb2f3a9c06ecac47a0a85f0
om/android/email/activity/RecentMailboxManagerTest.java
2ac164f609faea134b8fa1d6c0ebc90ccda91166 01-Jul-2011 Makoto Onuki <omakoto@google.com> Fix bug 4982804 / nested fragment transaction

Post MessageOrderManager callbacks instead of calling them directly
to break the loop.

Change-Id: I033121f7bdbadf6edd7a0fab87b960b737da820e
om/android/email/activity/MessageOrderManagerTest.java
e76962b1b9c66ecc3fd49cd4c956f234365bfe5c 01-Jul-2011 Ben Komalo <benkomalo@google.com> Revert "Enable SD card encryption policy when emulated"

This is a manual cherry-pick of c379ebe3722b5d21201246a714eeea99d8679b96
This reverts commit 7fd14be80447de15bd5360321fa80e34f60fa251

The introduction of proper SD cards breaks the invariant that "external"
storage can be encrypted. Unfortunately, this means that accounts with
that policy bit set will have to be removed for now.

Accounts with the security policy set will be forced to go through
security provisioning on the next sync, using the regular mechanisms of
showing a notification with "Security update required", and then having
it fail. :(

Bug: 4466311
Change-Id: I68119b14f8d198779c2073296e228bc6772136ee
om/android/email/SecurityPolicyTests.java
1600adab970cdf4e5a9418417bb93b0b06e30926 01-Jul-2011 Makoto Onuki <omakoto@google.com> Merge "Fix bug 4978035 Precondition failure: Not combined mailbox"
a6212c88e0fb5906cb4065c775c1f4c0b83b7ca4 30-Jun-2011 Makoto Onuki <omakoto@google.com> Fix bug 4978035 Precondition failure: Not combined mailbox

Also added test.

(For some reason the message count doesn't get set properly on tests...
I'll investigate it when I get around to it...)

Change-Id: I83f3b6f2079da06b2d4973419d2296e6492de1d3
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/email/activity/AccountSelectorAdapterTest.java
2bdf7ee0f0f4a2b11b5f7c0f8b193080600fefd8 01-Jul-2011 Marc Blank <mblank@google.com> Delete orphaned mailboxes/messages/policies at provider startup

Bug: 4972132

Change-Id: Icc756a9e28b77de052261903089b040d229e7b5d
om/android/email/provider/ProviderTests.java
8de5bda81594182757c1aa94a65cfb8c7b360b34 30-Jun-2011 Makoto Onuki <omakoto@google.com> Close cursor properly.

Also, don't issue separate query()s for each recent mailbox.

Bug 4977956

Change-Id: I3ccd437a7efd5c3599c4a1952ba091a7b3b815bf
om/android/emailcommon/utility/UtilityUnitTests.java
0b8e04c84def3a06ef45126b48efc485fa0a7628 29-Jun-2011 Marc Blank <mblank@google.com> More Store cleanup

Change-Id: I8f542175b4468c7a320322a57bfdaf19a7320165
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/mail/StoreTests.java
244d306ebb0addbc5d87008af9412b76c80e861e 29-Jun-2011 Marc Blank <mblank@google.com> Remove more useless code

* Strike another blow for sanity!

Change-Id: Id95b441f9577abda66f04113793d6b1c60500ebe
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/emailcommon/mail/MockFolder.java
77160c8c08df90c8e9992596197e3438e46d41e5 29-Jun-2011 Marc Blank <mblank@google.com> Merge "Don't cache ImapFolders"
2720a818d5de169734434b114adfdf824a485f55 29-Jun-2011 Marc Blank <mblank@google.com> Don't cache ImapFolders

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

Bug: 4972084
Change-Id: I2bf17b9cfc8549a222e991f3e59abfd00a4d3afd
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/emailcommon/mail/MockFolder.java
ea8034affadcf645202d03eac3965d4a86fced58 29-Jun-2011 Marc Blank <mblank@google.com> Merge "Clean up Store implementation"
35b0e95ca795e17b6dc8dd98c7ab847d65d9aa0c 29-Jun-2011 Marc Blank <mblank@google.com> Clean up Store implementation

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

Change-Id: Ic5237236c5349ecf006538c58b63c1efe8e4ea61
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
50d934360d51392ac2aa6f11de4d6e1446cf78c9 29-Jun-2011 Makoto Onuki <omakoto@google.com> 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
om/android/email/activity/FindParentMailboxTaskTest.java
om/android/emailcommon/utility/EmailAsyncTaskTests.java
6b256f1fa10b858ae2bea827b65c8608592e4ba3 29-Jun-2011 Ben Komalo <benkomalo@google.com> Wire through results count in search header.

Change-Id: I817236d9c3294acb25b62724cc8c99d47df7f354
om/android/email/activity/MessagesAdapterTests.java
a08fd4c74dd1f8e76fce73755eb2e51d4b37f9bd 28-Jun-2011 Makoto Onuki <omakoto@google.com> Merge "Introducing DelayedOperations"
f8acc296281342ef3036c1978f67474adac499a5 28-Jun-2011 Ben Komalo <benkomalo@google.com> Merge "Introduce a SearchCursorLoader"
6b968c1dce3ba78680d968e04fc6f59bbbb22073 28-Jun-2011 Makoto Onuki <omakoto@google.com> 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
om/android/emailcommon/utility/DelayedOperationsTests.java
37c8a70d644ffc91a880f67a80a8558b4c53d5c3 28-Jun-2011 Ben Komalo <benkomalo@google.com> Introduce a SearchCursorLoader

This loader will abstract away the waiting for the controller to cleanup
the existing contents of the search mailbox

After some additional, to-be-done plumbing, I'd like
Controller.searchMessages to return some results info (like # of results
at the least) so that the SearchCursor returned can relay that
information to the client (which can then do a lot more interesting
things at that point).

Change-Id: Ifcba0ddf7170c56dac9f3b44128988a5aa4ca887
om/android/email/activity/MessagesAdapterTests.java
bc1fa230319bbc4b0facda5ef2eb651779ce71d1 27-Jun-2011 Marc Blank <mblank@google.com> Merge "Clean up/simplify ExchangeUtils/ExchangeStore"
4689cb7100a8b1cfa188499a9910912d15b3dad3 27-Jun-2011 Makoto Onuki <omakoto@google.com> New account spinner

- Don't use the action bar spinner.
Instead use a custom view to show the current account.
(It's not a spinner; now we show the dropdown list by ourselves,
which gives us more detailed control.)

- Also show the current mailbox name/unread count with the account name.

- Removed the mailbox info loader in ABC.
Instead, now the AccountSelectorAdapter loader loads the current
account/mailbox name, and the unread count as extras.

- Now ABC.Callback.onMailboxSelected passed an account ID as well
as a mailbox ID.

- There's new code paths that can cause the "fragment transaction in
onLoadFinished" exception. We need to fix this properly, but
for now we just use commitAllowingStateLoss().

Bug 4948352

Change-Id: I73bb8b7530f8328ca1c86382ac0a54086ad061d7
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
66a47b8dac5e97e37c30b928bc5a227d74baada9 27-Jun-2011 Marc Blank <mblank@google.com> Clean up/simplify ExchangeUtils/ExchangeStore

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

Change-Id: Ic538cfe1de57eca24088ee1f590264283d12f511
om/android/email/service/AttachmentDownloadServiceTests.java
6f93d2edca7e699503089def8935042cedbbcdf4 24-Jun-2011 Ben Komalo <benkomalo@google.com> Update notification text according to design

- "UNSEEN new messages" is the title for multiple new messages
- the small number in the right shows the unread count

Change-Id: I48f761b727ea8abc9277d737a08789fa63d10871
om/android/email/NotificationControllerTest.java
80d3875d306c60da83e547c573427627911f8a99 23-Jun-2011 Makoto Onuki <omakoto@google.com> Action bar: Use laoder to get current mailbox info

Before this CL, we had this crazy plumbing from MailboxListFragment
to ActionBarController to update the current mailbox name/message count.

This wouldn't work on 1-pane, so now ABC just gets the current mailbox id
from UIC and loads the name/count with its own loader.

Also...
- Fixed bug 4904450 and bug 4460470: Now we consistently use FolderProperties
to get proler display names and message counts.

- Renamed some confusing names in AccountSelectorAdapter

Change-Id: Ic7bea6da6d2859006fb8f9263024c7d5e62b1e7f
om/android/email/FolderPropertiesTests.java
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/emailcommon/utility/UtilityUnitTests.java
53300963ff0d2cefa94a7170bfb4a6418f5b5b17 23-Jun-2011 Ben Komalo <benkomalo@google.com> Save/restore message list context

This fixes opening messages after rotations. Oops.
Bug: 4905495

Change-Id: Ibb9984245f7a040b65d472ad4103da587c28c83b
om/android/email/MessageListContextTests.java
63537746479f4b65517bd217c1a5f76d697367eb 23-Jun-2011 Marc Blank <mblank@google.com> Fix problem with getDefaultAccountId() with no explicit default

* This wasn't working with the new code and the unit test wasn't
testing this case.
* Updated code in EmailProvider and added a test case

Change-Id: I75c23423c4f43e4201d446886d92a5312fa8a084
om/android/email/provider/ProviderTests.java
f1d9367909005883021a4aa48197fcf73d1c0a64 22-Jun-2011 Jorge Lugo <jlugo@google.com> Merge "Fix behavior if replying to own sent message"
0404a331ad14f3473be5905f73956626896b05c8 22-Jun-2011 Marc Blank <mblank@google.com> Merge "Improve EmailContent caching..."
6e418aa41a17136be0dddb816d843428a0a1e722 19-Jun-2011 Marc Blank <mblank@google.com> 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
om/android/email/ControllerProviderOpsTests.java
om/android/email/DBTestHelper.java
om/android/email/SecurityPolicyTests.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MessageComposeTests.java
om/android/email/activity/RecentMailboxManagerTest.java
om/android/email/provider/PolicyTests.java
om/android/email/provider/ProviderTests.java
om/android/emailcommon/provider/MailboxTests.java
om/android/emailcommon/provider/QuickResponseTests.java
505ac4b09bbe13ff099e40d94e45963e46a9261f 22-Jun-2011 Ben Komalo <benkomalo@google.com> Prevent NPE when account can't be found for policy

Added some tests to ensure no orphaned policy

Bug: 4686450
Change-Id: I64a1f5de05f3e73052cb41828ed6bf1a2e26d22a
om/android/email/SecurityPolicyTests.java
67be1d5f6b413221ac8e261c7697865d9aa12892 21-Jun-2011 Jorge Lugo <jlugo@google.com> Fix behavior if replying to own sent message

If the address of the account is in the reply-to: field (or from: field
when reply-to: is empty), now populates the To: field with the same To:
field on reply.

Bug: 3504182
Change-Id: I17d7fe4be002b302decb8f0dae95f33d452b7adc
om/android/email/activity/MessageComposeTests.java
c9af8b2dbf830135d154b6336b9bb54959ca2a54 21-Jun-2011 Makoto Onuki <omakoto@google.com> Merge "Wait for initial sync in Welcome."
95ad0f0e93d290b2c630a49a254e61f10b2783c8 21-Jun-2011 Makoto Onuki <omakoto@google.com> Wait for initial sync in Welcome.

Change-Id: I5052e8a3e3af5565184c391200b9ab63dff4b50b
om/android/email/activity/WelcomeTests.java
0fd968623d714ba7fca5286a61d9108a937f6115 21-Jun-2011 Marc Blank <mblank@google.com> Merge "Fix MailService unit tests"
cbc842c5c91f90517b6766e15aafc051b75af872 21-Jun-2011 Marc Blank <mblank@google.com> Fix MailService unit tests

* These broke when we split Email/Exchange
* We now use a test authenticator and a test account type, which
is actually far cleaner than dealing with actual accounts

Change-Id: Ib7c9f884eac484c33642a8036f47466ce641c567
om/android/email/AccountTestCase.java
om/android/email/service/MailServiceTests.java
ce4cce05b2ee5ea2d9629c189a79f7f30778f534 21-Jun-2011 Makoto Onuki <omakoto@google.com> Fix failing tests

Fixed activity tests and and activity.setup tests.

Bug 4762098
Bug 4766087
Bug 4590590

Change-Id: Ifbd49f38c59854c65b6c48a1b03ca8153bfa558b
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/email/activity/RecentMailboxManagerTest.java
om/android/emailcommon/utility/UtilityUnitTests.java
369905c95d8b069205f30726edc54122e6bc388f 21-Jun-2011 Makoto Onuki <omakoto@google.com> Fix crashing tests

Some of the tests are still failing, but at least now we can go through till
the end.

- Fixed NPE in WelcomeTests (caused by the mock context not returning a proper
layout inflator.)
- Removed the rainy day test from MessageFileViewTest.
(Not setting a proper intent will result in the argument check in
MessageFileViewFragment)
- Removed unnecessary null check in EmailProvider.getDatabase()

Bug 4766072

Change-Id: I48b92cc91d0417cd9980c131fda8f63a9a6eb990
om/android/email/DBTestHelper.java
om/android/email/activity/MessageFileViewTest.java
09a0e9b5dca78244e3cc365d99263e7c2402b25d 21-Jun-2011 Makoto Onuki <omakoto@google.com> Merge "Move restore account to EmailProvider."
9dad9ad973ccf8255228a41acc0ee78af989a651 21-Jun-2011 Makoto Onuki <omakoto@google.com> Move restore account to EmailProvider.

In order to reduce the UI initialization code, move
let EmailProvider restore accounts when it opens the DB.

Backup can be moved too, but I just leave it as a TODO.

Change-Id: Id5c1810904db6abaecbfecbaa8d2d53834ebf07b
om/android/email/provider/AccountBackupRestoreTests.java
ae95fbf4d0238ee5a6fcd5892d9a9105e8db9249 21-Jun-2011 Jorge Lugo <jlugo@google.com> Merge "Added quick responses."
5a3888f35b669ffb3cc785d7dfe4862879a3896c 01-Jun-2011 Jorge Lugo <jlugo@google.com> 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
om/android/emailcommon/provider/QuickResponseTests.java
627bc6ed57ee06cc588e64ff959bfd7870b659b6 13-Jun-2011 Marc Blank <mblank@google.com> First implementation of IMAP search

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

Change-Id: Ib4d979536be657137cf70ca535cf429d707be41b
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/emailcommon/mail/MockFolder.java
d09cff08882e553afce919865a2cc60b657d4659 06-May-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/SecurityPolicyTests.java
f5418f1f93b02e7fab9f15eb201800b65510998e 14-Jun-2011 Marc Blank <mblank@google.com> Move Account into its own top-level class

Change-Id: Ide7c991b7d4d418dbe17164421425bf898ba64ee
om/android/email/AccountTestCase.java
om/android/email/ControllerProviderOpsTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/NotificationControllerTest.java
om/android/email/RefreshManagerTest.java
om/android/email/SecurityPolicyTests.java
om/android/email/UtilityLargeTest.java
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/email/activity/FindParentMailboxTaskTest.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MailboxFragmentAdapterTest.java
om/android/email/activity/MessageComposeTests.java
om/android/email/activity/MessageListTests.java
om/android/email/activity/MessagesAdapterTests.java
om/android/email/activity/WelcomeTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/AccountBackupRestoreTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ContentCacheTests.java
om/android/email/provider/PolicyTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/email/service/AttachmentDownloadServiceTests.java
om/android/email/service/EmailBroadcastProcessorServiceTests.java
om/android/email/service/MailServiceTests.java
om/android/emailcommon/mail/MessageTestUtils.java
om/android/emailcommon/provider/MailboxTests.java
om/android/emailcommon/utility/UtilityMediumTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
85e4c101b014857fe40f87c3837b82564cfc5b6c 08-Jun-2011 Marc Blank <mblank@google.com> Remove storeUri's except during auto-setup

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

Change-Id: Idd5e0874bba6e3390e4f093bcb03f4b1bb399c11
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/mail/StoreTests.java
om/android/emailcommon/provider/HostAuthTests.java
9d2dae67506983c64f72350a4fb5967cfd85b9a8 09-Jun-2011 Todd Kennedy <toddke@google.com> Set proper default values for new mailboxes

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

bug 4356871

Change-Id: I9e6a394145f471b555c5827d5114bca243dbc37c
om/android/email/ControllerProviderOpsTests.java
348b2f9f11c6f62d8e134007ef1b0199ead9a650 09-Jun-2011 Todd Kennedy <toddke@google.com> test uid search w/ and w/o parens

some imap servers will not work if the uid command contains parenthesis, while
other imap servers will not work unless the uid command contains parethesis. we
need to verify that we send both formats.

bug 4526165

Change-Id: I04a31f06a0f0fa0f03777a22b23281af574cd549
om/android/email/mail/store/ImapStoreUnitTests.java
7984aa60a012374e286802fa35a6b3e79866bca9 09-Jun-2011 Todd Kennedy <toddke@google.com> Add new field to mailbox test

there's a new field in the mailbox class that was causing a unit test failure.

bug 4552358

Change-Id: Id17a99b55248cdc9e4c5ea455506f72e52687599
om/android/emailcommon/provider/MailboxTests.java
724c3a81cd3649b48ab47c6e49cb42f73f20c815 08-Jun-2011 Ben Komalo <benkomalo@google.com> Introduce scheme name escaping in SSLUtils.

Change-Id: I73f19e7d40d0b19dfd41cfaf7db0879ef2e3a3ea
om/android/emailcommon/provider/HostAuthTests.java
om/android/emailcommon/utility/SSLUtilsTest.java
313586c8eb4e23ceec068b82f3dc0be1c8a7045f 07-Jun-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/emailcommon/provider/HostAuthTests.java
1b404f4fff39977e4f8edc9258c1bd1075da11c6 07-Jun-2011 Todd Kennedy <toddke@google.com> Collapse MailboxAdapter & MailboxFragmentAdapter

MFA was the only subclass of MA and the abstraction no longer made sense.
Collapse the two into a single adapter class.

Change-Id: I32c6f027bc37f3da08626f743c3f494e5f48c3f0
om/android/email/activity/MailboxFragmentAdapterTest.java
cb530b4e9139a8049cf639c28613630e9a9dbc48 07-Jun-2011 Makoto Onuki <omakoto@google.com> Merge "Use the CursorWithExtras pattern for the message list."
e3924188409b631c9ed53cf0b8f1fb455c3ef67d 07-Jun-2011 Todd Kennedy <toddke@google.com> Add recent mailboxes to the account spinner

The ability to change mailboxes using the spinner is currently only implemented
for the two-pane UI. one-pane implementation will come in a future CL.

Change-Id: If72e9d9d607508553c918f5523e748e8a481ff84
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
41878c2813d9948af5d333e2bf4d063c538d3c19 03-Jun-2011 Makoto Onuki <omakoto@google.com> Use the CursorWithExtras pattern for the message list.

This will make the message list a lot snappier.

We were using two different loaders for the message list; one is to load
the meta information and the other to load the actual message list.

Unify them using the CursorWithExtras pattern.

Change-Id: I02957bbca1b1fb74ca6eca14ad2535dfdbf03a5a
om/android/email/activity/MessagesAdapterTests.java
om/android/email/data/MailboxAccountLoaderTestCase.java
3a1e874a9cedf1a579c44d9342937777c8f21d18 06-Jun-2011 Todd Kennedy <toddke@google.com> Fix filtered query

we need to return 5, post filtered, results. previously, we were returning
5, pre filtered, results. Also add a test to catch this condition.

Change-Id: Id25f4bf79081c42a2012e0e51b36142120c83b20
om/android/email/activity/RecentMailboxManagerTest.java
f04c832f23b14aa26bf584eb9a82f9bc06279524 04-Jun-2011 Todd Kennedy <toddke@google.com> Add ability to track mailbox recency

Change-Id: I1bcc7928ea7065a5daa262b7cea7ee3e21981675
om/android/email/activity/RecentMailboxManagerTest.java
8f54b2f1356248800cf4516f1f52ea643ace1f7d 03-Jun-2011 Jorge Lugo <jlugo@google.com> Merge "Fixed reply-all bug"
15842c522ec50584fcf04e1ffa47025bfef01715 03-Jun-2011 Jorge Lugo <jlugo@google.com> Fixed reply-all bug

Upon hitting reply all, all email addresses except that of the source message sender
go in the CC: field. Previously they all went in the TO: field. Updated 3 tests
in MessageComposeTests.java (testReplyAllAddresses1(), testReplyAllAddresses2(), and
testReplyAllAddresses3()) to reflect this new behavior.

Bug: 4534058
Change-Id: I852daebdd8843a45f685eecc67f757c87925bb6c
om/android/email/activity/MessageComposeTests.java
75a754660e33c5e18cacffff193983ba22a7b9b0 02-Jun-2011 Marc Blank <mblank@google.com> Update searchMessages API

* Store various search parameters in a new parcelable class

Change-Id: Iadec6a803b1bf17d89cd401c3fca1cb0ad3340d4
om/android/emailcommon/service/SearchParamsTests.java
3bfd5734b8f75b6ec0efbf4fb3e3cc0b77a85d8e 02-Jun-2011 Makoto Onuki <omakoto@google.com> Merge "MailboxListFragment: In-place nested mailbox navigation"
844bf745044b4564f42a68f8b7d40105c4def294 01-Jun-2011 Makoto Onuki <omakoto@google.com> MailboxListFragment: In-place nested mailbox navigation

Now we reuse the same instance of the fragment for nested mailbox
navigation. (Don't use fragment transaction)

"CursorWithExtras" now only has the child count, so I removed the
bundle version and added a concrete class to MailboxFragmentAdapter.

With this CL the nested mailbox navigation on 1-pane should work, but
not back navigation. (Back press event isn't connected to the
fragment yet.)

Change-Id: I2c23651d9c8edb5fe062c68bbb9b462c8949ded4
om/android/email/activity/FindParentMailboxTaskTest.java
44f5cd67c97da6a5c7e63a73b4dca7057b83cdbb 01-Jun-2011 Todd Kennedy <toddke@google.com> 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
om/android/email/widget/WidgetViewTests.java
40ce9246c6a1b7a96ea6e130c411e032151e959f 26-May-2011 Marc Blank <mblank@google.com> Merge "Cleanup code in Policy"
fae5ebbfd202b930296a1bbc67459152f1a6c6ce 26-May-2011 Marc Blank <mblank@google.com> Cleanup code in Policy

* Use a single method for setting/clearing an account's policy

Change-Id: I90fd97d4a5ba452d4656bbabd06a40797c82e10c
om/android/email/SecurityPolicyTests.java
om/android/email/provider/PolicyTests.java
3096b4ae18f55c9ebf04d83c534da4d5e3370932 25-May-2011 Makoto Onuki <omakoto@google.com> Add Controller.deleteMessages(long[]) for batch delete

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

Bug 4384642

Change-Id: I8f6635011dae0529a82972617101e1c130090b76
om/android/email/ControllerProviderOpsTests.java
f3ff0ba91076ef1fb087fc30fe65d9504011c2b3 19-May-2011 Marc Blank <mblank@google.com> Create AccountManager acct for pop/imap on upgrade from GB

* Also, unit test for upgrade path

Bug: 4439595
Change-Id: I508a3d8ea70c1a894a412528314e42a39f3ae0e7
om/android/email/provider/ProviderTests.java
b535e436f37fda4a18a939ab3afc134f9967ec8a 20-May-2011 Ben Komalo <benkomalo@google.com> Merge "Move HostAuth to top level class."
12b82d9374947c9268217f45befe8a74bd9b60d7 20-May-2011 Ben Komalo <benkomalo@google.com> Move HostAuth to top level class.

No other changes made.

Change-Id: I1c6497c98abc0f99443ea42d8aed6295b263c123
om/android/email/ControllerProviderOpsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/AccountBackupRestoreTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/email/service/EmailBroadcastProcessorServiceTests.java
om/android/email/service/MailServiceTests.java
om/android/emailcommon/provider/HostAuthTests.java
d531dc3058c52b1e3ee2ee53eb8d63d6177d9f91 19-May-2011 Makoto Onuki <omakoto@google.com> Fix opening Starred mailbox.

We need to pass around the account ID with onMailboxSelected too.
(It's kinda sad it wouldn't have happened if we had par-account starred
mailbox.)

Also made sure MailboxListItem.mMailboxId now really contains only a mailbox
ID. Before this chage, we stored an account ID to this for an account row
on the combined mailbox.

Bug 4452811

Change-Id: I732fd8eb18f787f4a700a45a40768f96e3bb8751
om/android/email/activity/MailboxFragmentAdapterTest.java
om/android/email/activity/MailboxesAdapterTest.java
2ed7a86949b2b2a95017525145ad421b9e5d0e38 17-May-2011 Makoto Onuki <omakoto@google.com> Support pre-HC style account shortcuts

Account shortcuts used to point at MessageList directly with a
content://com.android.email.provider/account/ACCOUNT-UUID URI.

Hook these intents and open Welcome instead.

On Eclair and before, we stored an account-ID directly as an extra,
but this style is no longer supported.

Bug 4208879

Change-Id: I9fecb0723743377a6d7c7e84626e8613f2356492
om/android/email/activity/MessageListTests.java
581e3c2333deec3d57d9a18a2ed6da26ae71c8a2 17-May-2011 Todd Kennedy <toddke@google.com> Fix Store re-using old data

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

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

Change-Id: I4ddcbc3e2759b7b1374d0300706373678dedec94
om/android/email/mail/StoreTests.java
171c3f2273223652b9999977d530a715420c0f64 16-May-2011 Todd Kennedy <toddke@google.com> Some more re-arrangement of code

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

Change-Id: Ie7532381759a568cb23601e1071c8e199b6beb07
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
ebece4dbdcdfee85a410a0d00c9b6739ee3e705e 16-May-2011 Todd Kennedy <toddke@google.com> Make ImapConnect a top-level class

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

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

Change-Id: Ie3bda40d677707a0d6655f57175e58dece539e19
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
4c4e4c3515c3e3300e03f90e02a0c520dc2dff32 13-May-2011 Makoto Onuki <omakoto@google.com> 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
om/android/email/activity/MessageOrderManagerTest.java
om/android/email/provider/ProviderTests.java
om/android/emailcommon/utility/UtilityMediumTests.java
e0bb7e79092a1066f4cf42ec364a81ebb31ac808 14-May-2011 Ben Komalo <benkomalo@google.com> Make Mailbox parcelable

Also fix unit tests

Change-Id: I5f64f53b278b7bc27053d831760b155532a14e33
om/android/emailcommon/provider/MailboxTests.java
53ea83ebf91f820692e8fa8e781f5cc982dd94db 14-May-2011 Ben Komalo <benkomalo@google.com> Move Mailbox to top level class.

No other changes made.

Change-Id: I3d8f3c521dc0d902be313b25252b4b6a4a96e7ee
om/android/email/ControllerProviderOpsTests.java
om/android/email/NotificationControllerTest.java
om/android/email/SecurityPolicyTests.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MailboxesAdapterTest.java
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ContentCacheTests.java
om/android/email/provider/PolicyTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/email/service/AttachmentDownloadServiceTests.java
om/android/email/widget/WidgetViewTests.java
om/android/emailcommon/provider/MailboxTests.java
om/android/emailcommon/utility/UtilityMediumTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
2866284a6d4ee4b368fcaf412c540b21d457e065 13-May-2011 Ben Komalo <benkomalo@google.com> Rename AccountSettingsXL -> AccountSettings

This activity already supports phone and tablet mode.
Only renames in this change - no other change.

Change-Id: Ieca17137af45e3860812091f69cd4d9b55ddf3ec
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSettingsXLTests.java
f4378923488abcb4422253cf2e7a9c9d244d1b96 13-May-2011 Todd Kennedy <toddke@google.com> Open message if only one message in notification

If there is only one unread&unseen message in the notification, clicking the
notification will automatically open the message view fragment. Otherwise,
the message list fragment will be opened.

Change-Id: I22778258836a36f289d71b99a6214ec82778f385
om/android/email/NotificationControllerTest.java
ffeb7de284b81a466a9f49ba380c045576cfc557 12-May-2011 Marc Blank <mblank@google.com> Merge "Fix a race condition in which an Attachment might be wrongly deleted"
2f6cbb021cd97e2450c29b72a27236ba4ef20823 12-May-2011 Marc Blank <mblank@google.com> 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
om/android/email/provider/AttachmentProviderTests.java
94331c96d9397ec451ae3a0a9f825cc4aca2b9d1 11-May-2011 Makoto Onuki <omakoto@google.com> Remove phone activities and implement one-pane

The primary purpose of this CL is to remove phone activities, so the
one pane implementation is very much temporary and primitive, but it
should offer minimal operations.

Change-Id: If57f81db7c605c95664d49044a5cc082beda59c0
om/android/email/activity/AccountsAdapterTest.java
om/android/email/activity/MessageFileViewTest.java
om/android/email/activity/MessageViewTest.java
b2a909598ba78783b05c58508310f864c56c897b 11-May-2011 Marc Blank <mblank@google.com> Create/test method to set "not downloadable" flag based on policy

Change-Id: I08bec46d0c961bdc9530768f5198346338b3e2f3
om/android/email/provider/PolicyTests.java
d31d64d330e1276ffdcd0fe9978b3303a38d4e95 11-May-2011 Todd Kennedy <toddke@google.com> Merge "Use observers to manage new message notifications"
5d08360a9bcb80ca8ce4b11b2664c8aba96f0c29 11-May-2011 Marc Blank <mblank@google.com> Merge "Complete rewrite of account backup/restore code"
83693a6acaffd219f65e04054bc04530e9cc132f 10-May-2011 Todd Kennedy <toddke@google.com> 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
om/android/email/NotificationControllerTest.java
om/android/email/provider/ProviderTests.java
a48abd7f95010e8374852c3df1ff86aabcdfba32 10-May-2011 Todd Kennedy <toddke@google.com> Merge "Add notification table shared preference"
2f371e85537a199cfa8a489007916dab56215a6d 10-May-2011 Todd Kennedy <toddke@google.com> Add notification table shared preference

The notifiaction table will be used by the updated notification controller.
The table stores the key and the associated last notified message key and
message count.

Change-Id: I037b5374ab51620f1cffc8b41391db858cfd3a2d
om/android/email/DBTestHelper.java
om/android/email/PreferencesUnitTests.java
5b7e4349175918f3e407e50991de70bbbd5a618b 03-May-2011 Ben Komalo <benkomalo@google.com> Support switching between reply/replyall/forward

This introduces tab navigation on large screens with action bar (a
dropdown for the phone view is yet to be implemented, though the
internals are ready for it).

This requires the side effect that restoring a draft
reply/replyall/forward will attempt to also load the source message in
full for additional information. If that load fails for whatever reason,
the draft just remains a "compose" as it used to before.

Bug: 3117253
Change-Id: I9cff5ed4a5e9abd1338b6dbde28ceb3e4dc2b761
om/android/email/activity/MessageComposeTests.java
dd9d4725694ce641910779971dbf11b1f5063c3f 10-May-2011 Todd Kennedy <toddke@google.com> Merge "Add unit test for Utility#updateLastSeenMessageKey"
0993190cafebc107bd27a26996b5d63d4a4ede10 06-May-2011 Marc Blank <mblank@google.com> Complete rewrite of account backup/restore code

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

Change-Id: I2de75aafdacc87246174303961e58547303f641e
om/android/email/AccountBackupRestoreTests.java
om/android/email/AccountUnitTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/PreferencesUnitTests.java
om/android/email/provider/AccountBackupRestoreTests.java
om/android/email/provider/ProviderTestUtils.java
a17ee57c7ff7eb3391cc32f700aaa4fed8aa971f 09-May-2011 Todd Kennedy <toddke@google.com> Add unit test for Utility#updateLastSeenMessageKey

Change-Id: I1335ac53c5de418fd0ed6c2b38be60165db1cb8c
om/android/emailcommon/utility/UtilityUnitTests.java
8d042850fb4257ca879f4d0c60e366b92a4c8422 06-May-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/activity/MessageComposeTests.java
c4cdb11d24c19428dd39f986b00c1a29e75e1505 03-May-2011 Todd Kennedy <toddke@google.com> Remove notification if messages seen off device

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

Change-Id: Iba09afe01942e0deaac8210fd6f9b315b1c8c93f
om/android/email/NotificationControllerTest.java
om/android/email/RefreshManagerTest.java
f91a03f5203bb64ae0726596d65ac90c35088666 05-May-2011 Marc Blank <mblank@google.com> Add new policies to Policy and associated data structures

* Update Policy unit test

Change-Id: I24a980537a73e40fca9fceb1b6ad6b2feaa9c342
om/android/email/provider/PolicyTests.java
c6beaaea590564860b7a61c30c4091dbc66959d1 05-May-2011 Ben Komalo <benkomalo@google.com> Update MessageComposetests with latest refactors

Change-Id: I7ab1275f4f4a803588619952f55fd81520036526
om/android/email/activity/MessageComposeTests.java
55db7c098f1e5c8fb21e849245a5c15a4c20a789 03-May-2011 Marc Blank <mblank@google.com> Merge "Rework of security policy storage"
aeee10e57ef4d931e7708fde218d590453a82aea 28-Apr-2011 Marc Blank <mblank@google.com> Rework of security policy storage

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

Change-Id: I1505ee75230d6a0d3c2b62a46326f39c2c7f9eb5
om/android/email/LegacyConversionsTests.java
om/android/email/SecurityPolicyTests.java
om/android/email/provider/PolicyTests.java
om/android/email/provider/ProviderTestUtils.java
0bb7f1c37c99beb2a91bd98e64fcc9656877e034 02-May-2011 Ben Komalo <benkomalo@google.com> 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
om/android/email/ControllerProviderOpsTests.java
347d06015e05e32f0a47ae09addb29af71bac074 29-Apr-2011 Todd Kennedy <toddke@google.com> Fix unit tests

bug: 4361079
Change-Id: I4463187e4b7b6cc6b9c9e6bce5f4c1d690f52a79
om/android/email/mail/store/ImapStoreUnitTests.java
958b15e8f30fd4e9eae1b05d48cb9a817326be6d 28-Apr-2011 Todd Kennedy <toddke@google.com> basic code cleanup of the notification controller

* javadoc methods
* rename some methods
* remove duplicate code; now new message and other account notifications
are created with the same code

Change-Id: Iecf70494b6407a9a73380de103390a59d006191b
om/android/email/NotificationControllerTest.java
8112732376d4cc033ee515a6531852ef42266929 28-Apr-2011 Makoto Onuki <omakoto@google.com> Move more UI stuff from activity to the UI controller

- Now all the UI stuff is owned by the UI controller
- Except temporary UI (exchange search and per-mailbox-settings)
- Except error banner
This should be moved too eventually, but I consider it as a low-priority.
I'll leave it as-is for the time being.
- Moved RefreshTask too. The spec for refresh has dependency to the UI.
(i.e. implicit refresh of the mailbox list may not be necessary for
the phone.)

Also renamed the main activity to EmailActivity.

Change-Id: I00585856bdacf69aa4e104178a5cf7352ff6d592
om/android/email/activity/MessageListXLRefreshTaskTest.java
om/android/email/activity/UIControllerTwoPaneRefreshTaskTest.java
567442bcf810ece69410a8945b224215c317cb17 27-Apr-2011 Makoto Onuki <omakoto@google.com> Merge "Fix "move to" dialog."
4e033e0ac79d85bc8df8e52bdfc8b1fc9ad29f3e 26-Apr-2011 Makoto Onuki <omakoto@google.com> 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
om/android/emailcommon/utility/UtilityUnitTests.java
e87ff6c3cbbfc5e3636f9827b58820652e3ea1c5 27-Apr-2011 Todd Kennedy <toddke@google.com> Opportunistic cleanup

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

Change-Id: Ifd006f760f0c19283e94a11a45c71295c8da35f7
om/android/email/ControllerProviderOpsTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/emailcommon/mail/MockFolder.java
019341af98ffe2dcd484bd0468c9858d9e7cd7a3 26-Apr-2011 Todd Kennedy <toddke@google.com> Set mailbox flags for message contents

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

Change-Id: I11135fafbb14b40660983804fb86bd223e180d5e
om/android/email/mail/StoreTests.java
22208771b7b39c5d131372ba6bc45ab23cc22232 23-Apr-2011 Todd Kennedy <toddke@google.com> Add hierarchical folders to IMAP

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

Change-Id: If07a0632e9b250cf0c33c3e16bfba5816beab94c
om/android/email/activity/MailboxFinderTest.java
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/emailcommon/provider/MailboxTests.java
1611d0baed730df920b0685d3031a4bc98c6f225 25-Apr-2011 Ben Komalo <benkomalo@google.com> Make ImapStore tests use mocks where possible

Change-Id: I2a1d5e7d3cc3b105a24a5fc29772bcd4a0308ad3
om/android/email/MockSharedPreferences.java
om/android/email/mail/store/ImapStoreUnitTests.java
d9cf94632f53bbde14596ac48f0fb8818808a0b4 23-Apr-2011 Ben Komalo <benkomalo@google.com> Fix some unit tests

- some proguard flags were stale
- some deprecated methods were legitimately stripped - kill the tests
for them

Bug: 4330508
Change-Id: I6d5c46c99d002895377f32b203844e9a6dcf0074
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MailTransportUnitTests.java
200c6bd9fa19b78acc2c1664f858521aa9885353 21-Apr-2011 Todd Kennedy <toddke@google.com> Simplify mailbox synchronization logic

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

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

Change-Id: Ifbe4e0cf74ba81e5b6156b452ab72c56c35235ab
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
daf869cf60de75bc91ed3aef6ac0bff1fe371733 20-Apr-2011 Todd Kennedy <toddke@google.com> Use an Account object to create a mail sender

Instead of boiling the account down to an unusable URI, just pass along
the Account object.

Change-Id: Ida408912de29734c8f4ed9cdf09a4d633dd03002
om/android/email/mail/transport/SmtpSenderUnitTests.java
a50fc99b0c433f0cde31ba1c7ab87fb9ea86345d 19-Apr-2011 Todd Kennedy <toddke@google.com> Use Account instead of URI to create transports

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

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

Change-Id: I400036a17271c99272fd9c603547dcd713b50b9d
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
ba7652cda04d428ae7959f8bf6cbc6efe028bfce 19-Apr-2011 Todd Kennedy <toddke@google.com> Make ImapFolder a top-level class

No code changes; just moving the class

Change-Id: I4e4544d99d52dde85b96c99ef45da3a96e7d3d48
om/android/email/mail/store/ImapStoreUnitTests.java
8a05da7c8c5d5c499c1307cdfe8dee821960ef81 15-Apr-2011 Ben Komalo <benkomalo@google.com> 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
om/android/emailcommon/utility/UtilityUnitTests.java
1d1b7a070aeff88883d6db5b91e3ed1a68a17209 13-Apr-2011 Ben Komalo <benkomalo@google.com> Merge "Add signature when starting from external intents."
0fb68c8f0c7fdfd2571291c7b1d3fefab23fa73e 12-Apr-2011 Ben Komalo <benkomalo@google.com> Add signature when starting from external intents.

Also update some of the tests.

Bug: 3122070
Change-Id: Ia0e4620f54279dc53ca1c4484fec6508c411b418
om/android/email/activity/MessageComposeTests.java
2b82c3f0a37ff1e09a21481fabfe4960006b8d83 12-Apr-2011 Todd Kennedy <toddke@google.com> Add columns to cursor to allow for proper layout

The layout requires different indentation. Although the exact layout may
change, we will likely always need to differentiate between the different
mailbox types.

Change-Id: Ia2ff84b552873f92fa45563b2dc0868c29bec3e3
om/android/emailcommon/utility/UtilityUnitTests.java
2577842269f035856b877eb990567c7a32e81252 08-Apr-2011 Ben Komalo <benkomalo@google.com> Misc fixes and dead code removal.

Change-Id: I48b2fa5f7bf619197d882c71e8b174d31d130e26
om/android/emailcommon/mail/AddressUnitTests.java
3659fdf5afe1704d4ba86384f147d52136efeb95 05-Apr-2011 Todd Kennedy <toddke@google.com> Don't use hidden API

AndroidTestCase#getTestContext() is decorated with @hide. Instead, use
InstrumentationTestCase#getContext(). This gives us the same functionality
[i.e. the ability to load a test-only XML resource] without using a hidden
API.

Change-Id: I866234e227d975bac62c12e6a2e8efe90de0261c
om/android/email/activity/setup/AccountSettingsUtilsTests.java
0b6cb1c3307b10929fca7dc09125a128fc330a19 04-Apr-2011 Makoto Onuki <omakoto@google.com> Store UUIDs in account shortcuts, rather than IDs.

Bug 4192836

Change-Id: I1d6349ed3ad70867f113b9a9f7eb8717b88b24c1
om/android/email/activity/IntentUtilitiesTests.java
om/android/email/activity/WelcomeTests.java
74bf57cfafde4095ee67985255cfaa8b1453115e 31-Mar-2011 Todd Kennedy <toddke@google.com> Create separate adapters for mailbox lists

There are currently two places where we use a mailbox list -- in the main
view and in the "move to" dialog. We've replaced the single, modally
configured adapter with two specialized subclasses.

Change-Id: I5dfd5ccd435fefbab4b7647c2bd7a14818f73bf3
om/android/email/activity/MailboxesAdapterTest.java
5e4f1c38724927d7d41713e9e9ff073041d92d73 29-Mar-2011 Todd Kennedy <toddke@google.com> Allow globals in the providers.xml

There are two ways globals can be specified. There can be only one global
character ['*'] and/or multiple wildcard characters ['?']. The global
will match zero or more characters. The wildcard will match any character.

bug 4090086

Change-Id: I07e3edebd1fe989094c68cf047ce5bc9fb91aba0
om/android/email/activity/setup/AccountSettingsUtilsTests.java
566c4f9117c955b8e9009d2dc6d7a42b02cda184 31-Mar-2011 Marc Blank <mblank@google.com> Merge "Highlight utility for HTML and text"
76f614720db6a282c3e890969a600585122cdcc5 27-Mar-2011 Marc Blank <mblank@google.com> 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
om/android/email/provider/ProviderTests.java
om/android/emailcommon/mail/SnippetTests.java
om/android/emailcommon/utility/TextUtilitiesTests.java
44f45f4221f5cd681ac3e9596cedb4f0536a1751 31-Mar-2011 Makoto Onuki <omakoto@google.com> Merge "Don't use findViewById (part 1 -- account setup)"
2fbb3db5d86210d03175ce77ff08c989a96c5864 28-Mar-2011 Makoto Onuki <omakoto@google.com> Don't use findViewById (part 1 -- account setup)

Added two new functions:
- UiUtilities.getView()
is a fail-fast version of findViewById(). Crashes when there's no view
- setVisibilitySafe()
same as View.setVisibility, but doesn't crash even if a view doesn't exist

Let's try to avoid the use of findViewById(), and instead use getView(), *right
after* the layout is inflated, so that we'll always fail-fast if a layout
doesn't have a required view. (Rather than getting a NPE only when the view
is really accessed, which can be in a code path which is rarely executed--e.g.
only when there's a protocol error.)

Let's only use findViewById() only when we're sure no all the variants of a
layout have the view in question and leave a comment to make it clear it's on
purpose.

(UiUtilities has been moved from com.android.email to
com.android.email.activity)

Change-Id: I36e0bab65a989f5d34cf636f13e1eaee084547af
om/android/email/activity/UiUtilitiesTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
08534762bdded437a7fa0e5e422d311c414e0621 29-Mar-2011 Todd Kennedy <toddke@google.com> Allow globals in the providers.xml

We now allow a single global character ['*'] to be specified somewhere in
the domain attribute. Additionally, we will replace the string "$domain"
with the matched domain in all attributes -- user name, password and URIs.

bug 4090086

Change-Id: I46a637ed364c1a079e1230fa22393a1bac059b1f
om/android/email/activity/setup/AccountSettingsUtilsTests.java
de70ee5f7868ede7a738fbeb8ba9f9fe3558aefb 25-Mar-2011 Todd Kennedy <toddke@google.com> 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
om/android/emailcommon/internet/Rfc822OutputTests.java
d31238ca881354938b9d923819da3c63ffb4ac12 22-Mar-2011 Todd Kennedy <toddke@google.com> Add support to query for message IDs

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

This is the second of a couple modifications.

bug 4092301

Change-Id: I1f548b63becfec8733cb8ba9a3fe6ff4be6fdd83
om/android/email/mail/store/ImapStoreUnitTests.java
9f0283dbd7810953b0c795bcba7359fb7cd1f1ce 23-Mar-2011 Makoto Onuki <omakoto@google.com> Merge "Better fix for the PendingIntent issue."
284d8d7db5743d24b9aa246afe3d24139bdb0813 23-Mar-2011 Todd Kennedy <toddke@google.com> Add support for UIDPLUS capability

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

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

bug 4092301

Change-Id: I9279f7fd70daf85adba3b3e202c12d67ddf91f22
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/imap/ImapUtilityTests.java
om/android/emailcommon/mail/MockFolder.java
om/android/emailcommon/utility/UtilityUnitTests.java
308ce9284793b597797994dfb1fb25155cbe0b20 22-Mar-2011 Makoto Onuki <omakoto@google.com> 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
om/android/email/activity/IntentUtilitiesTests.java
om/android/email/activity/setup/AccountSettingsXLTests.java
d72f7bdf114a21db6aac66a7e83d6b002c8e8ed5 21-Mar-2011 Makoto Onuki <omakoto@google.com> Improve EmailAsyncTask

Added 6 methods:
- execute{Parallel,Serial}
- cancelPreviousAndExecute{Parallel,Serial}
- runAsyncParallel{Parallel,Serial} (replacement for Utility.runAsync)

Bug 4083415

Change-Id: I5ca33000e52fc5265ccc84a6e5acb0d3359d0eb4
om/android/email/activity/MessageListXLRefreshTaskTest.java
om/android/emailcommon/utility/EmailAsyncTaskTests.java
b959d9b9b2f1af8cf9a6726192e764b79f8d905a 16-Mar-2011 Andy Stadler <stadler@google.com> am 22759bac: Handle complex chars policy correctly

* commit '22759bacd95385d95d3d9321f490763df1aba89d':
Handle complex chars policy correctly
22759bacd95385d95d3d9321f490763df1aba89d 16-Mar-2011 Andy Stadler <stadler@google.com> 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
om/android/email/SecurityPolicyTests.java
2a47caef7d39ba975bf9a0fe3eacec04ccbe371c 10-Mar-2011 Makoto Onuki <omakoto@google.com> am 553037ba: Merge "Fix NPE in NotificationController" into honeycomb-mr1

* commit '553037ba4ecfc72d68743eff223e16fb9511d7c1':
Fix NPE in NotificationController
43c455eb266125a8e09a98e38d7639a865f52d42 08-Mar-2011 Makoto Onuki <omakoto@google.com> Fix NPE in NotificationController

This would happen when a message has no from addresses.

Bug 4027170

Change-Id: I1da091a6a55b274805ee6b3e109cbeb55a21fae1
om/android/email/NotificationControllerTest.java
665b1801471c4393f1a0e85c5f1206580b902eaa 08-Mar-2011 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Make ACTION_SEND_MULTIPLE work with file: URI" into honeycomb-mr1
8e09307b2743045239402645948155fd30cbb096 08-Mar-2011 Todd Kennedy <toddke@google.com> am 39121c75: Fix display of inline images

* commit '39121c758dcc919b5fde4c893d488916e26d3140':
Fix display of inline images
39121c758dcc919b5fde4c893d488916e26d3140 07-Mar-2011 Todd Kennedy <toddke@google.com> 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
om/android/emailcommon/internet/MimeUtilityTest.java
7a159387636507de95b9b0c052ab593d0e91c433 07-Mar-2011 Makoto Onuki <omakoto@google.com> 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
om/android/email/provider/AttachmentProviderTests.java
om/android/emailcommon/utility/AttachmentUtilitiesTests.java
92cbc9369ba7dc80ebd7190bf99b99e9c43b8f66 04-Mar-2011 Makoto Onuki <omakoto@google.com> 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
om/android/email/provider/AttachmentProviderTests.java
om/android/emailcommon/utility/AttachmentUtilitiesTests.java
ab8caebec6e6b4398a02abe6cb1305c424bea734 04-Mar-2011 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Fix ANR: Run getPreviewIcon on bg thread" into honeycomb-mr1
d8bce7e73155dca734f45502e52c0039de4c9663 04-Mar-2011 Todd Kennedy <toddke@google.com> 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
om/android/emailcommon/internet/Rfc822OutputTests.java
7d513c791a9ceb36b0e0a8fdabeb4a962e11d576 04-Mar-2011 Todd Kennedy <toddke@google.com> Merge "Attach original HTML message on forward/reply"
ef2bc0b3e9f1fde01fe625906d0fa9b803a30471 03-Mar-2011 Makoto Onuki <omakoto@google.com> 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
om/android/emailcommon/utility/EmailAsyncTaskTests.java
ba125ab5ac747bb382dc8fe986dd8f0ed72ca596 03-Mar-2011 Makoto Onuki <omakoto@google.com> 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
om/android/emailcommon/utility/EmailAsyncTaskTests.java
9cc51b72c6902b95f65857af64eb38063aa4a42b 01-Mar-2011 Todd Kennedy <toddke@google.com> 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
om/android/emailcommon/internet/Rfc822OutputTests.java
7fd14be80447de15bd5360321fa80e34f60fa251 03-Mar-2011 Andy Stadler <stadler@google.com> 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
om/android/email/SecurityPolicyTests.java
45d50a1ccffff5dd256a139497ac900f0eb5276b 02-Mar-2011 Andy Stadler <stadler@google.com> Don't send ID command to *.secureserver.net

Fixes connection failures with GoDaddy IMAP.

Bug: 3497713
Change-Id: I327d9b24598d7dead2d1b74f4e37d1e5885822a6
om/android/email/mail/store/ImapStoreUnitTests.java
0d49ef78ebc1b0d65c31241f5b38f95397eebe34 01-Mar-2011 Todd Kennedy <toddke@google.com> 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.

Change-Id: I8888d6201e79136fa3420aa9d5f921772f374e56
om/android/email/provider/ProviderTestUtils.java
om/android/emailcommon/internet/Rfc822OutputTests.java
30793aa791bba6a24d38d3e098e67236b73e009f 01-Mar-2011 Andy Stadler <stadler@google.com> Merge "Add parent key to Mailbox schema"
3a58509b2ad7b6f946eb0a4a7b0f75ece6d6a46f 01-Mar-2011 Andy Stadler <stadler@google.com> Add parent key to Mailbox schema

Bug: 2028418
Change-Id: I79d48befe7754692a3cab6c8851105bb399431f5
om/android/email/provider/ProviderTestUtils.java
bdf1a7eb6ec7d6008d353fb110b11f895ce91dac 01-Mar-2011 Todd Kennedy <toddke@google.com> Fix unit test build

Change-Id: I8fcb16d4b10214668daac73a7cb9e274b07c154c
om/android/email/service/EmailBroadcastProcessorServiceTests.java
fe68c0e7c2672e09076038b36ad24f095633d313 17-Feb-2011 Todd Kennedy <toddke@google.com> Use HostAuth to determine settings changes

There were two TODO's from a prior CL where deprecated HostAuth methods
were removed.

1. Do not use a generated URI to determine if account settings have changed.
Instead, use the HostAuth structure for this purpose.
2. The account key in the HostAuth structure has been deprecated. Remove as
much of it as possible (until the schema of the host auth database changes,
we must still refer to it when adding rows).

In the process, HostAuth tests were broken out into a separate unit test
file.

Change-Id: I4075da09af168f734db7b20a9ef63d4178ac2064
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/emailcommon/provider/HostAuthTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
dc78a769fce18d259eccc602c4623fa74cdf5319 14-Feb-2011 Marc Blank <mblank@google.com> Email split, part dix

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

Bug: 3442973
Change-Id: I775600252fd121f474d51cb26fefbfcc50e387af
om/android/exchange/CalendarSyncEnablerTest.java
om/android/exchange/EasOutboxServiceTests.java
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/ExchangeServiceAccountTests.java
om/android/exchange/ExchangeServiceTest.java
om/android/exchange/TagsTests.java
om/android/exchange/adapter/CalendarSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/FolderSyncParserTests.java
om/android/exchange/adapter/ProvisionParserTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
om/android/exchange/provider/MockProvider.java
om/android/exchange/provider/MockProviderTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
om/android/exchange/utility/SimpleIcsWriterTests.java
fc4006b2760aadc98e87a09472b717dcd966db42 24-Feb-2011 Makoto Onuki <omakoto@google.com> Widget: Use unread count for inbox views.

Bug 3431240

Change-Id: I61a91462cdd864604f5ddc06ff93c0ecf3001e20
om/android/email/widget/WidgetViewTests.java
fc8a65aecf4db7185a406f320ac9c7efbda7be1b 24-Feb-2011 Makoto Onuki <omakoto@google.com> Merge "Refactoring widget part 2"
ffe6ef342a6d9ea958aaee11b57db54e52252dde 23-Feb-2011 Todd Kennedy <toddke@google.com> fix UnsupportedOperationException in tests

We're using the mock context to prevent modifying the real databases. However,
we need the real context to create intents. Use the real context in the few
places we must use it.

Change-Id: Icb8d289239218921c0b4b5c93ac7983830d90394
om/android/email/service/AttachmentDownloadServiceTests.java
897a0ea81c8cddcb142d6ac7f7c47801858c8537 09-Feb-2011 Makoto Onuki <omakoto@google.com> Refactoring widget part 2

- Extracted the loader
- Extracted ViewType and introduced WidgetView.
WidgetView is ViewType + mutable fields, such as account id.
WidgetView now owns the method to switch views.

These two are basically in preparation to address the message count bug.
(we're showing total message count where it should be the unread count,
which is a bit tricky because it'll require two different queries.)

- Also simplified the threading model in EmailWidget to fix potential
theading issues. (now (almost) everything works on the UI thread)

Bug 3431240

Change-Id: I9f8a268210995f1135baabe88b49b274272708d4
om/android/email/provider/ProviderTestUtils.java
om/android/email/widget/EmailWidgetTests.java
om/android/email/widget/WidgetViewTests.java
8c89674b64f6669fa94bf593abad0f1e2255a812 22-Feb-2011 Todd Kennedy <toddke@google.com> Always set a delete policy for legacy accounts

The delete policy can only be set for POP3 accounts. However, the delete policy
is used for all legacy accounts (that includes IMAP). As such, we need to make
sure IMAP accounts also have their policy set; even though the setting is not
configurable by the user.

The delete policy does not mean anything for Exchange accounts, so, we do not
need to modify the account setup code for them.

bug 3074164

Change-Id: Iab10d2997404b3b0c10a60a64fb652540c0d2d1a
om/android/email/service/EmailBroadcastProcessorServiceTests.java
040ddf60cfef4aaecf4bfe1f897fce3248d777a4 04-Feb-2011 Todd Kennedy <toddke@google.com> Resolve build warnings; part 5

Remove dependence upon URIs for creating the host auth structure

Change-Id: I92dee36fa329a8976b76bbd4991ed3469c6475f2
om/android/email/activity/setup/AccountSettingsXLTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/provider/ProviderTests.java
c0195ab9027a725753bd10b812073d21842bad60 15-Feb-2011 Todd Kennedy <toddke@google.com> Update expected value for unit test

There were extra parens in the SELECT sql command. These have been
removed from production code, so, the test needs to be updated as
well.

bug 3456577

Change-Id: I7fcfd326c17fd732ecfd3cd77f6e583106afa287
om/android/emailcommon/utility/UtilityMediumTests.java
3a5c1fb274a9ce72d708d88509bf2607cb018ddd 13-Feb-2011 Marc Blank <mblank@google.com> Email split, part neuf: Setup, logging, attachment glue

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

Bug: 3442973
Change-Id: I9162cf5fa6b5a043ded0fdd1e25fd3ce5948ad8f
om/android/email/AccountTestCase.java
om/android/email/service/AttachmentDownloadServiceTests.java
om/android/email/service/MailServiceTests.java
om/android/emailcommon/DeviceTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
om/android/exchange/CalendarSyncEnablerTest.java
om/android/exchange/ExchangeServiceTest.java
31d9acbf0623872f9d4a2b3210b5970854b654c7 12-Feb-2011 Marc Blank <mblank@google.com> Email split, part huit: Refactor constants, clean emailcommon

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

Bug: 3442973

Change-Id: Ic5e3abaa2a1b36999e0b6653c6c2134ea1bd544f
om/android/email/AccountBackupRestoreTests.java
om/android/email/AccountTestCase.java
om/android/email/AccountUnitTests.java
om/android/email/ControllerProviderOpsTests.java
om/android/email/DBTestHelper.java
om/android/email/LegacyConversionsTests.java
om/android/email/RefreshManagerTest.java
om/android/email/SecurityPolicyTests.java
om/android/email/SingleRunningTaskTest.java
om/android/email/TestUtils.java
om/android/email/UtilityLargeTest.java
om/android/email/UtilityMediumTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/MailboxesAdapterTest.java
om/android/email/activity/MessageComposeTests.java
om/android/email/activity/MessageOrderManagerTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/store/imap/ImapResponseParserTest.java
om/android/email/mail/store/imap/ImapStringTest.java
om/android/email/mail/store/imap/ImapTestUtils.java
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ContentCacheTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/email/service/MailServiceTests.java
om/android/email/widget/EmailWidgetTests.java
om/android/emailcommon/internet/MimeMessageTest.java
om/android/emailcommon/internet/Rfc822OutputTests.java
om/android/emailcommon/utility/UtilityMediumTests.java
om/android/emailcommon/utility/UtilityUnitTests.java
om/android/exchange/CalendarSyncEnablerTest.java
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
om/android/exchange/utility/SimpleIcsWriterTests.java
32311cce0153fbb2708d871626a0797cc93b7e4e 10-Feb-2011 Todd Kennedy <toddke@google.com> Implement IMAP prefix support

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

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

bug 1592696

Change-Id: I6b94c7aaac538f6cd9dc4694b0f1634e8c956bc1
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
a7bc0319a75184ad706bb35c049af107ac3688e6 10-Feb-2011 Marc Blank <mblank@google.com> Email split, part six: EmailContent

* Moved EmailContent to emailcommon

Change-Id: Ib3db1bfcfe74554c0e5afd3cfce6d72f26e9aeb9
om/android/email/AccountBackupRestoreTests.java
om/android/email/AccountTestCase.java
om/android/email/ControllerProviderOpsTests.java
om/android/email/DBTestHelper.java
om/android/email/LegacyConversionsTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/NotificationControllerTest.java
om/android/email/RefreshManagerTest.java
om/android/email/SecurityPolicyTests.java
om/android/email/UtilityLargeTest.java
om/android/email/UtilityMediumTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/email/activity/AccountsAdapterTest.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MailboxesAdapterTest.java
om/android/email/activity/MessageComposeTests.java
om/android/email/activity/MessageFileViewTest.java
om/android/email/activity/MessageOrderManagerTest.java
om/android/email/activity/setup/AccountSettingsXLTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ContentCacheTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/email/service/AttachmentDownloadServiceTests.java
om/android/email/service/MailServiceTests.java
om/android/email/widget/EmailWidgetTests.java
om/android/emailcommon/mail/MessageTestUtils.java
om/android/exchange/EasOutboxServiceTests.java
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/ExchangeServiceAccountTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/FolderSyncParserTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
2193962ca2b3157e79f731736afa2a0c972e778a 10-Feb-2011 Marc Blank <mblank@google.com> Email split, part quatre: Move along, nothing to see here

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

Change-Id: I4e12455ba057a4a8054fdbd0b578c73afa411c8a
om/android/email/LegacyConversionsTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/RefreshManagerTest.java
om/android/email/SnippetTests.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MessageComposeTests.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/FlagTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/MockFolder.java
om/android/email/mail/PackedStringTests.java
om/android/email/mail/StoreTests.java
om/android/email/mail/internet/MimeBodyPartTest.java
om/android/email/mail/internet/MimeHeaderUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/store/imap/ImapResponseParserTest.java
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ProviderTests.java
om/android/emailcommon/internet/MimeBodyPartTest.java
om/android/emailcommon/internet/MimeHeaderUnitTests.java
om/android/emailcommon/internet/MimeMessageTest.java
om/android/emailcommon/internet/MimeUtilityTest.java
om/android/emailcommon/mail/AddressUnitTests.java
om/android/emailcommon/mail/FlagTests.java
om/android/emailcommon/mail/MessageTestUtils.java
om/android/emailcommon/mail/MockFolder.java
om/android/emailcommon/mail/PackedStringTests.java
om/android/emailcommon/mail/SnippetTests.java
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
8a574694606f0e5d781334d0d426fc379c51f3ed 09-Feb-2011 Marc Blank <mblank@google.com> Email split, part trois: AccountService

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

Bug: 3442973
Change-Id: I89dce28b799b193243c07774dab65d830ae62775
om/android/email/DBTestHelper.java
om/android/email/LegacyConversionsTests.java
om/android/email/UtilityUnitTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/provider/AttachmentProviderTests.java
9ba506c4dd498150555f6c59aa758f7467bf9236 09-Feb-2011 Marc Blank <mblank@google.com> Email split, part deux: PolicyService

* Split PolicySet from SecurityPolicy and move to emailcommon
* Define PolicyService that sync adapter services can use to
interact with the Email DPM administrator
* Implement PolicyServiceProxy for exchange
* Implement PolicyService in email
* Modify imports, references, etc. as required

Bug: 3442973

Change-Id: I92015e21f780a68754b318da89fbb33570f334a2
om/android/email/SecurityPolicyTests.java
om/android/exchange/adapter/ProvisionParserTests.java
0d4fc55861ed4393aa82f124f2865695ef564641 09-Feb-2011 Marc Blank <mblank@google.com> Email split, part one: EmailService

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

Bug: 3442973

Change-Id: Ic7d2115363cdff6ebb86c46650b0a5b2109b1c72
om/android/email/service/AttachmentDownloadServiceTests.java
34e487594da7c63e1e6a98bdf2f13f423d18848e 09-Feb-2011 Todd Kennedy <toddke@google.com> Remove unused import for Log class

Change-Id: I5edb48c11bde8d0785dd6e1857a04949ea122a46
om/android/email/activity/MessageOrderManagerTest.java
8cc2fc51014d1acaf4d3a2a89fed1cff6ad7b18a 08-Feb-2011 Todd Kennedy <toddke@google.com> Merge "Fix attachment mime type unit tests"
314a51cb1d5bc538f069b6b13d8dffd575a5cc44 08-Feb-2011 Makoto Onuki <omakoto@google.com> Refactoring widget

- Moved to com.android.email.widget
- Extracted nested classes to top-level classes
- Some small clean-ups.
- WidgetProvider and WidgetProvider$WidgetService are left in the original
package to keep compatibility with honeycomb (3.0) release.

This CL is supposed to be pure-refactoring. There should be no
functionality changes.

Change-Id: I37acaa24b6b488724750c0f33374b31fcc433f11
om/android/email/provider/WidgetProviderTests.java
om/android/email/widget/EmailWidgetTests.java
8586532f3ecb4dad4f25d82ad7d6ce345ced9bf1 08-Feb-2011 Todd Kennedy <toddke@google.com> Fix attachment mime type unit tests

Attachments with no extension and mime type of text/plain need to return the
mime type of "text/plain" instead of "application/octet-stream"

bug 3428076

Change-Id: I00452c908ac0672879d42f4ed9ee574e376eac9f
om/android/email/provider/AttachmentProviderTests.java
6e4df4de7ab75a8d6e00b2afbf1fc3ac8d1d4e41 08-Feb-2011 Todd Kennedy <toddke@google.com> Merge "Fix mailbox adapter & message order manager unit tests"
bddc4e87ef57b2d05e9d0e2bc8dc3e4c8427ae27 08-Feb-2011 Todd Kennedy <toddke@google.com> Fix mailbox adapter & message order manager unit tests

* the new mailbox queries will only catch message that are
"loaded"; by default, messages were created "unloaded", so,
the query was returning 0 results

* extra parens were removed from the query string; the text
needed to be updated to not check for the extra parens

bug 3428077

Change-Id: Iea5867e741b9673985ca020aa3a8425c061324bf
om/android/email/activity/MailboxesAdapterTest.java
om/android/email/activity/MessageOrderManagerTest.java
43a85091e90bb7598bdc2bdb6874b9ea7b2bd11b 07-Feb-2011 Todd Kennedy <toddke@google.com> Fix inbox query unit tests

The new query will only select attachments if their associated message is in
the loaded state. The unit tests need to add the messages to the loaded state.

bug 3428076

Change-Id: Ib4ad8b2570a2cdc042b932b10dbaa3170ab825cd
om/android/email/provider/AttachmentProviderTests.java
7d51b7a05ba07377e3df0b07c2aaa430a8b5bc42 06-Feb-2011 Andy Stadler <stadler@google.com> Remove all compatibility with pre-2.0 data

* Remove LocalStore (pre-2.0 mail database) and its unit test
* Remove UpgradeAccounts (converted pre-2.0 accounts to Provider)
* Remove FolderMessageList (receiver for pre-1.6 desktop shortcuts)
* Remove "upgrading" paths through LegacyConversions
* Clip out dangling references to everything above

Bug: 3292310
Change-Id: I5654d55a0879b00b05b63055b94651855a8ee3ef
om/android/email/LegacyConversionsTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/provider/AttachmentProviderTests.java
5e39f90e9d4665713eba38586b08546f1d581adb 02-Feb-2011 Todd Kennedy <toddke@google.com> Resolve build warnings; part 4

Fix unchecked warnings

Change-Id: I872740fca4e5050e6ed2922eabc7e46e5e97ff3c
om/android/email/AccountTestCase.java
8546e21e1e127845071c595beda16fc23eb0f58e 02-Feb-2011 Todd Kennedy <toddke@google.com> Resolve build warnings; part 2

Change-Id: I76c1a5a4f759071f92eef0574abb20a99bfb32b7
om/android/email/mail/transport/Rfc822OutputTests.java
3aee641aab491a3da53364aafb9074ae69dd2212 26-Jan-2011 Jesse Wilson <jessewilson@google.com> Use a field rather than a superclass for ContentCache's cache.

This makes it easier for cache experiments to swap out the
LinkedHashMap for another cache.

http://b/3184897
Change-Id: Iacdb266e41f5a98efd9bb30bc09ff8fff5a0a5a9
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/provider/ContentCacheTests.java
978e75ee90c621ab965e592bc7c4b562bae08502 01-Feb-2011 Makoto Onuki <omakoto@google.com> Merge "Message details: Show only one address per line"
812c43295c8b478b2be8a31871483905c635f402 01-Feb-2011 Makoto Onuki <omakoto@google.com> Merge "Unit test for change Ieec04881 (make sure CC is visible)"
f33420e68f75c93ac8aa3c645c771c877c0b0b7c 31-Jan-2011 Makoto Onuki <omakoto@google.com> Message details: Show only one address per line

Also removed unused field from MessageViewMessageDetailsDialog

Bug 3372971

Change-Id: I8a6d87d006793c0099b380634217624bf9002ead
om/android/email/mail/AddressUnitTests.java
7c1fa2c16195098453b3f3bd9c44a1f7a058e356 01-Feb-2011 Makoto Onuki <omakoto@google.com> Unit test for change Ieec04881 (make sure CC is visible)

Change-Id: Ic6ffbddf80dcbfe39e55d9b579316767a0ff1180
om/android/email/TestUtils.java
om/android/email/activity/MessageComposeTests.java
11070a53970116a8216b8d83694041fe09560b91 01-Feb-2011 Andy Stadler <stadler@google.com> am 275b89d9: am 927dbc7c: Don\'t send IMAP ID unless server supports it

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

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

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

Change-Id: I495f80949f9f811470853a1f2f8e506d8236d8cf
om/android/email/mail/store/ImapStoreUnitTests.java
0e3a03317b1aebd168fb1bf41b3656e7dc6a1c89 30-Jan-2011 Andy Stadler <stadler@google.com> Widget: Max out message count at 999+

Bug 3403158

Change-Id: I1daf0c62684bad83a69e19c39ffe1b8df899d077
om/android/email/UtilityUnitTests.java
199a0601aef47fed41ee05e2bcf414fc1001ab2a 27-Jan-2011 Makoto Onuki <omakoto@google.com> Merge "Fix bug where mailbox list won't update in combined view" into honeycomb
ed9938cd9caf4937eadb3e35333e2fe2b157bde5 26-Jan-2011 Marc Blank <mblank@google.com> Protect against threading issues in AttachmentDownloadService

Bug: 3391148
Change-Id: I513b5678815db262ea5660661336432f1e203c9e
om/android/email/service/AttachmentDownloadServiceTests.java
d0ee1e404db67a238d7017fb77757a0ffb2a4a1b 26-Jan-2011 Makoto Onuki <omakoto@google.com> Fix bug where mailbox list won't update in combined view

The problem was that CombinedMailboxesLoader used the cursor returned by
super.loadInBackground() (which contains accounts), to build a matrix
cursor (which contains special mailboxes and accounts and will be returned),
and *it closed the first cursor* after building the matrix cursor.

However, because this first cursor is the one that CursorLoader sets an
observer, it shouldn't be closed until the returned matix cursor closes.
In other words the two cursors should have the same lifecycle.

Fixed it by using ClosingMatrixCursor that used by AccountsLoader, which
is doing a similar thing, but properly.

Bug 3387730

Change-Id: I554ade001dc25afa869eefb4dcf9887495e6753e
om/android/email/activity/MailboxesAdapterTest.java
adbd22c9bed1e45e26130f32a684aa29676537dc 25-Jan-2011 Todd Kennedy <toddke@google.com> Merge "Infer attachment's mime type if it's text/plain" into honeycomb
b3740d227ee0eede878d97654d180f781d591da0 25-Jan-2011 Todd Kennedy <toddke@google.com> Merge "Only show loaded messages in widget" into honeycomb
34212cc7df317a058a3f9860fc0e7de508cb7120 25-Jan-2011 Todd Kennedy <toddke@google.com> Infer attachment's mime type if it's text/plain

If the server reports an attachment's mime type as either text/plain or
application/octet-stream, we will try to infer the real mime type using
the attachment's extension. If one cannot be found, we either synthesize
it (if original mime type is application-octet-stream), or, we use the
server specified mime type (if the original is text/plain).

bug 3379416

Change-Id: I331e767ed36e4e17756025cc816bdb7b5a8f0868
om/android/email/provider/AttachmentProviderTests.java
543953ad87a12d251fcec82c57d00383225b4149 24-Jan-2011 Todd Kennedy <toddke@google.com> Only show loaded messages in widget

The various selection strings were missing a test to only show messages that
have been loaded. This is only important for POP3 accounts.

bug 3377041

Change-Id: I3efe366d09dd547878dc0bf57dff58f76de5cca9
om/android/email/provider/ProviderTests.java
om/android/email/provider/WidgetProviderTests.java
9128217da1f8ae53f1c44f369934ff075ae5057b 25-Jan-2011 Andy Stadler <stadler@google.com> Merge forward small bug found in password storage

While fixing bug 2981433 in Gingerbread, I discovered one additional
place where passwords were being trimmed. This brings the fix forward
into honeycomb, as well as a new unit test for the fix.

Bug: 2981433
Change-Id: I566f5c0c6693ca7c0069bca9e74f320fca48e600
om/android/email/provider/ProviderTests.java
751e4b2d9509b63bcdd3c8780afa82b67b99d7d4 21-Jan-2011 Todd Kennedy <toddke@google.com> Prevent auto-download of attachments not in an inbox

When creating the list of attachments to be automatically downloaded in the
background, exclude any attachments that are not in an inbox. Also added unit
tests to ensure the query URIs behave as expected.

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

bug 3373982

Change-Id: I13ef56cd280c028fa966ab9e655acce28b0b9b91
om/android/email/provider/AttachmentProviderTests.java
5150d0e818174453656069eeb4f282b6293b0abc 24-Jan-2011 Marc Blank <mblank@google.com> Merge "Don't require sSyncLock for sync error map" into honeycomb
2fabab32b90a7a01b72ec69cee48192bd880aab0 22-Jan-2011 Marc Blank <mblank@google.com> Don't require sSyncLock for sync error map

* Use ConcurrentHashMap; check that this provides enough protection
for all uses
* This resolves known deadlock issues in ExchangeService

Bug: 3371039

Change-Id: Ie4ccbe7cdfe8c3d4ec7a0f789409126c8c09f8c4
om/android/exchange/ExchangeServiceAccountTests.java
6833fd5ab6c1e23c0bf2005dec2950796a040781 21-Jan-2011 Makoto Onuki <omakoto@google.com> AttachmentProvider: Always return mime-types in lowercase

Intent-filter's mime-type matching is case-sensitive. We should always use
lowercase letters.

Bug 3375709

Change-Id: Idd4abb41f94c816a5b9150aef5859dd75487a042
om/android/email/provider/AttachmentProviderTests.java
7093746dd5017b1dacb726eb7b083922de15612e 21-Jan-2011 Makoto Onuki <omakoto@google.com> Don't modify content URI to non-email providers

The "?limit=" param is only supported by EmailProvider, so don't add
it to other URIs.

Doing so causes a permission error when opening an EML attachment on gmail,
because we're granted the permission only to the passed URI, but not to
the URI with the "?limit=" param.

Bug 3371630

Change-Id: I88fff88a7e48e5bc958124eedec3e592978a40c7
om/android/email/UtilityMediumTests.java
om/android/email/activity/ContactStatusLoaderTest.java
6c9911e3fbea6b975ecbd276c879e150efc29a8a 20-Jan-2011 Marc Blank <mblank@google.com> Merge "Strip content of the "head" tag" into honeycomb
9dc8ba5cad18e38be4cb525defed7c4a9c161121 20-Jan-2011 Marc Blank <mblank@google.com> Strip content of the "head" tag

Bug: 3285281
Change-Id: I1183697ad09fbf8740e3529fecfa59cf6650b2f9
om/android/email/SnippetTests.java
02ba344cf2489dba81058e25e3202f2898360083 20-Jan-2011 Todd Kennedy <toddke@google.com> Only show messages from inbox for account & unread views

Use a sub-selection to limit the messages from the inbox. Also add a unit
test to ensure the selections are working correctly.

bug 3368613

Change-Id: Ia24ef6028ded27c69f982ecbc6b67f35f84d1b6d
om/android/email/provider/WidgetProviderTests.java
be6910e7a40b4bffb7e917ffa89c539733545548 19-Jan-2011 Andy Stadler <stadler@google.com> Merge "Properly handle unsupported encryption policy" into honeycomb
a0d080558ff06f88f000cf424803c8241dd8d2eb 19-Jan-2011 Andy Stadler <stadler@google.com> Properly handle unsupported encryption policy

* This fixes the case of:
* a device that does *not* support device encryption
* connecting to an account that *does* require device encryption
* but also supports "non-provisioned devices" (making the encryption
requirement optional.)
* Added unit test

Bug: 3367191
Change-Id: I894e68c4119a102dad02d2e0815fccdae1e87189
om/android/email/SecurityPolicyTests.java
3db3e4b795c08122d1c9d4fc105150231795448b 19-Jan-2011 Todd Kennedy <toddke@google.com> widget combined inbox view only shows messages in inbox

instead of showing all messages (e.g. messages in drafts, etc...) the "combined
inbox" view now only messages in the inbox folder. This is now identical to
the "combined inbox" view available in the full email UI.

bug 3368613

Change-Id: I0080b56cd2718a3dce82b279277c63c4f43e86dc
om/android/email/provider/WidgetProviderTests.java
0324017aa0a02b6b8381da00eaeb4a78879bb034 19-Jan-2011 Marc Blank <mblank@google.com> Fix another case of HTML leakage in snippets

* Add test for this case

Bug: 3285281
Change-Id: If45d33624ac5dbd16d28b45428be29e5a8c51046
om/android/email/SnippetTests.java
946239e8a0e01c628fae61894d3d48248b74cefc 18-Jan-2011 Andy Stadler <stadler@google.com> Add per-account preference for bkgnd attachments

* Add flag to Account record
* Add checkbox to Account Settings (IMAP & EAS)
* Add checkbox to Account Setup (IMAP & EAS)
* Add flag to backup/restore logic
* Update Account & AccountSetupOptions unit tests

Bug: 3360873
Change-Id: I0c407776ede4110f33716644f6f027938f21130a
om/android/email/AccountUnitTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
c50b6f685ba26a38b8110f6ca0115b12f84d643c 14-Jan-2011 Makoto Onuki <omakoto@google.com> Use broadcast to detect system account update.

Instead of AccountsUpdatedListener.

Bug 3211657

Change-Id: I1e60092fc06fe80b9914ff7264c24fcbfa950745
om/android/email/SingleRunningTaskTest.java
om/android/email/service/MailServiceTests.java
ad8c6c2e60e8b00a9f503e45833776eaf6e963db 17-Jan-2011 Makoto Onuki <omakoto@google.com> Merge "Fix LocalStoreUnitTests" into honeycomb
36f208840852d5376485f880a92f018c47689568 14-Jan-2011 Makoto Onuki <omakoto@google.com> Fix LocalStoreUnitTests

The problem was that we tried to upgrade the db by re-creating a LocalStore,
without closing the existing connection. The db was still upgraded on the
filesystem, but the old connection kept looking at the old table definition
for whatever reason.

Also cleaned up checkAllTablesFound(). It now shows what columns are
missing when failed.

Bug 3349973

Change-Id: I80f4c67f1bd61cd5e1f12a632978b36a6e0a3b19
om/android/email/mail/store/LocalStoreUnitTests.java
31d263d38cf9cef2f38ee24031ff11c1e9964940 14-Jan-2011 Makoto Onuki <omakoto@google.com> Fix UtilityMediumTests

Bug 3353967

Change-Id: I7cdac5f6d4f3008c7ceaf9a8f0520524c9ea16f5
om/android/email/UtilityMediumTests.java
d072f9905d8572f454be1f2ea5d7ba173d2b57d1 13-Jan-2011 Makoto Onuki <omakoto@google.com> Don't show trashed messages in Starred mailbox

Also show the *total* starred message count (excluding trashed starred)
in the mailbox list, not *per-account* starred count.

Bug 3346872
Bug 2149412

Change-Id: I2274f215f994b62280ac6138982b927cec22c677
om/android/email/activity/MailboxesAdapterTest.java
om/android/email/provider/ProviderTests.java
4f721a162521cb4b418d53143a15a29a0ec969cc 13-Jan-2011 Andy Stadler <stadler@google.com> Merge "Add encryption to SecurityPolicy" into honeycomb
469f2987dc11d153434e50eb04dd6b83b924d09d 13-Jan-2011 Andy Stadler <stadler@google.com> Add encryption to SecurityPolicy

* Add encrypted-storage to uses-policies
* Add new field to PolicySet
* Add "false" to all constructor callers
* Add unit tests (including fixing some existing unit tests)
* Add new logic to AccountSecurity activity t0 dispatch both password
and encryption requests.

Bug: 3346641
Change-Id: I54f39bc9b6fbe21c033a05b36b83081e5c78a296
om/android/email/SecurityPolicyTests.java
ffdb8a7ea9f2bf46d7e6a611fdaf3ebf9dd95d6a 13-Jan-2011 Makoto Onuki <omakoto@google.com> Merge "Fix "load more messages"" into honeycomb
a796fbab0237c094aa943de68f85d201dd22503b 13-Jan-2011 Makoto Onuki <omakoto@google.com> Fix "load more messages"

Was simply broken.

Bug 3347062

Change-Id: Ic8d16be377ee5a9871f0019a0b008a4de2390f15
om/android/email/RefreshManagerTest.java
5a8be8e7ed4c1400e1d95c75faedc6d74c2e83f3 15-Dec-2010 Marc Blank <mblank@google.com> Properly handle style (and similar) tags in HTML snippets

Bug: 3285281
Change-Id: Ia45dbe39b47f1bcb647efbf1860ed4b933976df8
om/android/email/SnippetTests.java
9c0da8b84f2e52b38134719fcbf80c9d3c777970 12-Jan-2011 Makoto Onuki <omakoto@google.com> Don't show starred mailbox, if account has no starred

Bug 3334963

Change-Id: I751e56731b990a6e94b8547a577a84c1a848cbc7
om/android/email/provider/ProviderTests.java
86753bc41c3957b3bba49846f6603ed29f13c84e 11-Jan-2011 Andy Stadler <stadler@google.com> Update file type acceptance rules

* Open up all types for view/save rules
* Add anti-malware block list (based on extensions)
* Clean up code that shows/hides view & save buttons
* Redo handling of load/cancel 1sec timer
* Unit test for new little utility
* Allow larger items when on wifi

Bug: 3338984
Bug: 3334950
Bug: 3338988
Bug: 3340835

Change-Id: I991135636d507f2660e2860720dbed21bd1a955b
om/android/email/provider/AttachmentProviderTests.java
a826d3fb03f29a07ea12e44237b2c02ea1926c74 10-Jan-2011 Makoto Onuki <omakoto@google.com> Pixel perfect: Message view

Still waiting for a few missing assets, but it's done other than that.

The divider change is already merged; new layouts all use the framework style.

It's basically all layout changes, except for:
- Now the recepient address line has "Show details", which shows a dialog with
all to/cc/bcc addresses with the timestamp.
- Now invite response buttons are checkboxes.
(But the basic behavior doesn't change -- once you check a response,
the message will be gone, so you can't change the response later.)

Copied message_header_bg from gmail manuall. It'll look silly without it.

Bug 3138021
Bug 3307021

Change-Id: I6f7eb91d6104c3143a5c58b0c4c6c19929cea477
om/android/email/UtilityUnitTests.java
om/android/email/mail/AddressUnitTests.java
d9d120bfe4d43f967c809acacda7108f6b8e79c9 10-Jan-2011 Marc Blank <mblank@google.com> Merge "Fix issues w/ security-related account data deletion" into honeycomb
69af769688acc28a20cdbad046cea2565456801c 08-Jan-2011 Marc Blank <mblank@google.com> Fix issues w/ security-related account data deletion

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

Bug: 3245779
Bug: 3253952
Change-Id: Idc208ef5ed85808b085ebab9c26a428fb0451e34
om/android/email/ControllerProviderOpsTests.java
d6ce2998f7cfae510ccc2af72aa729aafc7a40ef 08-Jan-2011 Marc Blank <mblank@google.com> Merge "Fix widget view switching with > 1 account" into honeycomb
dc3f9f4d698267f8b2d44127d6c7bc8c1f450aba 07-Jan-2011 Marc Blank <mblank@google.com> Fix widget view switching with > 1 account

* Add test case for view switching

Bug: 3329906
Change-Id: I738bad118d7d7a8d2839fbd2a9fdc00af2af3153
om/android/email/provider/WidgetProviderTests.java
5faff6c76a1a231807c0039b5af006114618dbf3 06-Jan-2011 Todd Kennedy <toddke@google.com> Merge "Use new holo light icons" into honeycomb
64ac7a6cc81ef6dc84354153b978bd5db944e8b0 06-Jan-2011 Todd Kennedy <toddke@google.com> Use new holo light icons

Use the new icons where appropriate. This is not a complete change as there are
still some icons missing.

Change-Id: I51d1458749343ddfc6456dc2a9853b8bc2540e26
om/android/email/provider/AttachmentProviderTests.java
201a24f51e166f66f99c17da3356aa4fdb7fa54d 06-Jan-2011 Andy Stadler <stadler@google.com> Harden MailService against half-created accounts

* Add simple sanity checks to scanned accounts, skip over if bad
* Fix existing unit tests and add new unit test for this change
* Also fixed minor bug in EmailContent that was never triggered in
production code (only discovered it via a unit test).
* Also fixed minor bug in an existing unit test

Bug: 2937595
Change-Id: Id60bbb5d8bd923db043d46891c7f89d7debb0a11
om/android/email/service/MailServiceTests.java
f252d5d95e225a31f86d45b9f7d200dcd7eb5c16 05-Jan-2011 Andy Stadler <stadler@google.com> am 42749c91: am 1a791e67: Fix NPE when switching IMAP into TLS

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

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

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

Bug: 3315939
Change-Id: I51f838043e87750b5712a1bd2e4f9c821b58c808
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
99de346ed3dca94fdac167af12fcbaf309f8b2db 04-Jan-2011 Marc Blank <mblank@google.com> Merge "Handle query with an id of -1 more gracefully"
cbdd9f78b2605e87e45e4f6761b0a8c444a8cd4c 21-Dec-2010 Marc Blank <mblank@google.com> Distinguish mailbox requests that are user requested

Bug: 3251757
Change-Id: Ie417ebf44c8b740db88e5854077782930359a958
om/android/email/RefreshManagerTest.java
d306ba34387f3a7e77a4b8d98c6ac45cc14b95ad 30-Dec-2010 Marc Blank <mblank@google.com> Handle query with an id of -1 more gracefully

* In query of an otherwise valid URI with -1 as an id, simply return
an empty cursor
* Add unit test to verify proper handling of invalid uri's

Bug: 3183245
Bug: 3292080

Change-Id: Ia0c35cbd0f5dd0dc4a8fc794226399644cf1fe13
om/android/email/provider/ProviderTests.java
adbb6f8bc4df787a8e589d505b3f2e7d9c47cea4 23-Dec-2010 Makoto Onuki <omakoto@google.com> Log cursor/adapter class name and such when detecting a crash

Also log where the cursor was closed, if it is.

To investigate bug 3308465 and bug 3305706

Change-Id: I2b0fd9ea14757b6cf7597cd7162686d050d43fe9
om/android/email/UtilityUnitTests.java
2959a7e073c87e2fa5fab42ec543b352a91cf187 23-Dec-2010 Andy Stadler <stadler@google.com> Fix ANRs from Email.setServicesEnabled()

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

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

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

Bug: 3134653
Change-Id: Icc82998a5d8eb07c7ebc7edbd28cd9308378d866
om/android/email/ControllerProviderOpsTests.java
6ebaa90847e6e9c7624c18905971a003b2ee902b 23-Dec-2010 Andy Stadler <stadler@google.com> Reduce/eliminate UI thread access in MailService

* Make most calls to AccountBackupRestore return immediately w/o DB access
* Move most workers in MailService into async runnables
* Remove account restore / null check from ACTION_SEND_PENDING_EMAIL
* Strengthened unit test on Mailbox.findMailboxOfType() because after
removing the account check (above), sendPendingMessages depends on
findMailboxOfType() returning -1 on a missing account.
* Clean up a bunch of warnings (no longer use deprecated Config.LOGD)

Bug: 3133763 (and probably others)
Change-Id: Id39707bca7a8ebf5000f84d542013411ff0f422e
om/android/email/provider/ProviderTests.java
edb05ca5ee21a9f410416b427141be59be01f5d2 15-Dec-2010 Marc Blank <mblank@google.com> Harden AttachmentDownloadService; fix storage calculation

Bug: 3292720
Bug: 3286634

Change-Id: I378aac369ee8317c0c41b1f021a3731b81bcb380
om/android/email/service/AttachmentDownloadServiceTests.java
e3a17f1438e454518a58fc0841bb615344acf865 15-Dec-2010 Andy Stadler <stadler@google.com> Restrict download/display to "attachment" and "inline"

* Check content-disposition and restrict to these two types
* Add unit test
* Reformatting collectParts (code style cleanup)

Bug: 3242502
Change-Id: I5dcbdda5d4788502113771f4fd1b5fff834a402d
om/android/email/LegacyConversionsTests.java
9afd6bc59f23109849d5fdb5bd2c879fa0f55e13 14-Dec-2010 Makoto Onuki <omakoto@google.com> Merge "Fix unit tests"
c849936a36424645af73dc307b19778a89d6ee84 13-Dec-2010 Makoto Onuki <omakoto@google.com> Fix unit tests

- Now ProviderContextSetupHelper.getProviderContext() invalidates DB cache

* MailboxAccountLoaderTestCase
- Save hostauth properly
- (ProviderContextSetupHelper invalidates cache before each test)

Bug 3280911

* SmtpSenderUnitTests
- Use ProviderContextSetupHelper to create isolated context,
which now also invalidates DB cache

Bug 3280913

* MailboxFinderTest
- When kicking Controller.Result methods directly from tests,
call the raw callback, rather than the one wrapped with
ControllerResultUiThreadWrapper, to make it synchronous.

Bug 3280898

* MessageViewTest
- Disable testOpenMessage()
This test doesn't work because it sets up test data in an isolated
context but the activity/fragment don't see them because they
use the real context.
I have no idea why it worked before... Maybe because there were
accounts/mailbox/message with the same ID in the DB by chance.

Bug 3280905

Change-Id: I6beb08c58fff102e90bebd2c35f70820268b9e62
om/android/email/DBTestHelper.java
om/android/email/activity/MessageViewTest.java
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
04fb27841c47df838f71cf1fd9787263dec170b8 14-Dec-2010 Marc Blank <mblank@google.com> Merge "Fix unit tests"
75a873be8420e50f0aeb5a77716358ee0ca66b01 09-Dec-2010 Marc Blank <mblank@google.com> Implement prefetch of IMAP/EAS attachments

* Load attachments in the background for IMAP/EAS messages
* Download an attachment from account X if:
1) 25% of total storage free
2) Attachments for X use < 1/N of 25% of total storage, where N is
the number of AccountManager accounts
* Add accountKey to Attachment table for performance

Change-Id: I913aa710f34f48fcc4210ddf77393ab38323fe59
om/android/email/LegacyConversionsTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/service/AttachmentDownloadServiceTests.java
171b9cb1f5dfae73d271a163bca20fc4b418c1ad 14-Dec-2010 Marc Blank <mblank@google.com> Fix unit tests

Bug: 3280929
Bug: 3280926
Bug: 3280921
Change-Id: Id81baecf6f1f0c7fedd9d6d623f664f49861fb25
om/android/exchange/adapter/SyncAdapterTestCase.java
23d6d9cf24b47d8ba0742d02533db02a5061e863 13-Dec-2010 Makoto Onuki <omakoto@google.com> Merge "Controller.Result callbacks should all have accountId"
aef9515ee70f1f0b6cc4fa601078597b55831331 10-Dec-2010 Makoto Onuki <omakoto@google.com> Controller.Result callbacks should all have accountId

- Added accountId to loadAttachmentCallback/loadMessageForViewCallback

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

Change-Id: I46303e50df2b0e1fe8616e7c9cef632ac14f23aa
om/android/email/provider/ProviderTests.java
c1e8c95d053464e0821d45347704bd6c27e7e546 09-Dec-2010 Andy Stadler <stadler@android.com> Fix two errors reported by continous test

* Add "ForTest" to skip ProGuard stripping
* Remove an unused method

Change-Id: I2af04f39bfafc3b3abd433f158363e37d9daccdd
om/android/email/RefreshManagerTest.java
3a4b9e140e6649062117f32d850951bd928f0fd7 08-Dec-2010 Andy Stadler <stadler@android.com> Fix failing tests in AccountSetupExchange

A recent change was short-circuiting the logic that loads
the UI from the account. This fix simply resets the flag
so the test can reload the UI multiple times as it tests things.

Change-Id: I7cc53e2766b78172e5a7b05088e94fdec99ae0d6
om/android/email/activity/setup/AccountSetupExchangeTests.java
74e094834c6efd3260c717090a89232a892c411b 03-Dec-2010 Makoto Onuki <omakoto@google.com> New style for the new message notification

Bug 3176956

Change-Id: Id7418fb8bb942230266815167f0a2e79062a9116
om/android/email/DBTestHelper.java
om/android/email/NotificationControllerTest.java
3127277ad5833858a3b48398dbb282a07567116b 03-Dec-2010 Marc Blank <mblank@google.com> Merge "Never close underlying cursor if there are active users"
c159d32be05ee744f3726579d9cd8eed39545137 03-Dec-2010 Marc Blank <mblank@google.com> Never close underlying cursor if there are active users

Bug: 3249537
Bug: 3238216
Change-Id: I281f0b0d6319adaffd78fe8e4c3da6f126eb71da
om/android/email/provider/ContentCacheTests.java
9d5aaeacd6b222877f25924818317c9153708261 03-Dec-2010 Makoto Onuki <omakoto@google.com> Follow-up to Id18fb940. Tests, fix transaction.

Change-Id: If425db7d729e260102a9db82b98e14ff6f6be143
om/android/email/provider/ProviderTests.java
d3a9ab946caef4cdc8ef81f7fd8f445fdba3782f 02-Dec-2010 Andy Stadler <stadler@google.com> Leave empty inbox when clearing out account.

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

Bug: 3245274
Bug: 3245779
Change-Id: I74cc6d7859dad54961426b70ffe0541ce49e3b91
om/android/email/ControllerProviderOpsTests.java
1ca111c19c83d54ad23bd8615d9c648e09ec3366 01-Dec-2010 Andy Stadler <stadler@google.com> Add password expiration plumbing

* Set aggregated expiration values with DPM
* Fix min/max logic when aggregating, and fix unit test
* Add expiration tests when checking if policies are active
* Add expire-password to uses-policies set
* Handle password refresh (clear notifications and sec. holds)
* Handle password expiration (warning and/or wipe synced data)
* Unit tests for provider-level methods
* Refactor common security notification logic
* Placeholder notification strings (need final)

Bug: 3197935
Change-Id: Idf1975edd81dd7f55729156dc6b1002b7d09841f
om/android/email/SecurityPolicyTests.java
d1ee5b8fa5fe92df1ded5953a9e3f001b38a1ac7 30-Nov-2010 Makoto Onuki <omakoto@google.com> EML viewer: Set title, and show arrow next to the app icon

- Set "Viewing FILENAME" as title.
- Home icon now has "back" arrow. Closes the activity when clicked.

Bug 3221312

Change-Id: I689499e10704d3c5d206df4aa12e21db9687c4c5
om/android/email/DBTestHelper.java
om/android/email/RefreshManagerTest.java
om/android/email/UtilityLargeTest.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/activity/MessageFileViewTest.java
om/android/email/activity/MessageViewTest.java
om/android/email/data/MailboxAccountLoaderTestCase.java
a19e003242feb44df11ef057d2a3cf14517150e1 01-Dec-2010 Makoto Onuki <omakoto@google.com> Merge "Fix UtilityUnitTests.testSpecialIcons"
1832ea8c58e695d43e4f0564675611fba57560c4 01-Dec-2010 Marc Blank <mblank@google.com> Merge "Don't throw exception on moveToPosition in CachedCursor"
ed0d19e8870f394c31c88d1fdf4afa30caae96ae 01-Dec-2010 Makoto Onuki <omakoto@google.com> Fix UtilityUnitTests.testSpecialIcons

Now non-special mailboxes on mailbox list doesn't have an icon, so
getIcon(Mailbox.TYPE_MAIL) should return null.

Change-Id: I354551baa4027c8e90c499dafac72423343c9cee
om/android/email/UtilityUnitTests.java
68dc380d62b29b4b6733bc1b20e44b8931c1d341 30-Nov-2010 Marc Blank <mblank@google.com> Don't throw exception on moveToPosition in CachedCursor

* Just return false

Bug: 3240290
Change-Id: I808ca88c7897c573d19c2c2c92b179b4106a6dd3
om/android/email/provider/ContentCacheTests.java
e29189e3eeea9c629777b3deed6ea2be67caa737 30-Nov-2010 Andy Stadler <stadler@google.com> Cleanups to Controller & AttachmentProvider

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

Bug: 3197935
Change-Id: I79c6a03c21f18d37eeb8158cd1c2af0e0a6e9d2e
om/android/email/ControllerProviderOpsTests.java
om/android/email/provider/AttachmentProviderTests.java
08e1f2f782140f454a8ffda65424da1270096d8a 24-Nov-2010 Makoto Onuki <omakoto@google.com> Don't show account dropdown when there's only 1 account.

Bug 3225851

Change-Id: I7b411f8047e3b26cfe53f17c46c3e2611fb8ae9d
om/android/email/activity/AccountSelectorAdapterAccountsLoaderTest.java
5b81690de1ea15035ab0539df683acd8e28b0ebd 22-Nov-2010 Makoto Onuki <omakoto@google.com> Show color chips for combined view.

Show color chips for account rows and message items on the combined view.

Moved hard-coded color values to resource.

Bug 3138001

Change-Id: Ib93fb9d6e9592ebd0c297f83c3dee2358a80508f
om/android/email/EmailTest.java
om/android/email/ResourceHelperTest.java
cf3fb71bc6fd795c10dc1d7467292532c19041ae 16-Nov-2010 Marc Blank <mblank@google.com> Implement password expiration for EAS

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

Change-Id: I1037cde25fc2b24419f399446cfa0906dc0174d1
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/FolderSyncParserTests.java
349055aad47184b72cd86de1f37ac1b7557d2e70 17-Nov-2010 Marc Blank <mblank@google.com> Allow ProviderTests to work with ContentCache

Bug: 3204331
Change-Id: I5399345c2b759fb34d3dc7c694eb0eef8d7de493
om/android/email/provider/ProviderTests.java
2199c7ddf5d497e816bef1a1b7473098369a1bdf 17-Nov-2010 Andy Stadler <stadler@android.com> Minor cleanups for ContentCache

* Change CounterMap to not extend HashMap
* Renamed remove() to subtract()
* Comment out a failing test
* Add a flag that prevents any objects from being cached

Change-Id: I74754133b505178e8b0166390f69509f006a3da2
om/android/email/provider/ContentCacheTests.java
fab77f147f85766d2f75d8aece0aaa4ffb3838e8 28-Oct-2010 Marc Blank <mblank@google.com> EmailProvider content caching

* In this CL, we cache individual rows, based on the CONTENT_PROJECTION
defined for the most common queries (Account, HostAuth, Mailbox, and
Message)
* Queries on individual rows (most often Class.restoreClassById()) will
look to the cache first, rather than querying the database
* Queries on smaller projections will build MatrixCursor's from cached
data
* Write-through caching updates the cache with changed columns
* Experiments with live data indicate that > 95% of queries that are
cacheable (single row, no selection) can be retrieved from the cache,
thereby saving a great deal of disk access.
* Timing experiments show that cache hits are > 40x faster than cache
misses
* Unit tests for the various classes exist, with more coming

TODO
----
* More unit tests

Change-Id: I386a948a2f4cc02b6548d07d9b2fefd1e018a262
om/android/email/LegacyConversionsTests.java
om/android/email/provider/ContentCacheTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
2ac1eaf8c3f7122da7900f0ea5a1198264631d74 10-Nov-2010 Makoto Onuki <omakoto@google.com> Account selector rework.

- Show email address
- Show inbox unread message count

Initially I thought of using a join to get accounts with their unread
counts with one query, but there were enough subtle issues that I gave up
on the idea.

Instead it uses a MatrixCursor to build a completely new cursor,
based on a regular accounts cursor.

Change-Id: I09e8762f131cc2bd3637e1a3d302088a3b5b2479
om/android/email/provider/ProviderTests.java
77303a483b383afcdf3952e9614c97232163b230 10-Nov-2010 Makoto Onuki <omakoto@google.com> Merge "New message view command layout"
931ca67a1f1baa0c1fd115124e35183c7786fc63 09-Nov-2010 Makoto Onuki <omakoto@google.com> New message view command layout

UI Changes:
- "Move", "Delete" and "Mark as unread" became action bar commands.
- The message view bottom panel now only has "newer" and "older" buttons,
with the current position in the message list. (shown as POS of TOTAL)
- The buttom panel is now shown only on portrait

Non UI changes
- MessageOrderManager now keeps track of the current cursor position
as well as the total message count.

- Fixed the "move_action" string, which was wrongly marked as non-translatable.

Bug 3169454

Change-Id: I599543f9e11000a4ee283d31fbd407b2ab53ac44
om/android/email/activity/MessageOrderManagerTest.java
6f3d167cfa948d20153c2172c34cbede5ec83a1d 09-Nov-2010 Makoto Onuki <omakoto@google.com> Don't show non-incoming message in notification.

Filter out non-incoming messages using a subquery.
(because the message table doen't have the mailbox type.)

I was initially thinking of adding a new content URL for
the message table joined with the mailbox table, but it turned out
to be a bit of pain, so ended up using a subquery.
(one of the problems was that both tables had the "_id" field.)

Bug 3177220

Change-Id: I276efb70db1589835f3ddb8c7da4773e72d8691b
om/android/email/provider/ProviderTests.java
54ab7a27a3756a241ba06f0762969cf5a338bf60 05-Nov-2010 Andy Stadler <stadler@android.com> Fix NPE in pop3 checkcapabilities

* This happens if an open fails immediately (error message in the
initial banner) followed by a checkSettings.
* The fix is to harden checkSettings to force a clean connection
every time.

Bug: 2170147
Change-Id: If7403bf517477d2b03b21d71caab511fe45e234c
om/android/email/mail/store/Pop3StoreUnitTests.java
ba4e72a9474bcbe33a8001a1964a02cb41ea08bb 03-Nov-2010 Andy Stadler <stadler@android.com> Cleanup various IMAP/POP manual account setup defaults

These defaults affect manual setup only. There should be no changes
observed in automatic setup, and no changes observed in EAS setup.

* user $email instead of $user as default login
* guess "imap." or "pop3." for server name
* propagate the incoming server name to the outgoing server name, and
replace "imap.", "pop3." or "pop." with "smtp."

Also, fixed a couple of leftover places where we were trimming
passwords (and should not be, since some people insist on having
spaces in their passwords.)

Bug: 2978634
Change-Id: I9b0e345aa9550b5e1cc29aaa22109f03da61af20
om/android/email/activity/setup/AccountSettingsUtilsTests.java
730cc6724ae0fde63d6f11615338d2e01aef7e4b 26-Oct-2010 Makoto Onuki <omakoto@google.com> Add "Combined view".

- Don't show combined mailboxes with regular mailboxes in the mailbox list.
- Add "Combined view" to the account selector instead.
- "Combined view" has all the combined mailboxes and accounts.
- Renambed these combined boxes. (e.g. "Combined inbox" -> "Inbox")
- Regular account view still has "Starred" mailbox, but it's actually
"combined" and not per-account.
- Re-order special mailboxes per latest wireframe.

Bug 3138004

Change-Id: I4c5860c6774b10c55ba0ca599373e51105432cf8
om/android/email/activity/MailboxesAdapterTest.java
02d59d21949a77c60859b615312f02e6d8003490 25-Oct-2010 Marc Blank <mblank@google.com> Delete secured accounts if device admin is disabled

* Update unit test

Bug: 2817683
Change-Id: Ia7117c34e7bbba13ac4f2ff375d19b3ef94ef49c
om/android/email/SecurityPolicyTests.java
4a66884b74dab846c76cb284d10be1d7ac85971d 27-Oct-2010 Marc Blank <mblank@google.com> Merge "Use notifications for login failures"
d3e4f3ca7e43fb7ebaa140f93a44a1fb96a0577e 18-Oct-2010 Marc Blank <mblank@google.com> Use notifications for login failures

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

Bug: 2322253
Change-Id: I7ed6fa5599179870cbcdb14af062e956eff37ec5
om/android/exchange/ExchangeServiceAccountTests.java
be1aa37dc516a9c3dd4af65b11f92a5951f5c5c3 23-Oct-2010 Makoto Onuki <omakoto@google.com> Don't use sendMailCallback() -- don't track outbox status

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

Bug 3116377

Change-Id: Ic5ecf16251c11ab2bd2e16e29bd417f1ece67f14
om/android/email/RefreshManagerTest.java
8c3629c97802a7f403d47f9ed0f2cc5c108e5717 21-Oct-2010 Makoto Onuki <omakoto@google.com> Merge "Skip testCommaInserting if screen is off or locked."
e9919377ee02958da4f2d2dde3b65c93505b4343 18-Oct-2010 Makoto Onuki <omakoto@google.com> Skip testCommaInserting if screen is off or locked.

sendKey() doesn't work if the screen is off or locked.

We could probably use a WakeLock and KeyguardLock to force the
screen to be on, but that'd require adding unnecessary permissions
to the email app. (not the test apk)

Bug 1737038

Change-Id: Ic036dc4d12770e82bc5de1133d6dd34cd8465f30
om/android/email/TestUtils.java
om/android/email/activity/MessageComposeTests.java
a44c0349fa851df5c9138af2a18e3a3d5b556671 21-Oct-2010 Makoto Onuki <omakoto@google.com> Merge "Don't move drafts to trash"
77aabd951992057a543f1699150971bf1f2d4394 15-Oct-2010 Makoto Onuki <omakoto@google.com> Don't move drafts to trash

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

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

Bug 3099179

Change-Id: Ice5298bf94312ce764d90aa35c5a6c5262ec5b42
om/android/email/ControllerProviderOpsTests.java
eb4965942387619c1b44c751affda83c4a2401dc 17-Oct-2010 Marc Blank <mblank@google.com> Prevent MailService from spamming AccountManager during reconcile

* When any Account is modified, MailService gets a content notification and
runs reconciliation in an AsyncTask. Reconciliation ends up calling the
AccountManager, which also runs asynchronously. The net effect is that,
especially during unit tests, where we create/destroy accounts rapidly,
these calls can "back up", ending in a situation in which the worker pool
for AsyncTask is filled, with a resulting RejectedExecutionException
* We fix this by preventing more than one request for reconciliation to
be queued at a time
* Added a unit test that thrashes the notification handler

Bug: 2937628
Change-Id: Iaf25806efb46831f31704604360df091752d9525
om/android/email/service/MailServiceTests.java
6af171cae6bfa7da80576ebea69f504707e005b0 17-Oct-2010 Marc Blank <mblank@google.com> Fix errors in MockProvider unit tests

Change-Id: Ibfe6d72547f182332fddf82a842a131f920f5e7f
om/android/exchange/provider/MockProvider.java
7fdd88e37cdf778e25e5a0431a31e8126564cf06 15-Oct-2010 Makoto Onuki <omakoto@google.com> Merge "Put the dest mailbox name in the "message moved" toast"
ee7205d100eff01a75c292b80f41cd24a2b19b84 14-Oct-2010 Makoto Onuki <omakoto@google.com> Put the dest mailbox name in the "message moved" toast

Also removed obsolete todo

Bug 3075984

Change-Id: I10ce9df29c4913c328d2a962151d4a9f2e6e1408
om/android/email/UtilityMediumTests.java
om/android/email/provider/ProviderTests.java
9b5001a34c82ea59b57a790fc221eec3af89e254 13-Oct-2010 Makoto Onuki <omakoto@google.com> Don't use negative IDs with ListView

ListView uses the _id column for some operations, including
onSave/RestoreInstanceState, and if the column contains negative values
they don't work as expected. The same assumption seems to be in other places
as well, so let's just avoid using negative IDs.

With this CL we now use two different IDs, one for ListView, which will
never be negative, and the other for us, the actual mailbox ID.

Bug 3049315

Change-Id: I263b4895212b5f8bb80c98acaf5c4eccd0bfef55
om/android/email/activity/MailboxesAdapterTest.java
efcde27bf74acdd82bb0aad0ad1fd0b767ca5f18 14-Oct-2010 Andy Stadler <stadler@android.com> Use original all-day flag when upsyncing exceptions DO NOT MERGE

Bug: 3087410
Backport of: I4bed0039758e98d4b85054876f192605eb00ee82

Change-Id: Ibc875d58c2f6c5317ce8e4fee97b96c2fd6b2ecf
om/android/exchange/utility/CalendarUtilitiesTests.java
9ce8f4d2a3f6f842cd7ae6ffa70e420a14ea6162 13-Oct-2010 Marc Blank <mblank@google.com> Use original all-day flag when upsyncing exceptions

Bug: 3087410
Change-Id: I4bed0039758e98d4b85054876f192605eb00ee82
om/android/exchange/utility/CalendarUtilitiesTests.java
fde172f576adca4af0433a0d710368341a636e69 09-Oct-2010 Marc Blank <mblank@google.com> Fix CalendarSyncAdapterTests

Bug: 3077174
Change-Id: Ic0ba851969e852488a72241c8fba9f466c5bc3a6
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/provider/MockProvider.java
om/android/exchange/provider/MockProviderTests.java
02a750dd6478689612d2c49a552c229919bd9553 08-Oct-2010 Makoto Onuki <omakoto@google.com> Fix tests

Bug 3077014
Bug 2992255

Change-Id: I1e8127327158b0821177d0744a60132f89dccdd8
om/android/email/RefreshManagerTest.java
om/android/email/activity/ContactStatusLoaderTest.java
om/android/email/activity/MessageOrderManagerTest.java
fe6e3eae2a318f89634c82222acfdaac32ee6cf1 07-Oct-2010 Marc Blank <mblank@google.com> Fix MailService unit test

Bug: 2844726
Change-Id: I168b3db49bf422b33d05f25cfff1c7be15150c2b
om/android/email/service/MailServiceTests.java
feb8869c4f0681a6e202d8db8a77aa3c2ba4b667 06-Oct-2010 Makoto Onuki <omakoto@google.com> Remove unused method Utility.getIconIds()

And redirected the related tests to getIcon().

Bug 2894555

Change-Id: I1d90f01e7476ca79bddd644e123ad979d6ebe987
om/android/email/UtilityUnitTests.java
085f7eb1219f270faa8317a5c6069a562213cb83 02-Oct-2010 Makoto Onuki <omakoto@google.com> Extract the throttling part from ThrottlingCursorLoader

Extracted into the Throttle class as I'll need this logic elsewhere.

Bonus: Now it has tests.

Change-Id: Ie9a5933f8e5015dda6985ba76814f1f945266178
om/android/email/ThrottleTest.java
om/android/email/data/ThrottlingCursorLoaderTest.java
899c5b866192a4c4a12413446d10e5d98dbf94fa 27-Sep-2010 Makoto Onuki <omakoto@google.com> Switch to tablet style notification

- Now we show separate notification for each account
- New notification has sender photo, sender name, and subject
of the latest email
- Added the NotificationController class, which is intended to manage
all notifications besides "new message" eventually.

The framework doesn't seem to be 100% ready, and it's not clear how to
add the 3rd line in the expanded notification at this point. Need to
revisit it later to verify UI details.

Change-Id: I40193ee372cb6b2b7245c1588890f238b2469699
om/android/email/provider/ProviderTests.java
om/android/exchange/CalendarSyncEnablerTest.java
0efe738e05a31e0c1ebfba645bd2364a373a3f33 28-Sep-2010 Marc Blank <mblank@google.com> Add Uri for Message queries that include a LIMIT

* Use a query parameter (e.g. ?limit=2); LIMIT works with any
query

Change-Id: Idd106ab4b61aec237ac9676a201e797c4f65f15b
om/android/email/provider/ProviderTests.java
ac916da48e2a550815ac13445038528aa4011442 28-Sep-2010 Andy Stadler <stadler@android.com> Improve handling of content-disposition DO NOT MERGE

* Check array returned by split("=")
* Add unit tests for this case
* Also add unit tests for quoting removal

Bug: 3040796
Backport from: I170f3cd483fe35186194edeb0c3142fb0e2e9b75

Change-Id: I32ccbdbc7264a95a9cd279218cae390e65e82eeb
om/android/email/mail/internet/MimeUtilityTest.java
87fcd03a1b266d3f6030347143f242b1eb524cf8 28-Sep-2010 Andrew Stadler <stadler@android.com> Improve handling of content-disposition

* Check array returned by split("=")
* Add unit tests for this case
* Also add unit tests for quoting removal

Bug: 3040796
Change-Id: I170f3cd483fe35186194edeb0c3142fb0e2e9b75
om/android/email/mail/internet/MimeUtilityTest.java
02a0edb60d0a0dfeffd2bf09ed2ba51f34926ded 27-Sep-2010 Andy Stadler <stadler@android.com> Allow spaces in passwords DO NOT MERGE

* Separate/identical fixes for incoming, outgoing, exchange
* Unit tests
* Some protocols will fail anyway (e.g. POP3)

Bug: 2981433
Backport from: I82984e5912fc7fcb88e747815d0fe33cb36605e7

Change-Id: I49d5c13137e4f78b6fa0f9ce288c1a78ff028f88
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
fb4333b3a5051b08d3a255000bb1b8331e2a1d43 25-Sep-2010 Andrew Stadler <stadler@android.com> Allow spaces in passwords

* Separate/identical fixes for incoming, outgoing, exchange
* Unit tests
* Some protocols will fail anyway (e.g. POP3)

TODO: Some sort of warning (master only - won't backport that)
Bug: 2981433

Change-Id: I82984e5912fc7fcb88e747815d0fe33cb36605e7
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
d25d87c7ba8bbbbcad771695a7085f227bac8a1b 24-Sep-2010 Makoto Onuki <omakoto@google.com> Fix NPE with use of getFirstRowXxx

Make sure not to cast null into a primitive type.
(i.e. If null isn't expected as a return value, make sure to set a non-null
default value.)

Bug 3032143

Change-Id: I9a344d765c75a66f529ad8d99b00b2b919139f9c
om/android/email/provider/ProviderTests.java
224442906b6ce92e04d27f22b6afc18cf4506b07 25-Sep-2010 Marc Blank <mblank@google.com> Merge "Handle EAS type 1 folders (user-created)"
23f8d3be7dad09dca750c482ddb03c80780d896d 16-Sep-2010 Marc Blank <mblank@google.com> Handle EAS type 1 folders (user-created)

* If a type 1 folder has an mail folder as a parent (at any level),
it is also a mail folder (and therefore, we should have it in our
folder list)
* Before rejecting type 1 folders, look for parents and accept those
that are mail folders
* Add unit test to verify logic

Bug: 2978410
Change-Id: I44cda1d1c1fd7f3976af53a1672736201cc995ff
om/android/exchange/adapter/FolderSyncParserTests.java
4209ea36b0602d4f1dca0e9057e6a6b58d7d907d 22-Sep-2010 Makoto Onuki <omakoto@google.com> Make ThrottlingCursorLoader smarter

Now the class initially uses smaller timeout, and expand it when detecting
multiple changes in a short period.

This CL makes the UI look more responsive especially on the message list +
message view mode. e.g. Starring on the message view will quickly be
reflected to the message list.

Bug 3024799
Bug 3027832

Change-Id: Ie2d44c3769d43e3fd0f54ee526556eb3bad5e288
om/android/email/MockClock.java
om/android/email/data/ThrottlingCursorLoaderTest.java
0813c7051ff91e569c7100977502247d848283a1 22-Sep-2010 Andrew Stadler <stadler@android.com> resolved conflicts for merge of 0d9ed341 to master

Change-Id: I198f760ef1734cf4a64c875236a2352859dc1a72
16657c9c201089d480feff0e8938ffbde3ffddde 22-Sep-2010 Andy Stadler <stadler@android.com> Merge "Fix test failures" into gingerbread
6278dcdeafadc55fe1a57eec42a0807874377f62 22-Sep-2010 Andy Stadler <stadler@android.com> Fix test failures

Methods were used by tests only and being stripped by PG.

Bug: 2894378
Change-Id: Ieb1dd0daa8bd380c66a7b1e6151c5e5b22cbe38c
om/android/email/SecurityPolicyTests.java
om/android/exchange/adapter/ProvisionParserTests.java
d46952e7b0d47a4150d140502caf34e3a5276dd8 22-Sep-2010 Marc Blank <mblank@google.com> DO NOT MERGE: Test validity of port numbers in account setup

Bug: 1712475
Change-Id: Iced4875379a804b5072e4df0af25db7bf9473131
om/android/email/UtilityUnitTests.java
0be6c7c5cf53d53ecd43f3ea51885c485525ccfb 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Fix handling IOException in ImapStore" into gingerbread
32517753ea61b12b0971329f375fdd304d12d003 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Handle multiple IMAP SEARCH results." into gingerbread
75c6a611aa9a35a5d938ced3674e559bf47a1ddf 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Test for interaction between ImapStore and vendor policy." into gingerbread
7fbdc44c580aa146cec1b91d60bf38e0df641c12 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Extract MockVendorPolicy, add standard mechanism to inject it." into gingerbread
415b27fbd3ef02d8a71b99b5f2ec0922a22c00f1 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Follow-up to the new IMAP parser." into gingerbread
ef70c9872b90d0980260a9be020cbfcc286d405f 21-Sep-2010 Marc Blank <mblank@google.com> Merge "DO NOT MERGE: Send intro text with SmartForward" into gingerbread
9afbf947de36f07c6da704f83a0067993005c163 06-Jul-2010 Marc Blank <mblank@google.com> DO NOT MERGE: Send intro text with SmartForward

* We need to include the intro text (--Original Message--, etc.) to
SmartForwards, and somehow this got in a past updat
* Add unit test for forwarding
* Fix unit test for reply so that it works localized

Backport of I8d92f00d37a434840ec3eb237f3901cd5dc7ad09

Bug: 2477988
Bug: 2685784
Change-Id: I2b6654413a8eb5ca900f958f49ec9eee5161a365
om/android/email/mail/transport/Rfc822OutputTests.java
65124587840b840bc00ddb6d8670018a92644739 05-Jul-2010 Marc Blank <mblank@google.com> DO NOT MERGE: Make sure signature is added to reply/forward

* Add this to processSourceMessage in the reply/forward cases
* Add unit tests for reply and forward case

Backport of I6be8383fe5f217a4bda8e669cb69f439bc8e96b6

Bug: 2734321
Change-Id: Ia59e8c4e2f9663f2a10cff066eddeff80bc06cef
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageComposeTests.java
f255081a85bd1680c6a2d2b7225aa45cd104cb66 06-Aug-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Fix handling IOException in ImapStore

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

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

Bug 2898211

Backport of I8f9f45d91f596bb8da1a1575593e652d66deb643

Change-Id: I070458b5535540aba69ad7eee88bd2af8ad5f7b1
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
29f0638f4d12db2e42fce7b8a74495d6f368417e 11-Aug-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Handle multiple IMAP SEARCH results.

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

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

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

Bug 2911647

Backport of Ia50072944d5b01c1e59541c3a966067b13910cc4

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

Backport of I092b3a0f2f40d9aa19f2f61066362099c8b3f50b

Change-Id: I492f975e66d67aae62024804a294e796f23d2aad
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/imap/ImapTestUtils.java
618f1d8ac513f9cf3d12fb9d773bc457a8f7259b 11-Jun-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Extract MockVendorPolicy, add standard mechanism to inject it.

One thing that bothers me regarding the new ImapStore is that there is no
tests to verify if the way how getImapId() uses a vendor policy hasn't changed.
This part is hard to test with a real vendor policy, and it can easily be
overlooked even if it's broken.

This CL offers ImapStoreUnitTests a way to test the interaction between
getImapId() and a vendor policy.

Also fixed a bug in VendorPolicyLoaderTest where it assumed the test apk
package name is "com.android.email.tests", but it may actually be
"com.google.android.email.tests" now. (Broken since the test makefile
used inherit-package.)

Backport of I8feb616ea28cb5cae5b4fba57e363771014ac599

Change-Id: I59536bc9a0e5c09c23eab21cdfb2f8283ef01a42
om/android/email/MockVendorPolicy.java
om/android/email/VendorPolicyLoaderTest.java
57ab324a115352bff019ec4c74520a1b5116c1b9 29-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Follow-up to the new IMAP parser.

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

Backport of I88424357227bcf78528df5e6a1c4ba45d54cc65b

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

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

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

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

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

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

Backport of I7116f57fba079b8a5ef8d5439a9b3d9a9af8e6ed

Change-Id: I38b6da7b82110181dc78a2c63c6837c57afa81ae
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/imap/ImapElementTest.java
om/android/email/mail/store/imap/ImapListTest.java
om/android/email/mail/store/imap/ImapResponseParserTest.java
om/android/email/mail/store/imap/ImapResponseTest.java
om/android/email/mail/store/imap/ImapStringTest.java
om/android/email/mail/store/imap/ImapTestUtils.java
9d1b9fc78494adba2c2cd58faa69c234a6efd408 21-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Two new tests for the bottom half of ImapFolder.append().

They cover the cases:
- when OK response doesn't have APPENDUID.
- when APPEND fails.

Backport of I13a0fb8aaf2e1cbb5a1f055c9ce56e2891373ea0

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

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

Backport of I48e5b89049338f7d4f1ac77cd7ac7243945a9575

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

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

Backport of I04b1de6bc384cffb7a5286bcec0a349a3d62a623

Change-Id: I227ecbf5bd68c999ba0ab8cd50ef798ef4ef35e4
om/android/email/mail/store/ImapStoreUnitTests.java
a599ee773d3bb6350ca775db717123faffbdbfe3 18-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Tests for IMAP FETCH

Adding regression test for the new IMAP parser.

Backport of Iac7f5c022e44ca5f06f735e145af15cc459eb61f

Change-Id: Ic84172b6793a9837c2fc4a894fee141da3d19f1d
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
18d331898f77e15ce8587e6f04cc91a7742ed61a 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Relax MIME date parser." into gingerbread
090489b3953ff824cee812bae1114ba7ff7b30ca 21-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "DO NOT MERGE: Fix flaky tests" into gingerbread
be2ef97220619a3acf6c3dd4eb4b8add26ff452a 21-Sep-2010 Andy Stadler <stadler@android.com> DO NOT MERGE Send local IP address with EHLO instead of "localhost".

Bug 1515345

Backport of: I181c9f0d79fbdf62f7df77f72a1ec9653797b6dd

Change-Id: If9da2d9f717814bff6a3aa7e6f1a0a44a49f34d6
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
a780e12db2dba2f4b4fe3ea878171bc34f26e962 23-Apr-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Relax MIME date parser.

Make the date parser accept invalid dates like
"Thu, 10 Dec 09 15:08:08 GMT-0700" which was observed in an email from eBay.

Per RFC, timezone must be either obs-zone (e.g. "GMT") or +/- with 4 digits.
The GMT+/-digits format is not permitted.

Bug 2367124

Backport of I59968274160aeadea70223208b463ee692660056

Change-Id: I3c80eee28d1dcf4c0c211f773a50de0f0839e4ad
om/android/email/UtilityUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
a8a68b827de9e7e335d8b95dcbb3c36af87db06b 17-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Fix flaky tests

Follow up to I3bf7d340. Make sure temp directory is set before running tests.

Turned out Application.onCreate doesn't seem to be guaranteed to be run
before unit tests.

Without this, some tests may fail saying: "TempDirectory not set.
Application hasn't started??", if onCreate runs too late.

Backport of Ic5aee939a2c21f9579a643d0729dd0e9ba81022e

Change-Id: I7526e3205fc78a5eb79f0786b831c4f642cbda70
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
7040017624b697559ed6a342ca685702208d58ea 14-May-2010 Makoto Onuki <omakoto@google.com> DO NOT MERGE: Add static method to get temp dir in Email.

I need to be able to get the temp dir from anywhere without Context
for the new IMAP parser.

Backport of I3bf7d34059399a8253c0760ebc392804ea434412

Change-Id: Idf7f8dffe9d6dd040d1b2311d053d4fc292ba18e
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
74444e73c23cde84a9b2e6a78472a16efbd6e461 15-Sep-2010 Marc Blank <mblank@google.com> Remove GAL lookup dependency on running ExchangeService

Change-Id: I4ff4017bcbb29862e07fde63e2ac01e3552ccd83
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
261d6c3f0c97a12256519a2c3b131a56e57ab45f 15-Sep-2010 Makoto Onuki <omakoto@google.com> Notify only account cursors when resetting new msg count

- Resetting the new message count is now correctly done on a BG thread.
- Added special content provider URI to reset the count.
(/resetNewMessageCount)
- This URI only supports update, which will notify only account
cursors.
- Fixed a problem that an insert with MAILBOX_ID/MESSAGE_ID/ACCOUNT_ID
triggers two notifications.

- This CL changes how we use notification URIs, but unfortunately
no tests for this part. It turned out MockContentResolver doesn't
support the notification mechanism, which made it very hard
to write tests.

Bug 2911646

Change-Id: I35b30a7e6bf2d57510486c7ed19b9f263d8c9b58
om/android/email/provider/ProviderTests.java
5b0c2c7f344e72915ac63ff45cf3d65885373a39 10-Sep-2010 Makoto Onuki <omakoto@google.com> Fix tests broken by I2bf5de4e (Clean-ups for EmailProvider)

My previous CL broke some tests.
- make sure to set 0 to unreadCount when adding a new row
- when updating messageCount in the tests, directly manipulate
the DB. (the provider no longer allows this)

Change-Id: Ib569349707007badf4f23600fbca37110c78fa6d
om/android/email/provider/ProviderTests.java
7183724276e0d829fd01a5bc1f2f6d0f6b6a8818 09-Sep-2010 Makoto Onuki <omakoto@google.com> Don't check flagLoaded for outbox message list

We found a case where messages in outbox have flagLoaded=FLAG_LOADED_UNLOADED,
where it should be FLAG_LOADED_COMPLETE. Haven't found the root problem, but
remove the flagLoaded test to mitigate the problem.

Also moved the buildMailboxIdSelection call to a worker thread.
(this method issues some queries.)

Bug 2984285

Change-Id: I2a5be300fb3da703698512262cc38bea75d0f7ba
om/android/email/UtilityMediumTests.java
b1ea9c3c12d8d9da5c1e49a8752076ce60861e9f 07-Sep-2010 Makoto Onuki <omakoto@google.com> Add quick contact badge to MessageView.

- Added "quick contact badge" to MessageView
- Removed PresenceUpdater, and added new implementation based
on Loader, which is much simpler.
- Changed some text color, so they're visible now.

Bug 2988625

Change-Id: I688a3217178ee8fd0b7245c0ab36a633687ea525
om/android/email/activity/ContactStatusLoaderTest.java
om/android/email/activity/PresenceUpdaterTest.java
76a73d104d65f95419c193c21f0ca75fe64a7c5e 09-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "Cleanups for unbundling"
697f98aea5a8344a17ca5e9b0410d484fdce6555 09-Sep-2010 Makoto Onuki <omakoto@google.com> Cleanups for unbundling

* android.security is hidden. Use java.security.MessageDigest instead.
* Remove android-common from makefile (we no longer use it)
* Add LOCAL_SDK_VERSION to makefile and comment it out

Change-Id: I7f9a021387d5c4e47ade1adb0bb75bec82ba0dd8
om/android/email/UtilityUnitTests.java
4c3a8ede019f8683a7d15defd995790c4b5ebdac 09-Sep-2010 Andrew Stadler <stadler@android.com> Quick fixes for account setup unit tests

Some of these broke in 8bcb572ccfdac6974c111fe6dfc753a5e0d4e7ca
which changed the [Next] button to an ActionBar menu item.

However, the entirety of AccountSettingsXLTests needed to be disabled
because the PreferenceActivity is very different on phone or XL sized
devices, and the tests infrastructure will need to be refactored to deal
with that (on another day.)

Change-Id: I9adbfc9b8da6179e4c4e82d29bb872ee05619a41
om/android/email/activity/setup/AccountSettingsXLTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
09ea19f1843c77fbee9154dbc748c64faf6329e9 07-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "Rewrite testGetFirstRowLong/Int"
e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41 02-Sep-2010 Marc Blank <mblank@google.com> Add snippets to messages

* Add 'snippet' column in Message table and handle upgrades to the
new schema
* Generate a snippet from either HTML or plain-text message body,
removing tags, extraneous whitespace, and other superfluous text
along the way. Store the snippet in the Message table
* Clean up MessagesAdapter to use the pre-existing list projection
and constants
* Write unit tests for snippet creation
* The UI in this CL is always single-line, ellipsized

TODO: Handle two-line subject if portrait and XL

Change-Id: I84a2cbe10957975942edad6eb1255a726924a78a
om/android/email/SnippetTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
4cdae2b1b86f44e1abd240b8e14e722555ff9491 04-Sep-2010 Makoto Onuki <omakoto@google.com> Rewrite testGetFirstRowLong/Int

They were overly-complicated, and even crashed with some framework changes.

Bug 2949312

Change-Id: Icf50bdf2333a32f3b79791f840c58ee0c58ead7f
om/android/email/UtilityMediumTests.java
om/android/email/UtilityUnitTests.java
767f9fe2ebcca7eee20f2a048f33a96ad4bf53da 02-Sep-2010 Makoto Onuki <omakoto@google.com> Implement batch move.

* UI is still temporary
* In this version, we check if the selected messages can be moved *after*
you click "Move", rather than disabling the button beforehand.

Change-Id: Ief2864d2a513001847844963b2b0cb6b714e8667
om/android/email/UtilityUnitTests.java
om/android/email/provider/ProviderTests.java
213c52dd6420785e716dfbfa00fee9ffeebcd5c6 31-Aug-2010 Marc Blank <mblank@google.com> Fix issues with handling FREQ=YEARLY in RRULEs

* Turns out that we weren't handling one of the cases for YEARLY
RRULE; that in which the date is specified as a day of week plus
week of month
* Also, we weren't always sending the INTERVAL properly in a few
cases
* Fix these issues and add a unit test that confirms the fixes
* Also removed an unused argument in recurrenceParser in
CalendarSyncAdapter

Bug: 2718948

Change-Id: If9146d484218e7d6bd9f5c2305d0e6a216aeed49
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/utility/CalendarUtilitiesTests.java
bf2a53ef5eb3f90da75aaf215d39da6898378efe 02-Sep-2010 Andrew Stadler <stadler@android.com> Merge "Direct access to edit specific account settings"
9c65c146f3d8e60f35f46c815d4121749ad13abd 02-Sep-2010 Andrew Stadler <stadler@android.com> Direct access to edit specific account settings

* Finish implementation of AccountSettingsXL.actionSettings()
* Point account manager entry point at it now
* Remove old AccountSettings activity
* Move AccountSettingsTests over to AccountSettingsXLTests and minor
cleanups so it works in fragmentized activity.

Change-Id: I5f979a3a9a29dcbbe5a63833b184e6c0313652d5
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSettingsXLTests.java
a25aa613f79a94d0dea395234ba383de63d03727 01-Sep-2010 Makoto Onuki <omakoto@google.com> Open MessageComponse when draft in All Starred is selected

Also removed a silly unnecessary code in Mailbox.isRefreshable.

Bug 2968445

Change-Id: I75187e5abf1c3e67c8b9ead38c7f749fc8b6cfb0
om/android/email/provider/ProviderTests.java
11aea1efe45b23c1217b31be029a527c9dc460b8 01-Sep-2010 Makoto Onuki <omakoto@google.com> "Move to" multiple messages

Now Controller.moveMessage supports moving multiple messages.

Change-Id: I5d9715cd94e55cf14254b4d4d731524be9d014a8
om/android/email/ControllerProviderOpsTests.java
daec902cae2570086b0aaeb7f1442c94f3dfdbd9 01-Sep-2010 Makoto Onuki <omakoto@google.com> Merge "Fully implement "refresh" action bar button"
e357f5879187124c7af5c2ece5d7d3e4f60f07d2 27-Aug-2010 Makoto Onuki <omakoto@google.com> Fully implement "refresh" action bar button

* Now it'll refresh mailbox list (left pane) as well.
(With the minimal interval of 30 seconds)

* Always refresh inbox.
(also with the minimal interval of 10 seconds)

* Also make sure the "auto-refresh" won't refresh
non-refreshable mailboxes. (drafts, etc)

Bug 2929889
Bug 2930018

Change-Id: I09452d40aad6008a721cfbc3f491617224d7048f
om/android/email/activity/MessageListXLRefreshTaskTest.java
om/android/email/data/MailboxAccountLoaderTestCase.java
om/android/email/provider/ProviderTests.java
70047f73d354a0e3c5365bdeb899a97ca5d616f0 01-Sep-2010 Marc Blank <mblank@google.com> Merge "Change EAS User-Agent to a constant String"
086aac2386a575a0e2c78b1fa8dd8ea13825ae2b 27-Aug-2010 Makoto Onuki <omakoto@google.com> MailboxFinder should ignore callback for non-target account

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

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

Change-Id: I823c11ab5f96df4eb84594c08d3325d12319f708
om/android/email/activity/MailboxFinderTest.java
03e3449c6bff58771dbe2d3d95a5dcbe7b6a3b06 31-Aug-2010 Marc Blank <mblank@google.com> Change EAS User-Agent to a constant String

Change-Id: Ie1efcbc1666bd9bc759aca8134eba21cb9e2467b
om/android/exchange/EasSyncServiceTests.java
61911d4ff70132fa21c5ee7a987303479e8ef6ae 28-Aug-2010 Marc Blank <mblank@google.com> Fix another inconsistent set of PolicySet values

* EAS can send both "simple password" and a non-zero number of
required complex characters; we're supposed to ignore the
complex character requirement in this case
* Force complex characters to zero if password is "simple"
* Update constructor test to check the fix

Bug: 2903349
Change-Id: I3d42bd3c8f3667d8f3027da9e91e0dd18722d9bf
om/android/email/SecurityPolicyTests.java
64b64cca01c1a827c1b3824f099fd638cfb15826 27-Aug-2010 Marc Blank <mblank@google.com> Rename SyncManager to ExchangeService

* Updated comments and checked for 100-columns

Change-Id: I4ab5aaa9425714f8e035e1952db3fec63d498ae1
om/android/email/AccountTestCase.java
om/android/email/service/MailServiceTests.java
om/android/exchange/ExchangeServiceAccountTests.java
om/android/exchange/ExchangeServiceTest.java
om/android/exchange/SyncManagerAccountTests.java
om/android/exchange/SyncManagerTest.java
25144e2b7990c50bb3650faf1aec341837c05348 27-Aug-2010 Makoto Onuki <omakoto@google.com> Fix testAccountIsEasAccount

Bug 2953763

Change-Id: Iad1bf94e676c1fb41335e8bd7f3297af0033b0f5
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
b53b1501055cbf5040bfd7b88a9cda084574c398 24-Aug-2010 Marc Blank <mblank@google.com> IMAP implementation of "move to folder"

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

Change-Id: Ic49e2ecc7ef2252dd4d51f4c3b313b936fda78b6
om/android/email/ControllerProviderOpsTests.java
62d19789b70f9a7d0975611b870a7dd481ca7160 26-Aug-2010 Marc Blank <mblank@google.com> Merge "Fix attachmentExists (recognize mContentBytes)"
4dcb1c5fdaacc40309b77af2a32532bc60218523 25-Aug-2010 Marc Blank <mblank@google.com> Fix attachmentExists (recognize mContentBytes)

* Add unit test for attachmentExists

Bug: 2937856
Change-Id: I020f58740618c084676bbf1cdfad3795edb07688
om/android/email/UtilityMediumTests.java
818214e31f56f2d6d8db70cad8a2fc044b455639 25-Aug-2010 Marc Blank <mblank@google.com> Fix failing account backup/restore unit tests

* We can't run the AccountManager functionality of account backup
and restore in the unit tests, because IsolatedContext doesn't
mock the AccountManager; this leads to various NPE's when the
test is run
* These problems started, by the way, when we added POP/IMAP
account integration with AccountManager
* Since the AccountManager side of account backup/restore isn't
tested, we'll skip that part of the process when running unit
tests

Bug: 2873546

Change-Id: I94673913e66722ac70f3c49c51465122e98bf3d9
om/android/email/AccountBackupRestoreTests.java
5247ab8cae802272b1e29e81d3b31a1c4e710da5 24-Aug-2010 Makoto Onuki <omakoto@google.com> Make isEasAccount always work.

isEasAccount now uses getProtocol(), so it works even if the hostauth
hasn't been restored yet.

Bug 2929896

Change-Id: Iee902c18ef59680d8a7d4622230489ec7946f38c
om/android/email/provider/ProviderTests.java
bf37f67e6d1ccdd47842d496ded4eb11186550ad 24-Aug-2010 Marc Blank <mblank@google.com> Merge "Add utilities to retrieve Mailbox and Account from a message id"
7fd307212f076fab56f575988e5e5bfaf1abdcc3 23-Aug-2010 Makoto Onuki <omakoto@google.com> Restore list scroll position when necessary.

Bug 2769052.

Change-Id: I09b04311ad2a5bd0d41d37f78dddc500414323c1
om/android/email/UtilityUnitTests.java
c184f36c2df16431693d7709e28ded593efc3da7 24-Aug-2010 Marc Blank <mblank@google.com> Revert "Convert Controller to a full service"

This reverts commit 0e6d972641c19467d6b26351ce14a3f44c9fd6f4.

Change-Id: I005fc34152396806468edef919a3620961ddb4fe
om/android/email/ControllerProviderOpsTests.java
om/android/email/RefreshManagerTest.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/service/MailServiceTests.java
bca4e6e70b53ca7db0ac14522f0d26a7b465cf24 24-Aug-2010 Marc Blank <mblank@google.com> Add utilities to retrieve Mailbox and Account from a message id

Change-Id: Ice727f82b5c284617b831f19e2667078cd3da5dc
om/android/email/provider/ProviderTests.java
1abbc55a4590d6572fb17ed94ba7d824065be531 23-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Temporarily disabling crashing test."
d1a05e1cc32e31494af7a62e0395631bef3e1107 21-Aug-2010 Makoto Onuki <omakoto@google.com> Fix occasional fails of MailboxFinderTest.

Some of the tests run code on the UI thread but check the result
on the test thread, without synchronization, which is wrong.

Mark the fields volatile to fix it.

Change-Id: I917493f10fc9a15da57cfbc1e65e8d8e2cffd850
om/android/email/activity/MailboxFinderTest.java
f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41 20-Aug-2010 Marc Blank <mblank@google.com> Simplify AttachmentDownloadService; add unit tests

* Changed our queue from a TreeMap to a TreeSet that uses an easily
testable comparator
* Remove the ugly bit twiddling priority computation
* Test DownloadSet (the logic behind queue ordering, addition,
removal, query, etc.)

Change-Id: Ia8427900b8f39a243a5407349775802d0a4fad4f
om/android/email/provider/ProviderTestUtils.java
om/android/email/service/AttachmentDownloadServiceTests.java
88527082383c5147fba34b074a208199dd303dd6 21-Aug-2010 Makoto Onuki <omakoto@google.com> Temporarily disabling crashing test.

The problem is that this test creates a partial account which will be
used by the activity, but the account is picked up by MailService too
(which is probably not intentional), which crashes because the account
is not properly constructed. (empty address)

Bug 2938323

Change-Id: Ie9ba19ebf72431d086014c1dc191a0c71769dea4
om/android/email/activity/setup/AccountSetupNamesTests.java
0e6d972641c19467d6b26351ce14a3f44c9fd6f4 20-Aug-2010 Marc Blank <mblank@google.com> Convert Controller to a full service

Change-Id: I2078fd047ff46f85936c8bf798a5edd3678bb5b4
om/android/email/ControllerProviderOpsTests.java
om/android/email/RefreshManagerTest.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/service/MailServiceTests.java
f52afae9424fe41071cc34a8d6cbcb82b992a411 18-Aug-2010 Makoto Onuki <omakoto@google.com> Make sure RefreshManager's callbacks are called on UI thread.

Fixed the bug where callbacks for sendPendingMessagesForAllAccounts
are called on a worker threaed.

Change-Id: I28f1424cf67e15abf37c09b68050d1385f9ac3ee
om/android/email/RefreshManagerTest.java
om/android/email/UtilityLargeTest.java
21efedb67fdfff208cef3a18804771fd1d1fff30 16-Aug-2010 Makoto Onuki <omakoto@google.com> Rework/cleanup of "refresh".

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

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

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

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

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

Change-Id: I058ab745ccff10f6e574f6ec4569c84ac4a3e10e
om/android/email/MockClock.java
om/android/email/RefreshManagerTest.java
75153d3122be709b6d2767a4912ff398f1e4be80 17-Aug-2010 Marc Blank <mblank@google.com> Fix broken unit test

Bug: 2900294
Change-Id: I61e002061b1d743327a84e64925e64cb6228b879
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
2866a0a8d72d78a5fbf73f1fb3473deed985c759 14-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Properly unregister mock controllers"
130686327a7749955b85e47230571666a642dc71 14-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Reworking MessageListFragment."
4be3bc1ec8a52308ee1998f0a31d7e491e06b3c1 14-Aug-2010 Makoto Onuki <omakoto@google.com> Properly unregister mock controllers

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

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

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

Change-Id: Ia90f0380aef388d22f7cfcf6e9203e05444b3285
om/android/email/ControllerProviderOpsTests.java
om/android/email/activity/MailboxFinderTest.java
om/android/email/service/MailServiceTests.java
9382eb9ff21855e98b67392f99d721a78a4cfab0 13-Aug-2010 Andrew Stadler <stadler@android.com> am a30631da: Clear password related policies in PolicySet when p/w not required

Merge commit 'a30631da1cae25be3f75137133297e30cef2db9c' into gingerbread

* commit 'a30631da1cae25be3f75137133297e30cef2db9c':
Clear password related policies in PolicySet when p/w not required
187d0334849cfd922f0df05e57d77224f2f70378 12-Aug-2010 Makoto Onuki <omakoto@google.com> Reworking MessageListFragment.

- Now MessageListFragment uses loaders to load data.

- Now that we use Loader's auto-requery with throttling,
removed the throttling timer from MessagesAdapter.

- Simplified footer mode. (now only "no footer" or "load more")

- Removed saving/restoring list state code.
These method don't really look like working, or at least
not always working. Now that UI's lifecycle is changing,
we'd better redo it from scratch.

- Removed MessageListUnitTests.
It only has tests for onSaveInstanceState/restore of the fragment,
which I virtually disabled.

And minor clean-ups
- Moved the code to save/restore selected state from the fragment
to Adapter.

Bug 2911766
Bug 2897500

Change-Id: I16c7aefecc5409c57fc5fc8c59b5c80d9b7fc164
om/android/email/activity/MessageListUnitTests.java
om/android/email/data/MailboxAccountLoaderTestCase.java
a30631da1cae25be3f75137133297e30cef2db9c 12-Aug-2010 Andrew Stadler <stadler@android.com> Clear password related policies in PolicySet when p/w not required

Merge from master of c263810b08943541135a24e2b7520692152455cc

Bug: 2883736
Change-Id: Iec4ed0e320d67aee8a89092ac650c0960540057b
om/android/email/SecurityPolicyTests.java
367ebd7fa5935d9d514d4be5d708c334e4b73127 11-Aug-2010 Makoto Onuki <omakoto@google.com> Handle multiple IMAP SEARCH results.

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

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

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

Bug 2911647

Change-Id: Ia50072944d5b01c1e59541c3a966067b13910cc4
om/android/email/mail/store/ImapStoreUnitTests.java
641ae4535828028a19bf7989c75d71caf75ec2dd 12-Aug-2010 Andrew Stadler <stadler@android.com> Fragmentize Exchange setup

Change-Id: Ib331d9a7f7be7acbfe355d6a03d9ae07af0cc627
om/android/email/activity/setup/AccountSetupExchangeTests.java
41502f6ea886e7039d7dbc9743655ac0415c532b 11-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Fix handling IOException in ImapStore"
c14ff6ea453530eb06e41b81e6513b32f63631b4 06-Aug-2010 Makoto Onuki <omakoto@google.com> Fix handling IOException in ImapStore

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

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

Bug 2898211

Change-Id: I8f9f45d91f596bb8da1a1575593e652d66deb643
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
6d8bfa67c438ee18921d13d8bfba876aacaa9ff6 10-Aug-2010 Makoto Onuki <omakoto@google.com> Make AccountBackupRestore/"delete account" robust.

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

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

Change-Id: Ie235aa15cf9b970fd184c60f14406aa7353c6f00
om/android/email/provider/ProviderTests.java
71cc035c55079bf89283d0acd4ff2712f75a82e1 09-Aug-2010 Andrew Stadler <stadler@android.com> Fragmentize AccountSettings

This is phase 1, which simply replaces the phone UX with a fragment-based
equivalent. A subsequent CL will convert it to a large-format multi-pane
version.

Also fix a latent bug in the signatures of the Incoming & Outgoing
settings, both in the reflection code and in the proguard flags.

Change-Id: I86e857af8b9573c0d6070bb21053ce65bb7fe8a0
om/android/email/activity/setup/AccountSettingsTests.java
c263810b08943541135a24e2b7520692152455cc 07-Aug-2010 Marc Blank <mblank@google.com> Clear password related policies in PolicySet when p/w not required

Bug: 2883736
Change-Id: I2c9c573aea9a4fef1699ff6339e8ef628d7f2269
om/android/email/SecurityPolicyTests.java
36bdeeb0e17cb6fbf08023eeb3e4f1db58b48aea 05-Aug-2010 Makoto Onuki <omakoto@google.com> Add getFirstRowInt.

It's the int version of getFirstRowLong.

Because getFirstRowLong returns a Long as opposed to a long, and the return
value can be null, it's a pain to cast to Integer. So added this variant.

Change-Id: I2a3190e49db480e6d594be4b1fcef9a71e56cb2f
om/android/email/UtilityUnitTests.java
94506fdaf651363adaf60650d9a2301fdb76724d 04-Aug-2010 Makoto Onuki <omakoto@google.com> Small fixes/clean-ups.

- Fixed account selector default account look-up
- Renamed MessageListFragment.onRestoreInstanceState
to loadState.
(Activity.onRestoreInstanceState is called after onStart,
but this one is called in onCreate, so it wasn't a good
idea to use the same name.)
- Changed mailbox cursur requery timeout to 3 seconds
- Added some TODOs.

Change-Id: Ia2242cd9f74936d24756b800eacd126958eed330
om/android/email/activity/MessageListUnitTests.java
b91eea011961889b355a3c5ad837745099c7749a 04-Aug-2010 Marc Blank <mblank@google.com> resolved conflicts for merge of fbf501fe to master

Change-Id: Ic68cbf2de1877ab06744287f57c1c33c4e0e573a
907774e76317a62e55fa342019163c17e904e542 04-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Aadd special boxes to mailbox list."
833fe73b99e62ad9cf6e80c782717c7de1ff12e4 03-Aug-2010 Makoto Onuki <omakoto@google.com> Aadd special boxes to mailbox list.

Change-Id: I36616f53555346ca7fbb6f3426a0c3196d7bacbc
om/android/email/UtilityUnitTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
92861b5c2b687c123251a3b7d90be6fd11dd64c5 02-Aug-2010 Marc Blank <mblank@google.com> Fix tests that broke due to DST changes in African countries

* In particular, "Africa/Casablanca" has DST in 2010 now, so it can't
be used as a test for non-DST time zones

Bug: 2882900
Change-Id: I3026ae4816fc068bd6c783fa3ca879666e796fc9
om/android/exchange/utility/CalendarUtilitiesTests.java
4e619a2d5051811262496e48ec99a0e916822d44 03-Aug-2010 Marc Blank <mblank@google.com> am 2b2b3448: Handle inactivity timeout > maximum allowed properly

Merge commit '2b2b3448ec200f3d649e5f57309908d28ce3bfc7' into gingerbread

* commit '2b2b3448ec200f3d649e5f57309908d28ce3bfc7':
Handle inactivity timeout > maximum allowed properly
2b2b3448ec200f3d649e5f57309908d28ce3bfc7 02-Aug-2010 Marc Blank <mblank@google.com> Handle inactivity timeout > maximum allowed properly

* In a recent change, we mistakenly removed the logic for handling
too-long inactivity timeouts; we should just fall back to the maximum
since this is stricter than what we're being asked to enforce
* Restore this logic and update the unit test
* The regression was caused by change Ida5663a9, to wit:
Backport: Handle "Allow non-provisionable devices" properly

Bug: 2886746
Change-Id: I99cf9a37441b80477cc1c2c7ec2a78f8a14a83da
om/android/email/SecurityPolicyTests.java
5ab18497f6f63b8a12266a1e03635179f50d9c09 03-Aug-2010 Dmitri Plotnikov <dplotnikov@google.com> Adding support for a full-contact (entities) query.

Change-Id: Ib1cdd998dcc4f60124dbc37a42fd61ee0f6802fd
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
d0c217806369e5ca2d753fc0e3e8b405c4d2e991 03-Aug-2010 Makoto Onuki <omakoto@google.com> Merge "Add the messageCount column to the mailbox table."
574854b528163f3bf1a7cb974aa80082d1768edf 30-Jul-2010 Makoto Onuki <omakoto@google.com> Add the messageCount column to the mailbox table.

- Use trrigers to keep them up-to-date.
- Batch-update them upon upgrade.

- Motivation:
On the mailbox list, we show the number of messages in trash/drafts.
We currently do this with count(*) on the fly, which is okay
because MailboxList is really shown right now.
However, on the 2 pane, it's always shown and constantly refreshed,
so the use of count(*) can be a huge penalty.

It also make the code significantly simpler.

Change-Id: I26efa238d5183df43420a65925876248ef6c6cb6
om/android/email/provider/ProviderTests.java
20bf78222b9a43fe0514310c82b5e811737fc8f1 31-Jul-2010 Makoto Onuki <omakoto@google.com> Merge "Fix failing tests."
b6c1ad0f013319101b32c9c3831920ec39554169 31-Jul-2010 Makoto Onuki <omakoto@google.com> Rename MessageViewFragment2

Change-Id: I28e23c0ff18211db999396c5ba1ad9ef898d4515
om/android/email/activity/MessageViewTest.java
206d4e842d287a7a4e6bedf4963fb7f0f58e113f 30-Jul-2010 Makoto Onuki <omakoto@google.com> Split up MessageViewFragment like we did to MessageView.

Break MessageViewFragment up into two fragments, MessageViewFragment, which
is used to show regular messages, and MessageFileViewFragment, which shows
EML messages. (And their base class, MessageViewFragmentBase.)

MessageViewFragmentBase's javadoc has a class diagram.

MessageViewFragment is actually named MessageViewFragment2 at this point
so that GIT correctly finds out the rename from MessageViewFragment to
MessageViewFragmentBase. I'll rename it back in a following CL.

Also added very basic unit tests for MessageView and MessageFileView.
At this point, they just make sure the activities really open and show
messages without exceptions.

I feel like the current naming schema for the activities/fragments is
kinda confusing. Let me know if you come up with better names.

Change-Id: Iff948f4b68cfdb7c1e68f225927b0ce58d34766b
om/android/email/ControllerProviderOpsTests.java
om/android/email/TestUtils.java
om/android/email/activity/MessageFileViewTest.java
om/android/email/activity/MessageViewTest.java
om/android/email/provider/ProviderTestUtils.java
2d5b4f25f9352290a51f4827bf922d2115936451 30-Jul-2010 Makoto Onuki <omakoto@google.com> Fix failing tests.

Bug 2844798
Bug 2882894

Change-Id: I683c67ddc7ce7c22f06e4b39df330d3850513862
om/android/email/UtilityUnitTests.java
om/android/exchange/SyncManagerAccountTests.java
b8f31d5490eba7f307ee578426020bff2ee528ec 30-Jul-2010 Makoto Onuki <omakoto@google.com> Helper to create isolated context for provider tests.

The logic came from ProviderTestCase2, but it can be used with other
kind of test cases, such as InstrumentationTestCase.

Extracted from an existing class. We'll need it for new activity tests.

Change-Id: I5741f01d4749fd397704cef330082470f6051bcf
om/android/email/DBTestHelper.java
om/android/email/activity/MailboxFinderTest.java
ec15f2356e47d621584cc3fc84c9c02557e0a0df 28-Jul-2010 Makoto Onuki <omakoto@google.com> Extract the mailbox lookup logic into an independent class

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

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

This will be used by MessageListXL.

Change-Id: I4adc3db025fb271c254aa2b58b3b753281dc7398
om/android/email/activity/MailboxFinderTest.java
4de80f22aed7255a4a7ac4dd31de19c838a1fdf9 28-Jul-2010 Makoto Onuki <omakoto@google.com> Merge "Move isSecurityHold/clearAccountHoldFlags to Account"
ae8fc30b41ad6e38886e27d143dc28adcf1b8a7e 28-Jul-2010 Makoto Onuki <omakoto@google.com> Fix "disk I/O error" in LocalStoreUnitTests

The problem was that we didn't close the LocalStores created in these
testDbUpgradeXxx tests.

Also,
- Make sure to close databases.
- Make sure to close cursors.
- Cleard up warnings (unnecessary casts, etc.)

Bug 2859264

Change-Id: Ifaddbb6cf07794a7b5978564ea8fbb3cbf75b978
om/android/email/mail/store/LocalStoreUnitTests.java
bcf32320e2600e96c8a9e997a8903bfc3893b35e 27-Jul-2010 Makoto Onuki <omakoto@google.com> Move isSecurityHold/clearAccountHoldFlags to Account

- Added unit tests
- I see the "open a cursor, move to the first row, read a column" pattern over
and over. Added a utility method for this. (Let's try not to bloat the
binary by copying code around!)
- Added helper classes for database related tests
- Removed code dup

Change-Id: I380959215cc1661b252158f0f6e35369b499cdf8
om/android/email/DBTestHelper.java
om/android/email/SecurityPolicyTests.java
om/android/email/UtilityUnitTests.java
om/android/email/provider/ProviderTests.java
e6cc662abc0b5fffe223cda5e980b4f05a4e91dd 08-Jul-2010 Marc Blank <mblank@google.com> Use AccountManager for POP/IMAP; refactor setup classes

There are two major, interrelated parts to this CL:

1) Clean up the activities to reduce the use of Intents to pass
information between activities; instead, we use a common
SetupData structure that automatically saved/restored as necessary
during the setup flow. A fair amount of code and inconsistent
use of Bundle extras has been eliminated in the process.

* Create SetupData structure, setters/getters, and initialization
methods to simplify the preservation of state during setup flow
* Remove all state/flow extras from Intents; Intents now only
specify the Activity to be started, which should greatly simplify
the transition to Fragments.
* Remove all state/flow fields from Activities
* Modify existing setup activity unit tests and confirm tests pass

2) Create AccountManager accounts for POP/IMAP email accounts to
provide consistency in user experience. Also, internal flows are
now identical as between account types.

* Move account reconciliation from SyncManager to MailService, so
that reconciliation is consistent between email and exchange
accounts; move unit tests as appropriate
* Add a "Sync Email" setting for POP/IMAP/EAS
* Change MailService to respect the "Sync Email" setting in
Settings -> Accounts & sync
* Create PopImapSyncAdapterService to handle manual POP/IMAP sync as
requested by SyncManager; add EmailSyncAdapterService to perform
the same function for EAS
* Use new PopImapAuthenticatorService to add AccountManager accounts
for POP/IMAP accounts; setup appropriate stanzas in AndroidManifest
and add related xml files
* Update AccountSettings to use SetupData

Miscellaneous other changes:

* Only allow valid port numbers in incoming/outgoing setup

Bug: 1712475

Change-Id: Ibdac52fb2c5578b86bf3992ddb1acd10f162391a
om/android/email/UtilityUnitTests.java
om/android/email/activity/setup/AccountSetupAccountTypeTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/service/MailServiceTests.java
om/android/exchange/SyncManagerAccountTests.java
a0b88dc1c893164ff021bc291b35fc3a3bcb7931 15-Jul-2010 Makoto Onuki <omakoto@google.com> Merge "Adding more test to MessageOrderManager"
638c67f4dbad4055b1d89834ca2e140f55a06d66 15-Jul-2010 Makoto Onuki <omakoto@google.com> Adding more test to MessageOrderManager

Added a case where all the message in the message list is removed.

Change-Id: Iedc2dbdf391978bd67d3bcdc260590d98cc9ef7d
om/android/email/activity/MessageOrderManagerTest.java
cd0f12fda867583a0e30e2ef35fc035bd8e32626 15-Jul-2010 Marc Blank <mblank@google.com> resolved conflicts for merge of 84f7d07d to master

Change-Id: I62abe3b8aa31a1b551d0396e184b648c305033ec
1585d313f1a26b4b780761a9e9b4ec7042dcbbe5 15-Jul-2010 Marc Blank <mblank@google.com> am 8b36acb1: Backport: Handle "Allow non-provisionable devices" properly

Merge commit '8b36acb10d555b59ec0497f6c71426af823c7931' into gingerbread

* commit '8b36acb10d555b59ec0497f6c71426af823c7931':
Backport: Handle "Allow non-provisionable devices" properly
8b36acb10d555b59ec0497f6c71426af823c7931 14-Jun-2010 Marc Blank <mblank@google.com> Backport: Handle "Allow non-provisionable devices" properly

* Backport from master branch
* Send policy key of "0" when validating; this gets us the policies
even if "Allow..." is enabled (currently, we simply don't see the
policies)
* If we don't support all of the policies, send back the response
code indicating support for partial support. If we get a positive
response back, then we're good to go - the server allows devices
with partial support. Otherwise, we fail as we always have - with
the toast indicating that the device doesn't support required
policies
* Remove PolicySet.isSupported() and ensure proper field ranges
within the constructor
* Update tests as appropriate

Bug: 2759782
Change-Id: Ida5663a9b35c75ecc61a5f442be0bd60b433cb73
om/android/email/SecurityPolicyTests.java
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/adapter/ProvisionParserTests.java
7a1a203786f10b60393efdec606cea416aa99e16 15-Jul-2010 Marc Blank <mblank@google.com> am e43b11ba: Handle correction of rejected Ping heartbeat

Merge commit 'e43b11ba3e9be9380b7c43cde3117c6de28f28bd' into gingerbread

* commit 'e43b11ba3e9be9380b7c43cde3117c6de28f28bd':
Handle correction of rejected Ping heartbeat
ec29471c7349a9e0b688b90b75e405f8da71540f 05-Jul-2010 Marc Blank <mblank@google.com> Make sure signature is added to reply/forward

* Add this to processSourceMessage in the reply/forward cases
* Add unit tests for reply and forward case

Bug: 2734321
Change-Id: I6be8383fe5f217a4bda8e669cb69f439bc8e96b6
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageComposeTests.java
e43b11ba3e9be9380b7c43cde3117c6de28f28bd 13-Jul-2010 Marc Blank <mblank@google.com> Handle correction of rejected Ping heartbeat

* Handle status 5 for Ping command (heartbeat of out range)
* Write unit test for heartbeat reset

Bug: 2834195
Change-Id: Ic7952a4b296cf15c6ba895d6579fe7956b171e5b
om/android/exchange/EasSyncServiceTests.java
de0a1c33c9507e96d554ca645d42d07f1241157e 01-Jul-2010 Makoto Onuki <omakoto@google.com> Extract MessageListTask and make it self-contained.

Introducing MessageOrderManager which maintains a message list for
MessageView. It's used to tell if there is newer/older messages
in a mailbox, and the id of them.

Also, slightly related to this, moved mWaitForLoadMessageId to
ControllerResults where it should belong.

Change-Id: I84e32180c7e84a317f2204bb10ad7245ec022dca
om/android/email/activity/MessageOrderManagerTest.java
e60d3648fdead20a1624eb8766086980666a20c6 07-Jul-2010 Makoto Onuki <omakoto@google.com> Extract presence check logic into its own class.

Change-Id: I12e449ce7f1d10ed4737581e35367eae84a7f29e
om/android/email/activity/PresenceUpdaterTest.java
7f247d1cd316789d2fcab2d1e41fb8af4d7243f8 13-Jul-2010 Makoto Onuki <omakoto@google.com> Disable MessageViewTests

- These tests will probably not make sense with the upcoming UI change.
- Moved testAttachmentWritePermissions to UtilityUnitTests.
It's a test for createUniqueFile, which is now owned by Utility.
- Removed Long.MIN_VALUE hack from MessageView.
New tests should have something better.

Change-Id: I9a09e5e8080a165b010607d1fa3112bcaaab4f90
om/android/email/UtilityUnitTests.java
om/android/email/activity/MessageViewTests.java
6fe51991542ca9f3eb355dd98d506896f562292d 11-Jul-2010 Marc Blank <mblank@google.com> Merge "New calendar sync adapter tests"
f115d31ae8094ae62176504760d06daf2c9cd482 03-Jul-2010 Marc Blank <mblank@google.com> New calendar sync adapter tests

* Created MockProvider that can be used for testing the results of
ContentProviderOperation's for Calendar/Contacts (we can't use these
within our mock contexts because we can't instantiate the provider
classes within the Email package)
* Wrote some unit tests for MockProvider
* Use MockProvider to test addEvent, in particular how a user's attendee
status is stored, depending on whether the event is new or updated

Change-Id: I97f02d125eb7347726261e12ce70aadc539be1d4
om/android/exchange/adapter/CalendarSyncAdapterTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/provider/MockProvider.java
om/android/exchange/provider/MockProviderTests.java
5fcbdcf59febbaaac7f8a2cd28a0027d3883f33c 09-Jul-2010 Marc Blank <mblank@google.com> Merge "Send intro text with SmartForward"
80ee607a7cc784993a48741d0dfbd132cd546985 06-Jul-2010 Marc Blank <mblank@google.com> Send intro text with SmartForward

* We need to include the intro text (--Original Message--, etc.) to
SmartForwards, and somehow this got in a past updat
* Add unit test for forwarding
* Fix unit test for reply so that it works localized

Bug: 2477988
Bug: 2685784
Change-Id: I8d92f00d37a434840ec3eb237f3901cd5dc7ad09
om/android/email/mail/transport/Rfc822OutputTests.java
5b02ecf87cd8e6e11ffd84ff200767f3ebfd66d9 06-Jul-2010 Marc Blank <mblank@google.com> Fix SmartReply/SmartForward in EAS 2.5

* We inadvertently broke this with a recent update that uses Uri
encoding for ItemId and CollectionId in SmartForward/Reply commands.
We need to allow colon (:) however for EAS 2.5; otherwise, sends
fail with HTTP 500
* Update unit test

Bug: 2821684
Change-Id: Ia6bdd2169513d1c13a8174dd599477a35df950f2
om/android/exchange/EasOutboxServiceTests.java
57f4d0222b0a5647793d7ea14acda055223ea11d 02-Jul-2010 Makoto Onuki <omakoto@google.com> Adding 2 utility methods for testing

expectThrowable() and waitUntil().

Change-Id: I8e3af97ed02254ef2fdc72afadea1911ed23e4ab
om/android/email/TestUtils.java
a0f1dd0a5c55bf845dbf59b90b89bd87bedbf1fb 02-Jul-2010 Makoto Onuki <omakoto@google.com> Merge "Cleaning up MessageView"
44b5242edd938450f5e7bc5569852fa5f793da41 30-Jun-2010 Makoto Onuki <omakoto@google.com> Cleaning up MessageView

- Removed dead code/dead comment.
- Moved static utility methods to Utility.
- Renamed some methods.
- Changed the timing to call super methods.

Also:
- Internationalized formatSize()
- Added unit tests for createUniqueFile() and formatSize()
- createUniqueFile now uses File.createNewFile() instead of exists().

Change-Id: Ibc30e15b029ed5088954bd6fc9032e25dddf176e
om/android/email/UtilityUnitTests.java
om/android/email/activity/MessageViewTests.java
42ff939e3a8a69ca5937aa5d6a2a932ae2e80752 25-Jun-2010 Marc Blank <mblank@google.com> Prevent MailService from potential looping due to EAS accounts

* The code assumed that all accounts used the scheduler in MailService
whereas only those using MessagingController do so (i.e. EAS does
not)
* Change setupSyncReportsLocked to set the syncInterval for accounts
that don't use MessagingController to Account.CHECK_INTERVAL_NEVER
* Add unit test for the changed code

Change-Id: I74a3dae21d9ec16f9903bdf2a1c28092ae89cc50
om/android/email/service/MailServiceTests.java
4e366b99959e5be422e6c77ec698f2241f4ff4bf 29-Jun-2010 Makoto Onuki <omakoto@google.com> Merge "Always use the mime-type "message/rfc822" for eml files."
5bd2faee5e59ce75cf4b84b6f9b04bc65bedd083 14-Jun-2010 Marc Blank <mblank@google.com> Preliminary GAL/Contacts integration for EAS

Change-Id: I9997ac96f83f427c71caf12d591ba6069bedf935
om/android/exchange/provider/ExchangeDirectoryProviderTests.java
1d0be30871745ef0e623d8bb5e2e433567541623 29-Jun-2010 Makoto Onuki <omakoto@google.com> Always use the mime-type "message/rfc822" for eml files.

Bug 2795919

Change-Id: Ie20fccdad34d7d17d7444af25d3e57033a45de5a
om/android/email/provider/AttachmentProviderTests.java
51f5b2f3fabe927ac9512ce5cab8978fb9e1e0b5 28-Jun-2010 Marc Blank <mblank@google.com> Fix problem with unencoded data in URI sent to EAS

* We need to encode the itemId and collectionId for SmartForward and
SmartReply
* Add unit test for the fix
* Small change + test to EasSyncService usage of URI encoding to use
a non-deprecated method

Bug: 2787725
Change-Id: I428b308b56cc359b8cdd9e42bc3f42c65b6797dc
om/android/exchange/EasOutboxServiceTests.java
om/android/exchange/EasSyncServiceTests.java
8d8f86e899165772a7d91250b98dfc3c0d78b538 25-Jun-2010 Marc Blank <mblank@google.com> Cleanup and speed up isMessagingController

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

Change-Id: I6a0ec789a84bdf30b55156e6337a627fb4e81a08
om/android/email/ControllerProviderOpsTests.java
om/android/email/provider/ProviderTests.java
663b57daa793c526c69560225c7a073b1abbc3d6 23-Jun-2010 Marc Blank <mblank@google.com> Fix GAL search in EAS 12.1

* We weren't sending the proper protocol version to GAL search, which
causes errors when using 12.1
* The simple fix is to send the agreed upon protocol version, instead
of the default (which is 2.5)
* Replace parsing of protocol version with lookup

Bug: 2793588
Change-Id: Ib2a255d8467004ce985d2d688b37066e1e09d78a
om/android/exchange/EasSyncServiceTests.java
9b4988de43dbee6c06066caab63806e8c8303d7d 10-Jun-2010 Marc Blank <mblank@google.com> Implement support for new security policies

* Minimum complex characters
* Password history (i.e. disallow re-use of past n passwords)
* Password expiration
* Password expiration is NOT yet supported in the framework; there
is a TODO in this CL and a trivial change will be needed when
support arrives; for now, we report this as unsupported
* The two implemented policies are testable

Change-Id: I477adbc000577c57d1ab1788378c97a60018c10c
om/android/email/SecurityPolicyTests.java
391ae25c43a38829cc0990af18c36bdc7cc374cf 05-May-2010 Marc Blank <mblank@google.com> Handle viewing of attachments that are, themselves, emails

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

Change-Id: I20276ee006b9f05b889f3c808d3dc407cde26d49
om/android/email/ControllerProviderOpsTests.java
om/android/exchange/SyncManagerAccountTests.java
e4ecb500916591bb5bf1f6fa0cc2e85cc186cb7d 19-Jun-2010 Andrew Stadler <stadler@android.com> Convert AccountFolderList to use a Fragment

* Introduce AccountFolderListFragment and its layout
* Extract all list-related UI into it
* Fix leaking cursor in AccountsAdapter and add unit test

Change-Id: Ica566847d97927b736f515d434c6691c82343290
om/android/email/activity/AccountsAdapterTest.java
1d6dab29562eca7978f179be5f5c75f22f44d734 14-Jun-2010 Marc Blank <mblank@google.com> Handle "Allow non-provisionable devices" properly

* Send policy key of "0" when validating; this gets us the policies
even if "Allow..." is enabled (currently, we simply don't see the
policies)
* If we don't support all of the policies, send back the response
code indicating support for partial support. If we get a positive
response back, then we're good to go - the server allows devices
with partial support. Otherwise, we fail as we always have - with
the toast indicating that the device doesn't support required
policies
* Remove PolicySet.isSupported() and ensure proper field ranges
within the constructor
* Update tests as appropriate

Bug: 2759782
Change-Id: I5f354a0e2d81844aff75d8a8a6de3b97f0020c1f
om/android/email/SecurityPolicyTests.java
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/adapter/ProvisionParserTests.java
ca6647a679bd9ca8bed5f64380f0567c5bbd018c 16-Jun-2010 Marc Blank <mblank@google.com> Merge "Add tests for CalendarSyncAdapter"
34f29c8a7478cf8c85578d176ac27d973ecca7e4 14-Jun-2010 Makoto Onuki <omakoto@google.com> Test for interaction between ImapStore and vendor policy.

Change-Id: I092b3a0f2f40d9aa19f2f61066362099c8b3f50b
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/imap/ImapTestUtils.java
601187db42a34b638cc911758b3735bba5d51ada 11-Jun-2010 Makoto Onuki <omakoto@google.com> Introducing MessageListFragment.

- Extracted MessageListFragment out of the MessageList activity.
- This is basically pure extraction, with the following conceptual change.
- Now the MessageList activity doesn't know the mailbox id or
the account id. If it needs these ids, it needs to ask the fragment.
- MessageListFragment.LoadMessagesTask tries to determine the account ID
if it's unknown.

Most code in MessageListFragment is directly copied from MessageList
with minimal changes (e.g. pass mActivity instead of 'this' as a Context).
There's a few cleaning up oppotunities. I'll work on them later in a separate
CL.

Change-Id: Ie004cc49b429f2cd8f9de73df5abb94f3054ea0a
om/android/email/activity/MessageListUnitTests.java
1a3b2f7de2c73750870871b6f288474476d7e04e 12-Jun-2010 Marc Blank <mblank@google.com> Add tests for CalendarSyncAdapter

* Test for creation of a typical event
* Test for creation of an event with redacted attendees
* More to come

Change-Id: Ica117cd20a9e270ffe49efed75607e92b4d8ac90
om/android/exchange/adapter/CalendarSyncAdapterTests.java
36d3dfaeac1a80561ef41a78ecc9bf3583d0ca7b 11-Jun-2010 Makoto Onuki <omakoto@google.com> Extract MockVendorPolicy, add standard mechanism to inject it.

One thing that bothers me regarding the new ImapStore is that there is no
tests to verify if the way how getImapId() uses a vendor policy hasn't changed.
This part is hard to test with a real vendor policy, and it can easily be
overlooked even if it's broken.

This CL offers ImapStoreUnitTests a way to test the interaction between
getImapId() and a vendor policy.

Also fixed a bug in VendorPolicyLoaderTest where it assumed the test apk
package name is "com.android.email.tests", but it may actually be
"com.google.android.email.tests" now. (Broken since the test makefile
used inherit-package.)

Change-Id: I8feb616ea28cb5cae5b4fba57e363771014ac599
om/android/email/MockVendorPolicy.java
om/android/email/VendorPolicyLoaderTest.java
851f3219e2bbcfb9c02c439d84d0885d890ded8d 09-Jun-2010 Makoto Onuki <omakoto@google.com> Renaming MessageListAdapter to MessagesAdapter

in line with MailboxesAdapter.

Change-Id: I4ed387db2f5ce1f9bad282521c62eeec0c697db4
om/android/email/activity/MessageListUnitTests.java
0fb092b38912c7cff776a51872840bb2089ebe08 05-Jun-2010 Makoto Onuki <omakoto@google.com> Fix for failing SecurityPolicyTests.

This fixes the following exception.

java.lang.UnsupportedOperationException
at android.test.mock.MockContext.getApplicationContext(MockContext.java:82)

Bug 2725552

Change-Id: Iaca177defe5f5e836211c58270379da056fa64e0
om/android/email/SecurityPolicyTests.java
0a892ae04f0557367a751e1b130e260feccc3c52 02-Jun-2010 Makoto Onuki <omakoto@google.com> Extract MessageListAdapter.

Change-Id: I0e441b7fff925c7703ab88ab54240c5b42d045c4
om/android/email/activity/MessageListUnitTests.java
bf580534063ce6948339ed94edc447e8d1540a4f 29-May-2010 Makoto Onuki <omakoto@google.com> Follow-up to the new IMAP parser.

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

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

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

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

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

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

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

Change-Id: I7116f57fba079b8a5ef8d5439a9b3d9a9af8e6ed
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/imap/ImapElementTest.java
om/android/email/mail/store/imap/ImapListTest.java
om/android/email/mail/store/imap/ImapResponseParserTest.java
om/android/email/mail/store/imap/ImapResponseTest.java
om/android/email/mail/store/imap/ImapStringTest.java
om/android/email/mail/store/imap/ImapTestUtils.java
637abf985294e6cc436e52c55d31a606c9c1a6a2 28-May-2010 Marc Blank <mblank@google.com> Merge "Split UtilityUnitTests into medium and small test classes"
654cc1f68f81e1f64a8f6242961d0ba507912371 28-May-2010 Marc Blank <mblank@google.com> Split UtilityUnitTests into medium and small test classes

Change-Id: I382bb2bd94ba4d800e907f9c439b4e03f1f20ea4
om/android/email/UtilityMediumTests.java
om/android/email/UtilityUnitTests.java
50adf5369cec4d551b7cff286c86b6cfc15edd40 28-May-2010 Andrew Stadler <stadler@android.com> Merge "Refactor AccountsAdapter into its own class."
f3c285d4a30dfd1ab6b8f1963f6ae8d936447d35 28-May-2010 Andrew Stadler <stadler@android.com> Refactor AccountsAdapter into its own class.

* Extract AccountAdapter from AccountFolderList
* Use callback instead of hardcoded launch of MailboxList
* Unit tests

Change-Id: Icafce1ef73a99fb61985c649620440656f9b51a3
om/android/email/activity/AccountsAdapterTest.java
9d387ff0bb88ad952b53c956b468dcbcec248752 20-May-2010 Marc Blank <mblank@google.com> Fix validation use of FolderSync

* To avoid having to use a mock deviceId with FolderSync in validation, we now
simply use the real deviceId with the correct SyncKey ("0" for a new account,
or the actual sync key if the account already exists)
* Rework utility code that finds existing accounts
* Write unit test for findExistingAccount

Bug: 2589243
Change-Id: Ia532b2e209aec3aa01ca06617b4da78c3d986b32
om/android/email/UtilityUnitTests.java
838beeb6217446c1b18b5fc297370fd1914d1ffc 25-May-2010 Marc Blank <mblank@google.com> am 719d29bd: am 4c8adbc4: am 027a6ddf: Merge "Fix bugs related to TZ handling for all-day events" into froyo
719d29bdcd0098955e53458f746e6885f9ad652f 25-May-2010 Marc Blank <mblank@google.com> am 4c8adbc4: am 027a6ddf: Merge "Fix bugs related to TZ handling for all-day events" into froyo

Merge commit '4c8adbc4aa81308e57ae129e9587ec50483af6a8' into kraken

* commit '4c8adbc4aa81308e57ae129e9587ec50483af6a8':
Fix bugs related to TZ handling for all-day events
4c8adbc4aa81308e57ae129e9587ec50483af6a8 25-May-2010 Marc Blank <mblank@google.com> am 027a6ddf: Merge "Fix bugs related to TZ handling for all-day events" into froyo

Merge commit '027a6ddfaa7228854cb3c4238434f87fc69078b6' into froyo-plus-aosp

* commit '027a6ddfaa7228854cb3c4238434f87fc69078b6':
Fix bugs related to TZ handling for all-day events
3e065170f3374ecb78af2e68bcb28040b83fd928 22-May-2010 Marc Blank <mblank@google.com> Fix bugs related to TZ handling for all-day events

* In bug 2703075, all-day events from time zones at GMT or later
appear a day early; this is because the time was calculated from
the GMT date/time of the event rather than the local date/time of
the event; this CL correctly changes this to use local date/time
* In bug 2707966, device-edited all-day events disappear in Outlook
and OWA after upsync; this is due to the fact that we store all-day
events in UTC on device, whereas we need to upload all-day events
using the original (local) time zone. In this CL, we save away
the original time zone and use it on upsync
* In our decoding of Exchange time zone information, we default to
local time when we can't find a time zone that matches the bias
and DST information; we should really default to a time zone with
the same bias, if one exists; we do that in this CL.
* Add/modify unit tests

Bug: 2703075
Change-Id: Id80c481ecc0eae980b2e91dae7f105f924cfca28
om/android/exchange/utility/CalendarUtilitiesTests.java
32f8a49e0160f5b99b2c44a7c21dd7ba4876c1bd 21-May-2010 Makoto Onuki <omakoto@google.com> Two new tests for the bottom half of ImapFolder.append().

They cover the cases:
- when OK response doesn't have APPENDUID.
- when APPEND fails.

Change-Id: I13a0fb8aaf2e1cbb5a1f055c9ce56e2891373ea0
om/android/email/mail/store/ImapStoreUnitTests.java
cbe4ae9291160877f6664289e3713d5ef792bca5 19-May-2010 Makoto Onuki <omakoto@google.com> More tests for IMAP, clean up, and a few bug fixes.

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

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

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

Change-Id: I04b1de6bc384cffb7a5286bcec0a349a3d62a623
om/android/email/mail/store/ImapStoreUnitTests.java
7d3519151a34792956cfc2b63bd2735fd0202d54 18-May-2010 Makoto Onuki <omakoto@google.com> Tests for IMAP FETCH

Adding regression test for the new IMAP parser.

Change-Id: Iac7f5c022e44ca5f06f735e145af15cc459eb61f
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
128fb393e8ed613c2ce283c0bd51684af2ba444d 23-Apr-2010 Makoto Onuki <omakoto@google.com> Relax MIME date parser.

Make the date parser accept invalid dates like
"Thu, 10 Dec 09 15:08:08 GMT-0700" which was observed in an email from eBay.

Per RFC, timezone must be either obs-zone (e.g. "GMT") or +/- with 4 digits.
The GMT+/-digits format is not permitted.

Bug 2367124

Change-Id: I59968274160aeadea70223208b463ee692660056
om/android/email/UtilityUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
0a8030562a5235591a5f5364bf5e6855ffa62861 17-May-2010 Makoto Onuki <omakoto@google.com> Fix flaky tests

Follow up to I3bf7d340. Make sure temp directory is set before running tests.

Turned out Application.onCreate doesn't seem to be guaranteed to be run
before unit tests.

Without this, some tests may fail saying: "TempDirectory not set.
Application hasn't started??", if onCreate runs too late.

Change-Id: Ic5aee939a2c21f9579a643d0729dd0e9ba81022e
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
9c9e757917b51cb87c1880b8e8ae14bfed5d84f9 14-May-2010 Makoto Onuki <omakoto@google.com> Add static method to get temp dir in Email.

I need to be able to get the temp dir from anywhere without Context
for the new IMAP parser.

Change-Id: I3bf7d34059399a8253c0760ebc392804ea434412
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
31fa0172cf721bddbbcfca8668de77939669b1d0 10-May-2010 Makoto Onuki <omakoto@google.com> am d93f323f: am 29491840: Merge "Cleanup: Add @Override" into froyo-plus-aosp
d93f323faa32c888eb0606e5694507fba9f7e6ae 10-May-2010 Makoto Onuki <omakoto@google.com> am 29491840: Merge "Cleanup: Add @Override" into froyo-plus-aosp

Merge commit '29491840e62a3a21a9b8e4a0889450d2d0875255' into kraken

* commit '29491840e62a3a21a9b8e4a0889450d2d0875255':
Cleanup: Add @Override
29491840e62a3a21a9b8e4a0889450d2d0875255 10-May-2010 Makoto Onuki <omakoto@google.com> Merge "Cleanup: Add @Override" into froyo-plus-aosp
4880ab8641f5be5332a4ab6d6fe7b4626ab841d2 10-May-2010 Marc Blank <mblank@google.com> am bf60edcc: am a25b1b03: am 85a63c3c: Fix issues with exception downloads
bf60edcc9681c08c57ad2d9c66a1b37f824a0598 10-May-2010 Marc Blank <mblank@google.com> am a25b1b03: am 85a63c3c: Fix issues with exception downloads

Merge commit 'a25b1b03626c6c27c877671f1b6622b4ab022bbc' into kraken

* commit 'a25b1b03626c6c27c877671f1b6622b4ab022bbc':
Fix issues with exception downloads
a25b1b03626c6c27c877671f1b6622b4ab022bbc 10-May-2010 Marc Blank <mblank@google.com> am 85a63c3c: Fix issues with exception downloads

Merge commit '85a63c3c2f2d00210e9f7957f3d217b7fd028dad' into froyo-plus-aosp

* commit '85a63c3c2f2d00210e9f7957f3d217b7fd028dad':
Fix issues with exception downloads
85a63c3c2f2d00210e9f7957f3d217b7fd028dad 07-May-2010 Marc Blank <mblank@google.com> Fix issues with exception downloads

* It turns out that, in addition to other requirements of the
CalendarProvider, there is another - that the ORIGINAL_INSTANCE_TIME
also be set with hour, minute, and second as zero (in UTC)
* Change setTimes() to properly modify ORIGINAL_INSTANCE_TIME
* Also, there was a regression due to an incorrect validity test
for events; this regression caused all exception downsyncs to fail
* Changed isValidEventValues() to be correct for both exceptions
and original events
* Update tests for setTimes and isValidEventValues()
* This CL also fixes 2658988

Bug: 2664229
Change-Id: I9c8aea08e606ff58e5be37ca81a2d86a181c46f6
om/android/exchange/adapter/CalendarSyncAdapterTests.java
165e8bfe7a46564ea98bb16cb059102ba356a1b5 08-May-2010 Makoto Onuki <omakoto@google.com> Cleanup: Add @Override

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

Change-Id: Ic4211c08586e33c44d5d6267c0c9d37f8c7cdc85
om/android/email/MessagingControllerUnitTests.java
c563ce1b80cfc378c061fbf667a79a09c09c235c 08-May-2010 Makoto Onuki <omakoto@google.com> am b8970dab: am e46ac1a6: Cleanup imports.
b8970dabb648fed28d676c6aa3cf3d01d2b071dd 08-May-2010 Makoto Onuki <omakoto@google.com> am e46ac1a6: Cleanup imports.

Merge commit 'e46ac1a61f32bd762a879457b1850087a1ad3a8c' into kraken

* commit 'e46ac1a61f32bd762a879457b1850087a1ad3a8c':
Cleanup imports.
e46ac1a61f32bd762a879457b1850087a1ad3a8c 07-May-2010 Makoto Onuki <omakoto@google.com> Cleanup imports.

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

Change-Id: Ia5b771cd41099ab486ba2e556b441fc7c0affe5f
om/android/email/ControllerProviderOpsTests.java
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/exchange/utility/SimpleIcsWriterTests.java
a32e063036163dfb74a9c59a8167cfd0e7be731b 06-May-2010 Marc Blank <mblank@google.com> am ab4daabd: am 8f255dde: Merge "Add checks for Event validity before commit" into froyo

Merge commit 'ab4daabd5ec99da549407ce87d46e24be261c4a6' into kraken

* commit 'ab4daabd5ec99da549407ce87d46e24be261c4a6':
Add checks for Event validity before commit
33f07963eb432704e05544dbdfa209f3f8fb9e9b 05-May-2010 Marc Blank <mblank@google.com> Add checks for Event validity before commit

* Enforce CalendarProvider2's requirements for valid Events
* Add unit tests for the new code
* Backport of change I42ad7acb from master
Bug: 2658149

Change-Id: I8151d035247a7dbb1fda3eae163b24ccfe055299
om/android/exchange/adapter/CalendarSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
bc1a4753b1b44f58e1393494f9b0dff24b9e58a3 05-May-2010 Marc Blank <mblank@google.com> Add checks for Event validity before committing

* Enforce CalendarProvider2's requirements for valid Events
* Add unit tests for the new code

Bug: 2658149
Change-Id: I42ad7acbcee3b6b831f805c59436017a32651f3a
om/android/exchange/adapter/CalendarSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
b0c37bd8c01db096ee949a607b5f4dd5cee07750 03-May-2010 Andrew Stadler <stadler@android.com> am 1e037acd: am 7cdd6899: am a7628f3b: Merge "Better handling for untyped attachments" into froyo
1e037acda794bb493dd64a1db1968cf8c445a0d0 03-May-2010 Andrew Stadler <stadler@android.com> am 7cdd6899: am a7628f3b: Merge "Better handling for untyped attachments" into froyo

Merge commit '7cdd6899fbe820af852974cd0b7025b72bfe242a' into kraken

* commit '7cdd6899fbe820af852974cd0b7025b72bfe242a':
Better handling for untyped attachments
80ebde2897dced46a0f24efb7c15a997b660a8fe 01-May-2010 Andrew Stadler <stadler@android.com> Better handling for untyped attachments

* IMAP/POP rely on sender to set mime type of attachments
* Which doesn't always work, because senders don't always provide it
* Remap using filename extensions, when needed
* This is applied as late as possible - in the MessageView, and in
the content provider getType(). No changes to how we write databases,
and no change to existing attachment rows.

Bug: 2356638
Change-Id: Ie69e3fd12f406aac803583f9d1299a8af4fba010
om/android/email/provider/AttachmentProviderTests.java
34d94723b614bf48c3a10ec75afd2e487ecaf5f6 30-Apr-2010 Marc Blank <mblank@google.com> am 25fa6124: am 44ae6d2f: am f2d43c39: Merge "Update unit tests for invitation creation" into froyo
25fa61244497945b449f209baec3a1df5667d8ca 30-Apr-2010 Marc Blank <mblank@google.com> am 44ae6d2f: am f2d43c39: Merge "Update unit tests for invitation creation" into froyo

Merge commit '44ae6d2fa2e79de533ceb1fdf50c578a4ed84a3f' into kraken

* commit '44ae6d2fa2e79de533ceb1fdf50c578a4ed84a3f':
Update unit tests for invitation creation
9294d8c030039070d173acb9907b64a48d4b165f 29-Apr-2010 Marc Blank <mblank@google.com> Update unit tests for invitation creation

* Tests changed/added for exception/recurrence changes in CL50201

Bug: 2640878
Change-Id: I97e5557c198aa686d1705158f2c9087c1683590e
om/android/exchange/utility/CalendarUtilitiesTests.java
52ab04a805f000c09067a40c322b9e888c45ab4a 26-Apr-2010 Marc Blank <mblank@google.com> am ad7060ae: am f1fa44bd: am 2f1ce56f: Merge "Fix upload/download of attendee status" into froyo
ad7060ae183cf0e25d6b7a345f7d4371c086508a 24-Apr-2010 Marc Blank <mblank@google.com> am f1fa44bd: am 2f1ce56f: Merge "Fix upload/download of attendee status" into froyo

Merge commit 'f1fa44bdc064a6c01813c5380839b90bd0290d46' into kraken

* commit 'f1fa44bdc064a6c01813c5380839b90bd0290d46':
Fix upload/download of attendee status
8a19af3739aad25d26754e8a52e986cc38b41db6 22-Apr-2010 Marc Blank <mblank@google.com> Fix upload/download of attendee status

* It turns out that the UI uses selfAttendeeStatus and the attendee's status
from the Attendees table in confusing and undocumented ways
* selfAttendeeStatus is used in the UI, but only in certain cases. Generally speaking,
the Attendees table status is definitive. However, when the user sets his status
from the UI, this data is reflected in the event's selfAttendeeStatus, since for EAS,
the user is always the owner of his calendar
* On downsync, we'll put the user's busy status into the Attendees table
* On upsync, we'll send busy status based on the user's attendee status in the
Attendees table
* We'll use selfAttendeeStatus only to determine whether the user has manually changed
his status via the UI (as before)

Bug: 2615586
Change-Id: I3a82474cfd07cbf5aa595e5214807cb55005cefa
om/android/exchange/utility/CalendarUtilitiesTests.java
92db71e44061cf58bd9a31a19ddab9c82921a6b7 22-Apr-2010 Makoto Onuki <omakoto@google.com> Merge "Send local IP address with EHLO instead of "localhost"."
3844bbcaafa1874001e0d5755dbcebe191ef1654 22-Apr-2010 Makoto Onuki <omakoto@google.com> am 2ca8d734: am 6cfa8001: Merge "Fix failing unit tests" into froyo

Merge commit '2ca8d7347db3975746ad87347de57fd5800bf5d4' into kraken

* commit '2ca8d7347db3975746ad87347de57fd5800bf5d4':
Fix failing unit tests
0acd7e9c779f8fa4482a0111f4c15312e9327f6b 22-Apr-2010 Marc Blank <mblank@google.com> am d764ce7e: am 1880ad6a: Send correct busy status information in upsyncs to EAS

Merge commit 'd764ce7e4442b0027a891582cbdd728487a49f97' into kraken

* commit 'd764ce7e4442b0027a891582cbdd728487a49f97':
Send correct busy status information in upsyncs to EAS
f4dac9f266906a84f4710d8af5d4a24f2290b1ba 22-Apr-2010 Makoto Onuki <omakoto@google.com> Send local IP address with EHLO instead of "localhost".

Bug 1515345

Change-Id: I181c9f0d79fbdf62f7df77f72a1ec9653797b6dd
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
6cfa8001a8f352fa2a51925c7552f772796d9cd1 22-Apr-2010 Makoto Onuki <omakoto@google.com> Merge "Fix failing unit tests" into froyo
25d55ed2660baacbeae6cbf1dcb1da22a9358071 21-Apr-2010 Makoto Onuki <omakoto@google.com> Fix failing unit tests

Bug 2614782

Change-Id: I7ed7bf61a567429017f64d9049577ec076331bb2
om/android/email/mail/store/ImapResponseParserUnitTests.java
1880ad6a83120b89ed239858d27d3e63242160e6 22-Apr-2010 Marc Blank <mblank@google.com> Send correct busy status information in upsyncs to EAS

* Fix unit test that was failing

Bug: 2615382
Change-Id: I54c7bdd982d57528f55ce4f4c6804c9f532293fb
om/android/exchange/utility/CalendarUtilitiesTests.java
fc0812021314df607504b31eaa732ea675fe0437 21-Apr-2010 Marc Blank <mblank@google.com> am a0c71419: am 21c04fe3: Merge "Further harden getListOrNull" into froyo

Merge commit 'a0c71419cedaa0f84d12da61e415642b79cc0a9c' into kraken

* commit 'a0c71419cedaa0f84d12da61e415642b79cc0a9c':
Further harden getListOrNull
07fb9f8bea97e9117efa8e2bf8351a4b50206faa 20-Apr-2010 Marc Blank <mblank@google.com> Further harden getListOrNull

* Add a bounds check
* Add a test for ImapList

Bug: 2611022
Change-Id: I3ad88fbc8d3145298731ab19ef7ff68d4011bb00
om/android/email/mail/store/ImapResponseParserUnitTests.java
5ff98ba1ec5c0c0b8125e4c519a8e81a141c0782 16-Apr-2010 Marc Blank <mblank@google.com> am 825999f8: am 095eee41: Set selfAttendeeStatus and busyStatus properly on downsync/upsync

Merge commit '825999f815979519d8d80334a8c1ce0223a89ef2' into kraken

* commit '825999f815979519d8d80334a8c1ce0223a89ef2':
Set selfAttendeeStatus and busyStatus properly on downsync/upsync
095eee41565900a2509256ffcbf6cd67a4c4e345 16-Apr-2010 Marc Blank <mblank@google.com> Set selfAttendeeStatus and busyStatus properly on downsync/upsync

* Set selfAttendeeStatus on download from busy status
* Set busyStatus on upload from selfAttendeeStatus

Bug: 2587076

Change-Id: I34eaa0d3861bcec0cbfd51761b31965e44f5162b
om/android/exchange/utility/CalendarUtilitiesTests.java
ce2e1260bc36e5dc3754930f02be194fee4b2c41 15-Apr-2010 Marc Blank <mblank@google.com> am b8ef8a2c: am a97d8501: Merge "Properly decode a uid from the globalObjId in invites" into froyo

Merge commit 'b8ef8a2c1d18421a7d537dbc8d1ea88ffca95898' into kraken

* commit 'b8ef8a2c1d18421a7d537dbc8d1ea88ffca95898':
Properly decode a uid from the globalObjId in invites
a97d85014f3849fe4ab05758857eb7552caaa856 15-Apr-2010 Marc Blank <mblank@google.com> Merge "Properly decode a uid from the globalObjId in invites" into froyo
7e30b2e22f597b3e4b902c333a8dafc8a21e8b86 15-Apr-2010 Marc Blank <mblank@google.com> Properly decode a uid from the globalObjId in invites

* Meeting invitations in EAS include a globalObjId. It turns out
that this id is EITHER the actual uid (if Exchange created it)
or a wrapper for the actual uid (if some other client created it)
* To find out which case we're dealing with, we have to look at
the base64 decoded string for the magic "vCal-Uid" substring
* If it's there, we pull the real uid out of the decoded string
* Otherwise, we build a hex strong from the decoded bytes
* Write unit test for this process

Bug: 2598201
Change-Id: I1cc40af6d1e45be44c19465eb8a4c31851ec8157
om/android/exchange/utility/CalendarUtilitiesTests.java
6f83fe6317a041bbd8421afe7ee08665c55556b3 15-Apr-2010 Makoto Onuki <omakoto@google.com> am ad383ff1: am d2a0d233: Use consistent device-id even the device is wiped.

Merge commit 'ad383ff1231319c6ded4077b0d1415bf77bec70b' into kraken

* commit 'ad383ff1231319c6ded4077b0d1415bf77bec70b':
Use consistent device-id even the device is wiped.
d2a0d23380a2751d82f9d1f955a812f94a301e2a 15-Apr-2010 Makoto Onuki <omakoto@google.com> Use consistent device-id even the device is wiped.

Use hash of device id (TelephonyManager.getDeviceId()) instead of a random
value.

Bug 2596537

Change-Id: I22303f7287ee6e9edccec349d03f14adbd33f6f7
om/android/email/UtilityUnitTests.java
cda014c16ef3d49319fb3b1ce72feae4104a7fca 15-Apr-2010 Makoto Onuki <omakoto@google.com> am 8dffa087: am 162b0171: Change account colors to what aren\'t used in Calendar.

Merge commit '8dffa087db44e27e5f0e5672b19fdb6975e614a7' into kraken

* commit '8dffa087db44e27e5f0e5672b19fdb6975e614a7':
Change account colors to what aren't used in Calendar.
162b017140464aea05a47e7540a666b10825a8dc 14-Apr-2010 Makoto Onuki <omakoto@google.com> Change account colors to what aren't used in Calendar.

Bug 2535090

Change-Id: I252e04afa402303d226a56f1d7852f50dc26e2ec
om/android/email/EmailTest.java
040f0e3c488c1fe994548de5467bd576d4d18dc6 14-Apr-2010 Makoto Onuki <omakoto@google.com> am 77275817: am 0f3d3601: Merge "Show device id on the exchange setting screen." into froyo

Merge commit '772758177e3dd4fcb1c9d534afec3007b59c8bf7' into kraken

* commit '772758177e3dd4fcb1c9d534afec3007b59c8bf7':
Show device id on the exchange setting screen.
12b4bc9e80ba3509abdcd94b61457cf54d57b726 13-Apr-2010 Makoto Onuki <omakoto@google.com> Show device id on the exchange setting screen.

I've attached a screenshot on the referenced bug.

Also fixed a bug in SyncManager.getDeviceId() where sDeviceId cache wasn't
working.

Bug 2591124

Change-Id: I4b58517c095a96d47fb57179d70091b2c7af5249
om/android/exchange/SyncManagerTest.java
ead786d9b5890f4859bc1911342d237170677f4c 12-Apr-2010 Andrew Stadler <stadler@android.com> am ef01261a: am 9cc6f46b: Merge "Try TOP even on POP servers that fail to report CAPA" into froyo

Merge commit 'ef01261a8909ea3fe3e40b06cc537e0032d47898' into kraken

* commit 'ef01261a8909ea3fe3e40b06cc537e0032d47898':
Try TOP even on POP servers that fail to report CAPA
645fc2830118e19e604f24ba7ffe71c775631f64 12-Apr-2010 Andrew Stadler <stadler@android.com> Try TOP even on POP servers that fail to report CAPA

* Ignore the results of CAPA and always try TOP
* If TOP returns -ERR simply fall back to (bad old slow) RETR
* Unit tests for positive & failure cases

Bug: 2588432
Change-Id: Ife4b551217de1025e14efc46074f16ef4ae99c6f
om/android/email/mail/store/Pop3StoreUnitTests.java
5f95d682885db306b966e245627a175b866f0f53 08-Apr-2010 Andrew Stadler <stadler@android.com> am 3839dc98: Merge "Improve MIME & SMTP compliance on outbound messages" into froyo

Merge commit '3839dc981f15bb7da5e7500ee175485dc85a6f6a' into kraken

* commit '3839dc981f15bb7da5e7500ee175485dc85a6f6a':
Improve MIME & SMTP compliance on outbound messages
6bcccf628413d40696980d0d86c7ab2b4f831952 08-Apr-2010 Andrew Stadler <stadler@android.com> Improve MIME & SMTP compliance on outbound messages

* Write MIME-Version: 1.0 in all outbound messages, not just those
with multiparts. This is required by RFC 2045.
* Unit tests

Bug: 1678296
Change-Id: Icf37d93b8b0150f490791792499865a60744adea
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
e2a076fdfda61a72c1a90d6dd4f5217c6505f8e0 06-Apr-2010 Makoto Onuki <omakoto@google.com> am af672452: Added a test for IMAP APPEND

Merge commit 'af6724527e564d35dd27ac35e24dbced554792e5' into kraken

* commit 'af6724527e564d35dd27ac35e24dbced554792e5':
Added a test for IMAP APPEND
af6724527e564d35dd27ac35e24dbced554792e5 02-Apr-2010 Makoto Onuki <omakoto@google.com> Added a test for IMAP APPEND

It's a preliminary change for IMAP bug fixes.

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

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

Bug 2538076
Change-Id: I49a08afc196c7b7f1f30477dfc38ac5381045d84
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
dc0753373ea6cc87902ea907eb654850ed90ce57 06-Apr-2010 Andrew Stadler <stadler@android.com> DO NOT MERGE. Handle STARTTLS when last line in EHLO response.

When receiving the EHLO response from the SMTP server, the multiline
answer has "-" prefix in all lines except the last line, where the
prefix is a blank. This is according to RFC 2821 section 4.2.1. This has
also been reported as issue 2309 at code.google.com.

Bug: 1744768

Change-Id: I3feccabed30767d2fa5b06352cd7d1c803e8d59c
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
a843d40ba1d3eb77e76b4a28aa911588f0fd81a1 03-Apr-2010 Andrew Stadler <stadler@android.com> Improve handling of unsupported security policies

* If the server asks for more than we can support, don't throw
and error from PolicySet creation. Let isSupported() do that.
* Overlong password lengths cannot be supported and isSupported is false.
* Overlong timeouts & max wipes can be reduced to supported
amount (this actually increases security) and isSupported is true.
* Clean up an obsolete comment
* Unit tests

Bug: 2567804
Change-Id: I2d664a7f2a315b9f9bdcb867fe2cd98f74de6f66
om/android/email/SecurityPolicyTests.java
78021cbbf8154898ce4e68d8c2d2871568cda5e3 01-Apr-2010 Marc Blank <mblank@google.com> Don't add "Invitation: " to meeting invitations

* Turns out that most other clients omit this.
* This has the pleasing effect of fixing the referenced bug
* Update unit tests

Bug: 2561821
Change-Id: I39f7db7e05be590373cd5f3d9b23c7ee21bde4f7
om/android/exchange/utility/CalendarUtilitiesTests.java
cf274512ed722cd039e21ab05ce172052740116f 01-Apr-2010 Marc Blank <mblank@google.com> Fix conversion of UNTIL date in RRULEs to EAS calendar dates

* Because we were sending these in the wrong format, upsynced changes
were failing, with the result that both the original event and
the "new" event (from the UNTIL date forward) remained in the calendar
* Fix is to send the proper format; unit test updated to reflect the
change
* Also, we only send the date of an UNTIL, rather than the to-the-minute
time; it turns out that EAS expects to see only a day for UNTIL.

Bug: 2561818
Change-Id: Ic4eacbe96c713d58c637386ceab2cf22ebe3c2d4
om/android/exchange/utility/CalendarUtilitiesTests.java
1c48450c02ea33e498e17a1bfc9f95576d3027b6 01-Apr-2010 Marc Blank <mblank@google.com> Fix the VCALENDAR we send with all day events

* We need to send date only (without time) in the VCALENDAR file for
all-day events
* Add unit test for this case

Bug: 2561789
Change-Id: I33a43c7a248059c97482ca147a23af083744118a
om/android/exchange/utility/CalendarUtilitiesTests.java
700b373007da10b456e1f9cb0fde2a021fdee84c 01-Apr-2010 Marc Blank <mblank@google.com> Send CANCEL method with meeting cancellations

* We should be sending CANCEL as the method with cancellations
* Fix this and update unit test

Bug: 2527606
Change-Id: I2b982e4bfd1dbc57660cf578702edf49584d2957
om/android/exchange/utility/CalendarUtilitiesTests.java
a6e1f8d4562ed437d67378935c8be6cbfe9b86f9 26-Mar-2010 Marc Blank <mblank@google.com> Add message text for invitation replies

* Updated unit test to make sure there's message text

Bug: 2548714
Change-Id: I70e05b72539ff9ba7d582a51421e5345aa6151e4
om/android/exchange/utility/CalendarUtilitiesTests.java
a942858f0dc26158430a93f5dfd2d91f07471d11 26-Mar-2010 Makoto Onuki <omakoto@google.com> Properly handle old style (<= 1.6) account shortcuts.

A desktop shortcut to an account created on donut or before points at
com.android.email/.activity.FolderMessageList, which we've already removed.

- Added a dummy FolderMessageList to receive it and redirect to MessageList.
- Removed FolderMessageListUnitTests, which was left unremoved.

Bug 2535335

Change-Id: Ie5ffa158882633a4929c4c47a3d9625fd1626863
om/android/email/activity/FolderMessageListUnitTests.java
802a7d69b54b3d560ea12255d44503dda54f1dbd 26-Mar-2010 Marc Blank <mblank@google.com> Format cleanup for CalendarUtilities

Change-Id: I6633435cbe0ee55f58da76658d2ccb12f421e326
om/android/exchange/utility/CalendarUtilitiesTests.java
82b2453b97c69d3cab169a7c00e4c410006ee068 24-Mar-2010 Marc Blank <mblank@google.com> Clean up EAS -> TimeZone determination code

* Use one minute before/after for transition checking, instead of the
sloppier early version
* Add tests for additional known time zones
* Change most methods in CalendarUtilities to package private (for use
with unit tests)
* Clean up a little bad formatting

Change-Id: I9e5be5e1c859f2294adf06874459f7db15fb8c22
om/android/exchange/utility/CalendarUtilitiesTests.java
eba33f8b5a0cc4a28ae5a9d6632df475c4b0a794 25-Mar-2010 Marc Blank <mblank@google.com> Don't send bare line feeds to EAS 2.5

* EAS 2.5 doesn't like seeing bare LF's in Calendar location
and description, and Events including them won't sync back to
the server
* Create a utility to replace bare LF's with CRLF and write
unit test for the utility
* Fix the bug by using this utility

Bug: 2542220
Change-Id: I2c72d23f15e3a922ebe3585e063abe9fa9e2366f
om/android/email/UtilityUnitTests.java
fe61f358ab67cac2aa454a6dd3ea6bbf876e343c 24-Mar-2010 Makoto Onuki <omakoto@google.com> Moved fromUtf8 from TestUtils to Utility.

And cleaned up SimpleIcsWriter.toString().

Change-Id: I383d91256c48be5263c695c8e8dd151d0e95d0a6
om/android/email/TestUtils.java
om/android/email/UtilityUnitTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
om/android/exchange/utility/SimpleIcsWriterTests.java
95492af7a176fc193139cddb5f45c11436763630 23-Mar-2010 Makoto Onuki <omakoto@google.com> Merge "Show a calendar invitation icon on message list."
79b006a08bff55c99cf18f0ea61f5c11688b88bf 22-Mar-2010 Makoto Onuki <omakoto@google.com> Merge "Fix failing unit tests."
0fdcac80285d390ae48149db4946c8d5b91ac89a 22-Mar-2010 Makoto Onuki <omakoto@google.com> Fix failing unit tests.

Bug 2534698
Bug 2534665

Change-Id: If07fc7113b517059bee937d019d464e9c1bc600f
om/android/exchange/utility/SimpleIcsWriterTests.java
20c067c67c23e81a282cf89440055d4506e37476 20-Mar-2010 Makoto Onuki <omakoto@google.com> Show a calendar invitation icon on message list.

Bug 2522928

Change-Id: Ib29c7ee187cb0d864849b83693906b0a3b490734
om/android/email/activity/MessageListUnitTests.java
d5822018fb0f5f994bc76af716e6b8c97adb60e8 21-Mar-2010 Marc Blank <mblank@google.com> Clean up VCALENDAR/TIME_ZONE_INFORMATION code

* Fix the transition times so that they occur at the hour
* Remove an unused variable
* Fix a reference to Calendar.HOUR that should have been
Calendar.HOUR_OF_DAY
* Confirm that unit tests work properly

Change-Id: I3eaf31d160e97b5f3ba59c83878359085aea960d
om/android/exchange/utility/CalendarUtilitiesTests.java
aec526f141f49658fdc5535c76bdf8c879ae95b9 20-Mar-2010 Marc Blank <mblank@google.com> Add unit test for VCALENDAR generation from TimeZone

* Sanity check runs through every TimeZone and makes sure that there
are no exceptions thrown
* Also, that we find at least 10x as many TimeZone's with RRULEs as
those without (empirical)

Change-Id: I2f266ac9d2a839f053bb5fda10a5b77dc8dd2c04
om/android/exchange/utility/CalendarUtilitiesTests.java
39ea302126b6d205ae561a9c3f568b75aa6a202a 19-Mar-2010 Marc Blank <mblank@google.com> Send appropriate ics message for cancellations

* We were sending cancellations with a request for reply, which is
incorrect
* Send the correct dats in the ics attachment
* Update unit test to reflect this

Bug: 2527606
Change-Id: I4cea0bb8f1c29a3cad8d09fd6a4750f7ab067229
om/android/exchange/utility/CalendarUtilitiesTests.java
f7da371234fd35ecca11d1087e21170a0135c781 19-Mar-2010 Jim Shuma <jshuma@google.com> Merge "Add "vibrate when silent" mode to notifications"
9e2ddca59d048fc9ac55278b193ee36b330a7981 17-Mar-2010 Jim Shuma <jshuma@google.com> Add "vibrate when silent" mode to notifications

* Add "vibrate when silent" choice in UI
* Add storage for it in Email's provider. Existing accounts default to
their current settings (always vibrate / never vibrate).
* Respect new mode when notifications are posted
* Updated existing unit tests

Bug: 2457183
Change-Id: I5c933ac39dbef8b2028255f330e0b084a445421a
om/android/email/AccountBackupRestoreTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/SecurityPolicyTests.java
aadee36a34395fe2b97c03eb39be24287ed6ad65 18-Mar-2010 Andrew Stadler <stadler@android.com> Merge "Eliminate duplication in Yahoo! sent mailbox"
c4fcd852ba2437645afa5c90dcbac8a66e8dbf25 18-Mar-2010 Andrew Stadler <stadler@android.com> Eliminate duplication in Yahoo! sent mailbox

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

Bug: 2448220
Change-Id: Ic10fc1a195ccf4671a498188cc8b17848c8d9df7
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
6d55bb08fd5b703cf74771fd7f11b90e5e160187 18-Mar-2010 Andrew Stadler <stadler@android.com> Merge "Fix cases of attachments with no name"
7d738cb7e89353c51c567e466a135b54337f310d 18-Mar-2010 Andrew Stadler <stadler@android.com> Fix cases of attachments with no name

* Most clients send name= in the content-type, but a few clients
send only filename= in content-disposition.
* There was code to handle both cases, but due to two typos, it didn't
work.
* Most easily reproduced by sending from hotmail/live web client.

Bug: 2366961
Change-Id: I1d9a00b9b5fd1094cfb8566c3248d94286a8ae91
om/android/email/LegacyConversionsTests.java
a29495c03cb9579afde122b5f27a5b5908613723 17-Mar-2010 Makoto Onuki <omakoto@google.com> Merge "Add a flag to dump email messages."
dfeb1184ebf6c59fc6e617149e03edb73b7e0df7 17-Mar-2010 Makoto Onuki <omakoto@google.com> Add a flag to dump email messages.

It's useful to debug MIME related problems.

- New MimeStreamParser.LOG_MESSAGE flag
- Cleaned up LoggingInputStream, which now supports all InputStream methods
(e.g. close, available, etc.) properly.
- LoggingInputStream now dumps non-printable ascii chars as '\xXX'.

Change-Id: I4391e125abd418defc1dc21e4f35cf6ef8448acb
om/android/email/UtilityUnitTests.java
0ed690bfb4fdfa86cb6f75c19e24b8ff39a1756c 16-Mar-2010 Marc Blank <mblank@google.com> Send meeting invite mail as multipart/alternative

* Turns out that Exchange 2003 requires the ics attachment to be in a
multipart/alternative, rather than a multipart/mixed MIME message
* Exchange 2007 accepts both types
* Therefore, we change our output for this particular situation, i.e.
a single attachment that is an ics file, to multipart/alternative
* Rename FLAG_SUPPRESS_CONTENT_DISPOSITION to FLAG_ICS_ALTERNATIVE_PART
and make this flag do double duty - 1) suppress the Content-Disposition
header (also required by Exchange) and 2) send the message as
multipart/alternative
* Add unit tests for Rfc822Output to check that mime parts are composed
properly

Bug: 2516394
Change-Id: I60e26f57b8ecaf01d0340e7828533334e0e7d45a
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
88a94bca1922615564e70a27bb6ae72bca487c75 16-Mar-2010 Makoto Onuki <omakoto@google.com> Exchange calendar: fixes for the ICS writer.

- Now SimpleIcsWriter does the UTF-8 conversion, and folds lines according
to the number of bytes in UTF-8.
- It now escapes special chars in TEXT values. You can safely put , ; \ or
line breaks. in summary, location, and description.
- Quotes all CN. (leftover from Ibb8f155a)
- Replace "s in CN with 's (rather than removing them)

Bug 2508283
Bug 2515768

Change-Id: Ibdced53ee32bba950608d63f507b11b24eaad7b0
om/android/email/UtilityUnitTests.java
om/android/exchange/utility/CalendarUtilitiesTests.java
om/android/exchange/utility/SimpleIcsWriterTests.java
bf916efe955e07aba2a5bce9eecae325f84d4934 16-Mar-2010 Marc Blank <mblank@google.com> Improve message text for invites w/ recurrences

* Add the (recurring) text when the invite is for a recurring
meeting
* Add a test for message text creation

Bug: 2515474
Change-Id: Ifefbc2ba1ac444175180cb7a58f4ec554d9674a3
om/android/exchange/utility/CalendarUtilitiesTests.java
befa974de8b74877b2f1ea97e672d3eb2067a6d9 15-Mar-2010 Marc Blank <mblank@google.com> Fix utility that retrieves tokens from RRULEs

* The utility wasn't handling commas properly, causing the referenced
bug
* Fixed the utility and updated the relevant test case

Bug: 2515488
Change-Id: Id229e50fcaaed1a0142db301eedaaba9209bed13
om/android/exchange/utility/CalendarUtilitiesTests.java
fc3fc5d26c1f0196d43974c4dcb27efba0b72174 15-Mar-2010 Makoto Onuki <omakoto@google.com> ICS Writer: Quote common name.

Quote common name (CN) in ATTENDEE per RFC 5545.

Bug 2510783

Change-Id: Ibb8f155a43cbe43886b903472489563242cb6771
om/android/exchange/utility/SimpleIcsWriterTests.java
20225d57609d6a5e482c088fdad60c29212d31a0 12-Mar-2010 Makoto Onuki <omakoto@google.com> Explicitly send ICS files in UTF-8.

- In memory attachments are now stored as byte[], not String.
We can store any type of contents now.
- Added blob content_bytes to the Attachment table.
The content field is now deprecated and not used.
- Explicitly convert ICS files to UTF-8.

- Added Utility.to/fromUtf8().

Bug 2509287
Change-Id: I3785a365a9a34039ec12ba82bd857dcdbc4de92d
om/android/email/TestUtils.java
om/android/email/UtilityUnitTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/exchange/utility/CalendarUtilitiesTests.java
82e51e06312c76f37900c7b1718af863caeff9af 10-Mar-2010 Marc Blank <mblank@google.com> Send email related to event exceptions

* We weren't sending out appropriate emails for exceptions and other
event updates
* Write exception specific ics file code in CalendarUtilities (in
the existing ics file creator)
* Send appropriate Update: subject for updated events/exceptions
* Compose simple message text consisting of:
When: <time>
Where: <location>
* Prepend message text for exceptions to indicate that the message
relates to a particular instance of the event:
This event has been canceled for: <date>
The details of this event have been changed for: <date>
* New strings were added in CL#44141
* Updated CalendarUtilities tests

Bug: 2501270
Change-Id: I920de8120bc56d5bd565cbde26ff4807be41579f
om/android/exchange/utility/CalendarUtilitiesTests.java
ff556f7b5f3dd36b6282cbd9acb8d1637f1fb121 11-Mar-2010 Marc Blank <mblank@google.com> Fix #2508283 (Improper wrapping of long text in ics attachments)

* Ignore CR and change LF into backslash + n
* Write unit test for handling of CRLF's
* Rename mLineCount to mColumnCount, which is more appropriate

Bug: 2508283
Change-Id: I8b2081aa474cb07b6cb09383ff6ac58a1dab1bba
om/android/exchange/utility/SimpleIcsWriterTests.java
319155a06124a590593f313980ab4de14dc5b619 11-Mar-2010 Andrew Stadler <stadler@android.com> Merge "Follow-up to MimeMessage efficiency improvements."
dfd53b0e821a6c48f128f62566066876a063fed6 11-Mar-2010 Andrew Stadler <stadler@android.com> Follow-up to MimeMessage efficiency improvements.

I missed a case where message-id should not be set locally, which is
the case where the Mime parser clears all headers *and* does not find
a message-id. The parsed MimeMessage should accurately reflect this.

In the old code, the local id was created at construction time and then
immediately discarded by the parser (calling headers.clear()).

In the new code, I was generating a message-id any time I couldn't find
one. Now, when explicitly cleared or removed, I set a boolean to inhibit
automatic generation of a new one.

I also missed the fact that a missing message-id no longer throws an
exception, it simply returns null, and so I changed the code that was
catching that exception to simply check for null.

(Note: Clearly, modeling of legacy behavior is becoming annoying here;
It would be better to do away with all of the automatic logic, and simply
generate message-id locally when appropriate: On locally-generated
messages. I don't want to touch this for the current release, but I left
a note in the code to this effect.)

Bug: 2504774
Change-Id: Ibfcbd2363c7ae39ee6d44e4c3295f88258cb4945
om/android/email/mail/internet/MimeMessageTest.java
69ade70f2d0857f4eadae97734ee8891e77895cb 08-Mar-2010 Makoto Onuki <omakoto@google.com> Log recent network activities when IMAP parser crashes.

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

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

Bug 2480227

Change-Id: I6b5a728a7df106627ec29bb3c7c04a97a99b444b
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/DiscourseLoggerTest.java
44552da606048720de11f89321dc767ef291c391 10-Mar-2010 Andrew Stadler <stadler@android.com> Reduce memory overhead in Message and MimeMessage

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

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

Side effect, should be faster too.

Bug: 2357564
Bug: 2093422
Change-Id: I8a873879d402e2662339d5398ad0b15da6e580e9
om/android/email/mail/internet/MimeMessageTest.java
94c6f4f84fc1bb04b7e5af644168490e5ffdefd5 09-Mar-2010 Makoto Onuki <omakoto@google.com> Fix failing EmailSyncAdapterTests.

Bug 2497978

Change-Id: If57099958b5e92e24f922e16f4b8d5fcc96ae163
om/android/exchange/adapter/SyncAdapterTestCase.java
62c76bcb2336bdc7bc0bcaf59e34937bd456dbc9 09-Mar-2010 Makoto Onuki <omakoto@google.com> Merge "Fix AccountSetupExchangeTests.testLoadFields()"
f3f15c12c93377a30682d0abe6fda88098d9c761 09-Mar-2010 Makoto Onuki <omakoto@google.com> Fix AccountSetupExchangeTests.testLoadFields()

This test has been failing since I60974b85, which is obviously correct,
so I modified the test.

Bug 2488770

Change-Id: I5a2eea19d9f3c3647b7c88a1e0db9297727b8e66
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/provider/ProviderTestUtils.java
fd249f61dd9c5fd1e7e0abffcb09b9e285d82bae 08-Mar-2010 Andrew Stadler <stadler@android.com> More work on account migration

* Split account copy loop to do POP3 accounts first, then IMAP
* After upgrading accounts, upgrade folders
* Upgrade messages in those folders
* Preserve attachments on outgoing messages (e.g. drafts)
* Enable composer and start syncing after upgrade
* Fix latent bug in LocalStore (which was not used in Eclair)
* Add tests for upgrade workers in LegacyConversions

Bug: 2065528
om/android/email/LegacyConversionsTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
c133e6f1858e33fabaa6ffa173c1402bf9a98e31 06-Mar-2010 Makoto Onuki <omakoto@google.com> Fix for Account.isValidId() crash when getting -1.

Bug 2493026
om/android/email/provider/ProviderTests.java
989552c10744e2d7f8fca1bdb2baef5273a8a0b9 02-Mar-2010 Mihai Preda <preda@google.com> Move parseDateTimeToMillis() to com.android.email.Utility.
om/android/exchange/utility/CalendarUtilitiesTests.java
a3cfdd2f3c2ae0ec2f9a675bd4c43c939f57a49f 04-Mar-2010 Andrew Stadler <stadler@android.com> Merge "Continuing work on account migration"
9f73249031303856670651305adff255a00918b7 04-Mar-2010 Andrew Stadler <stadler@android.com> Continuing work on account migration

* Prune all folders, messages & attachments that won't migrate
* Clean up SSL/TLS values for better connection results & security
* Move account setup lookup code to AccountSettingsUtils to share it
* Cleanup config/auto-rotation settings to prevent relaunch of
auto-discover or account check (from exchange).
* A couple of other very small fixes

Bug: 2065528
om/android/email/VendorPolicyLoaderTest.java
652be6fb3d04a4ceba6b765cd3160cdaef9e6107 03-Mar-2010 Makoto Onuki <omakoto@google.com> MessageList: Go to Welcome if account not found.

If the account specified with an Intent doesn't exist, show the Welcome
activity instead, which will navigate the user to the appropriate activity.
(e.g. account list if there're more than one account)

Bug 2479609
om/android/email/provider/ProviderTests.java
678ab2c780114a935b4802a69e4852956503c2e4 04-Mar-2010 Makoto Onuki <omakoto@google.com> Merge "Store UUID instead of _id in desktop shortcuts."
e37881aac562c066e6e666349749e40b7c116a21 02-Mar-2010 Makoto Onuki <omakoto@google.com> Store UUID instead of _id in desktop shortcuts.

- Because AccountBackupRestore won't preserve _id.
- Now MessageList accepts both Donut(1.6)-style URIs and Eclair(2.0-2.1)-style
URIs.

Bug 2479609
om/android/email/provider/ProviderTests.java
6c8b1ec088a1276ef5e18dd7137e18eb141dc5ac 03-Mar-2010 Marc Blank <mblank@google.com> More unit tests related to meeting-related emails

* Included is a (nearly complete) VCALENDAR parser that is
used to verify the contents of the ics attachments we create
* Added a test for meeting invitation
* More to come (always)

Change-Id: I31eeac66eb635f443c85aacf56e67a943cc3d53b
om/android/exchange/utility/CalendarUtilitiesTests.java
4577f71f76c94dc9fcb06efd2656970925dd3f6a 27-Feb-2010 Marc Blank <mblank@google.com> Refine meeting invitation emails; include VTIMEZONE

* VTIMEZONE blocks must be sent in our ics files for meeting
invitations that are recurring, as the originator's time zone
is critical in making attendee's calendars accurate
* Created a utility to convert TimeZone to VTIMEZONE data; the
utility successfully generates data (including recurrence rules)
for the entire tzinfo database (the source of TimeZone).
* Updated our ics files to include VTIMEZONE when appropriate and
send DTSTART/DTEND in local time in that case
* Wrote some unit tests, but more are needed

Change-Id: Iccbdd00cd3b2be2da058b344ebacd17ed6fb0e3d
om/android/exchange/utility/CalendarUtilitiesTests.java
726a9fcef3963d8b6f09105e802a8377fbdb567a 24-Feb-2010 Makoto Onuki <omakoto@google.com> Ignore FETCH responses that don't have UID.

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

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

Bug: 2441065
om/android/email/mail/store/ImapStoreUnitTests.java
c18f8f615f134a2b391d06e2d8d49434a8bb94e5 24-Feb-2010 Makoto Onuki <omakoto@google.com> Enable calendar sync for Exchange accounts when upgrading.

On the first boot after upgrade from Eclair, enable calendar sync for all the
existing Exchange accounts, if any, and show notification.

Note on this version, nothing happens when you click on the "Calendar added"
notification. We're waiting for an API (action or something) to launch
calendar.

Bug 2428718
om/android/email/AccountTestCase.java
om/android/exchange/CalendarSyncEnablerTest.java
om/android/exchange/SyncManagerAccountTests.java
cb95fbe13554ee6b4e46d9fd3bcd983e09a688cb 26-Feb-2010 Andrew Stadler <stadler@android.com> Send CAPABILITY to all IMAP servers

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

Bug: 2332183
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
5bdff23a560881a959f4abe7109a7250e49a761d 25-Feb-2010 Makoto Onuki <omakoto@google.com> Merge "Refactored out Account related methods into a new base class."
5570bc1570bbe2be07d8732dd0d2f074f383bacf 25-Feb-2010 Makoto Onuki <omakoto@google.com> Refactored out Account related methods into a new base class.

These will be useful for other tests too, and I'm planning to use some.
om/android/email/AccountTestCase.java
om/android/exchange/SyncManagerAccountTests.java
89be77eaea65211fea0ca32efd538318c7e049b3 23-Feb-2010 Marc Blank <mblank@google.com> Send replies to exchange meeting requests

* When the user selects accept/decline/tentative in MessageView, we now send
an email to the organizer, with an iCalendar attachment indicating the reply
* Added a unit test for the reply case, but more tests to be added to handle
other circumstances

Change-Id: Iff799d88a92b6546735bf4965b22febf3a82b56f
om/android/exchange/utility/CalendarUtilitiesTests.java
1f4b1b3bd179bb24a477d6701058af74010c926c 23-Feb-2010 Marc Blank <mblank@google.com> Fix bugs in SimpleIcsWriter

* Guilty of failing to run the unit tests
* Fix the (obvious) issues

Change-Id: If12e02facce768ca2d410320bea68a2ca2c116c6
om/android/exchange/utility/SimpleIcsWriterTests.java
3b97e1769a623d6eef59981e7ab6193962e90e1a 23-Feb-2010 Marc Blank <mblank@google.com> Merge "Fix #2443881 (Don't display User name field for EAS account)"
18d7222359ac54a5fa788b4a8bb8d58ee16f152b 21-Feb-2010 Marc Blank <mblank@google.com> Send meeting invitations for new/updated Exchange events

* Wrote utility to create an ics file (iCalendar) based on a
CalendarProvider Event. This is a good first pass, but we need
to consider whether to include alarms, etc.
* Use aforementioned utility and new convenience method to send
meeting invitations to attendees of newly created meetings (events)
when they are uploaded to the server via the CalendarSyncAdapter
* Overall, attempted to modify existing provider and rfc822 output
code as little as possible. Rfc822Output is actually very limited
in its capabilities and should be made more robust in future

Change-Id: Ie20b9137df56dc414de6737d05fa40ec9cdf47e0
om/android/exchange/utility/SimpleIcsWriterTests.java
5afa18779138e08d6e6cce8b5f428475f8a0b4b1 23-Feb-2010 Andrew Stadler <stadler@android.com> Create a PackedString utility class

* We can use this for meeting request information which will start out with
one or two pieces of information, but might grow in the future.
* Binary compatible with Address.pack() format, so we can eventually
combine code.
om/android/email/mail/PackedStringTests.java
35e5885e9e0728c0a3a69d7fd93600d008bd7c10 22-Feb-2010 Andy Stadler <stadler@google.com> Merge "First part of Exchange meeting request/reply implementation"
3aaba9eb87db34ea0861d70d5c08f84d7ca97ab0 22-Feb-2010 Andrew Stadler <stadler@android.com> First part of Exchange meeting request/reply implementation

* Added two columns to Attachment in EmailProvider
content: content that is written directly as an attachment
suppressDisposition: to suppress the content-disposition header
All meeting invitation emails use these two columns; the first
for ics attachment data (which is quite small, rarely over 1k),
and the second to indicate NOT sending the content-disposition
header; without this, Exchange will consider the ics as an
attachment rather than an iMIP style message (rfc2447)
* Modified tests to include these columns; added upgrade code for
new database version
* New columns and code are designed to be usable outside Exchange,
although there are no other clients of the code at this point.
* Modified Rfc822Output to use the content field, if present, in
lieu of retrieving attachment data via URL; added support for
suppressing the Content-Disposition header
om/android/email/provider/ProviderTestUtils.java
988981a9ad158deed148711fa6ab92c7760d23a1 22-Feb-2010 Makoto Onuki <omakoto@google.com> Follow up to I07496942.

- Now that reconcileAccountsWithAccountManager() is static, we don't need to
instantiate SyncManager.

- Don't need to set mResolver. reconcileAccountsWithAccountManager() doesn't
use it.
om/android/exchange/SyncManagerAccountTests.java
5b46171b83d6a92d6cc84db24fb8815d4f8aa50c 20-Feb-2010 Marc Blank <mblank@google.com> Fix #2443881 (Don't display User name field for EAS account)

* Make the field and label GONE for EAS accounts
* Enable the "Done" button at all times for EAS accounts
* Add test case for this, and clean up bad formatting in tests

Bug: 2443881
Change-Id: Ic80b001e443fa37b7cfeb810b1f31edf22b065b9
om/android/email/activity/setup/AccountSetupNamesTests.java
de7d21c10a6e829dae1b3a00618b871313d5a433 20-Feb-2010 Andrew Stadler <stadler@android.com> Fix various problems with SyncManagerAccountTests

1. Destructive of existing user accounts in device
2. Can get confused (miscounting) due to existing user accounts
3. Cleaned up use of context and mock context
4. Disallow account backup and account security updates when testing
5. Make account manager removeAccount() calls blocking, so the test
does not proceed until the accounts are really deleted.

Bug: 2454870
om/android/exchange/SyncManagerAccountTests.java
d6d843a10b94ed2fa77a69753096690e47a120b2 19-Feb-2010 Makoto Onuki <omakoto@google.com> Don't use hardcoded package name.

Bug 2454892
om/android/email/VendorPolicyLoaderTest.java
1575e7860d2259f1aed201ab23d526cddf787365 15-Feb-2010 Mihai Preda <preda@google.com> MessageCompose: fix delete quoted on reply/forward for EAS.

Also fix display of quoted html text for a draft (Exchange 2007).

Bug 2363249
Bug 2444496
om/android/email/provider/ProviderTests.java
af55e3e436991fde91cdc80efe2786eb8f509d15 16-Feb-2010 Andrew Stadler <stadler@android.com> Respond to loss of device admin status

If the user revokes device admin status, reset our internal state and
the state of any accounts that might have been depending on it. This
halts syncing immediately and rewinds the security/provisioning state
of any such accounts to a known state (as if the account had just been
created.)

Bug: 2387961
om/android/email/SecurityPolicyTests.java
70859ecb4e8291e071c40689a2ee9f2cec4b400c 16-Feb-2010 Marc Blank <mblank@google.com> Merge "Add meetingInfo column to Message; use for meeting invites"
4006e5fc224d097450fd66a321901b6636f7d9c4 16-Feb-2010 Marc Blank <mblank@google.com> Add meetingInfo column to Message; use for meeting invites

* Added a meetingInfo column to the Message database
* When a meeting invite is received, the start time is stored here
in ms from start of epoch. Note that this field is defined to be
a String, for extensibility
* Update ProviderTests

Change-Id: If44892d27ccc5ebdc1f8667befafb8b8a27a2cf4
om/android/email/provider/ProviderTestUtils.java
om/android/exchange/utility/CalendarUtilitiesTests.java
83457b0235b8a13e2d885d5b7550784ad470bb9c 12-Feb-2010 Makoto Onuki <omakoto@google.com> Preparing for renaming package.

- Made tests use the new package-name-free constructor of ActivityInstrumentationTestCase2.

Bug 2226160
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageListUnitTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
d0377b8bb3a837d0f92d3483a72ec2d5a086fabe 16-Feb-2010 Marc Blank <mblank@google.com> Merge "Add support for Exchange 2003 provisioning"
ea0aa9343eb3de7e6cb1c6e1c8827b34ca244882 11-Feb-2010 Marc Blank <mblank@google.com> Add support for Exchange 2003 provisioning

* Provisioning for Exchange 2003 and Exchange 2007 now supported
* Added end-to-end test of Exchange 2003 provisioning parser

Change-Id: I1f86f2909351a8220b963551cd33fecdf59a7e26
om/android/exchange/adapter/ProvisionParserTests.java
cf7581c51c39aad1e8e955bfde62335871a7fd29 15-Feb-2010 Marc Blank <mblank@google.com> Add support for UNTIL in recurrences

Change-Id: I983e1bcb209e794b462ec43efaccefe95bf9bd9d
om/android/exchange/utility/CalendarUtilitiesTests.java
c1cea617cc6fa1e4525af3b81a9bc5f2813f57c4 14-Feb-2010 Satoshi Kataoka <satok@google.com> Merge "Add Signature to Email Composer"
672ffc00009dff5824cca775c37fc69c535f5eda 13-Feb-2010 Marc Blank <mblank@google.com> Merge "Handle calendar sync state changes by observing Calendars; cleanup"
694257cb7e7a191b3314cb209b6c38a8a07583ef 12-Feb-2010 Marc Blank <mblank@google.com> Handle calendar sync state changes by observing Calendars; cleanup

* Use a content observer to detect changes in Calendars; we use this to
determine whether or not sync has been turned off. If sync is turned
off, all events will be deleted, so we need to reset the sync key
* Make sure that all code working on Contacts also now works on Calendar
(push, etc.)
* Remove some old crufty logging and out-of-date comments
* Addresses 2433061

Bug: 2433061
Change-Id: I6299168903fcce9bf820b72b5f6bb157d9169653
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
2a41aa538fe682b1f5dc1dff1ebe3a81c6644193 04-Feb-2010 satok <satok@google.com> Add Signature to Email Composer

Bug: 1323618

- Add signature to the message
- Set selection just after the message
- Add tests for signature
om/android/email/activity/MessageComposeInstrumentationTests.java
ba714999f24697161f1ecd68199c3b330ea64ab9 10-Feb-2010 Doug Zongker <dougz@android.com> finish replacing Email's base64 implementation with android-common

Change-Id: I19adbbb884311d70073e9f7a961aa6808ac0dfb4
om/android/email/codec/binary/Base64Test.java
a8d44824c38e7f08a960afacf961edd0a97ba4d1 11-Feb-2010 Marc Blank <mblank@google.com> Fix #2438451 (NPE's in Exchange tests)

Bug: 2438451
Change-Id: I8b861a859ae827fdfd3a0a13becfc1a3737cea4c
om/android/exchange/adapter/EmailSyncAdapterTests.java
961ee151fcb7451cd17c79effdb356a5a35d547e 10-Feb-2010 Makoto Onuki <omakoto@google.com> Adding more tests for MimeMessage.

Added 2 tests to make sure the parse won't crash with invalid header.

Bug: 2258519
om/android/email/mail/internet/MimeMessageTest.java
673169fac9301c52bf542b14f75d4cbdcbe66e6c 09-Feb-2010 Marc Blank <mblank@google.com> Release security holds based on flags; implement remote wipe

* When the UI indicates that security policies for a particular
account are now in force and releases the security hold (a bit
in the Account flags), we release any syncs that had been
waiting due to security errors
* Clean up code related to sync holds
* Add unit test for sync hold release
* Add support for server-directed remote wipe

Change-Id: I6209f75e4b57c850ae1ac27f407630c9c740514f
om/android/exchange/SyncManagerAccountTests.java
2a5eeea9213005060256054ec773e72406415ce4 09-Feb-2010 Andrew Stadler <stadler@android.com> Adding security hold flag to accounts

* Add hold flag to Account flags
* Add code to set it (when EAS reports policy failure)
* Add code to clear it when we see changes from the device admin side
* unit tests

This should be sufficient to restart sync of an account which is on hold
due to security policy requirements. Note, this is considered a "retry",
and if the account still does not meet requirements for some reason, it
is expected that EAS sync will call policiesRequired() again.
om/android/email/SecurityPolicyTests.java
3d2b3b3b3554be2ac23d9a49fee00faa9693e857 05-Feb-2010 Andrew Stadler <stadler@android.com> Logic to move phone into security-admin mode

* Create notification to display when syncs fail due to security
* Create psuedo-activity (no UI) to manage device admin state transitions
* Clean up and flesh out SecurityPolicy APIs'
* Add placeholders in EasSyncService showing how to react when policies
are not met and sync cannot continue.

Note: There are some STOPSHIP todo's at the top of SecurityPolicy.java.
These should explain any code that you might think is "missing".
om/android/email/SecurityPolicyTests.java
7c6c1fd5196bfc2c76e8eb71369b0accee0746b2 03-Feb-2010 Marc Blank <mblank@google.com> Merge "Build proper TimeZoneInformation strings for upsync; fix bugs"
6f3013b78708321879728c28db044ab233cb2016 03-Feb-2010 Marc Blank <mblank@google.com> Build proper TimeZoneInformation strings for upsync; fix bugs

* Create full TZI strings for upload of events (previously, we
omitted DST information)
* Add documentation to some unit tests
* Put in correct logic for determining if upload needed
* Fix problem w/ parsing empty tags

Change-Id: I268ce8a2db30b3cfdf0e44f6a78befd6bd933243
om/android/exchange/utility/CalendarUtilitiesTests.java
91237e9dcb0a948f17488b464edabcea0f259d31 03-Feb-2010 Makoto Onuki <omakoto@google.com> Adding script for building Email app without exchange.

remove-exchange-support.sh makes it possible to build the email app without
exchange support.

This script:
- removes all packages under com.android.exchange.
- removes all lines surrounded by EXCHANGE-REMOVE-SECTION-START and
EXCHANGE-REMOVE-SECTION-END

And the resulting source should still build and run fine.

Bug: 2369784
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
8bb0ee3b924f6b0e948733dacac3228f88bd50dc 03-Feb-2010 Andrew Stadler <stadler@android.com> Fix auto-discover / account verification logic

New behavior:
* There are two primary paths through this activity:
* Edit existing:
* Load existing values from account into fields
* When user clicks 'next':
* Confirm not a duplicate account
* Try new values (check settings)
* If new values are OK:
* Write new values (save to provider)
* finish() (pop to previous)
*
* Creating New:
* Try Auto-discover to get details from server
* If Auto-discover reports an authentication failure:
* finish() (pop to previous, to re-enter username & password)
* If Auto-discover succeeds:
* write server's account details into account
* Load values from account into fields
* Confirm not a duplicate account
* Try new values (check settings)
* If new values are OK:
* Write new values (save to provider)
* Proceed to options screen
* finish() (removes self from back stack)
* Added unit test for new loadFields method

Bug: 2412300
om/android/email/activity/setup/AccountSetupExchangeTests.java
049509d10edc97eb2439ecae24445c526ba4cfef 02-Feb-2010 Makoto Onuki <omakoto@google.com> Merge "Move Eas.ACCOUNT_MANAGER_TYPE out of the package."
0434fef1f6706a0a6fc53b499f3e982f70d7142d 02-Feb-2010 Andrew Stadler <stadler@android.com> Fix crash in VendorPolicyLoader

* Create unit test to reproduce crash
* Fix handling of empty bundle (the default return value)
* Clean up some exception handling in the policy module loader, which
reduces some unneeded logging.

Bug: 2413388
om/android/email/VendorPolicyLoaderTest.java
cfbbb99c67ce20863998b4b0941303820723c18d 02-Feb-2010 Marc Blank <mblank@google.com> Merge "Handle upsync of multiple BYDAY values; add some unit tests"
d62860821c2dbc14ab493b888cb129bd5addd53d 02-Feb-2010 Andrew Stadler <stadler@android.com> Additional SecurityPolicy functionality

* Begin wiring into system DevicePolicyManager requirements
* Semi-real implementations of isSupported() & isActive()
* Added new API (placeholder) updatePolicies()
* Updated existing unit tests as needed

Bug: 2387961
om/android/email/SecurityPolicyTests.java
a8259394596eda7aed2b9edfdb30ff03c34acb66 02-Feb-2010 Marc Blank <mblank@google.com> Handle upsync of multiple BYDAY values; add some unit tests

Change-Id: If3be28df41ed88cb83edca2f6ea6ca1f734f506f
om/android/exchange/utility/CalendarUtilitiesTests.java
ecb1af804144689d4ead96a247b565f9b4eb8160 02-Feb-2010 Andrew Stadler <stadler@android.com> Finish up IMAP ID implementation

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

Bug: 2332183
om/android/email/VendorPolicyLoaderTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
faed6178b1858f0e6df388a409d14fb3f94afefa 02-Feb-2010 Makoto Onuki <omakoto@google.com> Move Eas.ACCOUNT_MANAGER_TYPE out of the package.

Moved Eas.ACCOUNT_MANAGER_TYPE to Email.EXCHANGE_ACCOUNT_MANAGER_TYPE.

This constant is not related to the exchange protocol, and referred in
a lot of different places. Moving it out of the package will make it a lot
simpler when removing exchange dependency.
om/android/exchange/SyncManagerAccountTests.java
f3fcb8929e3690bc092aec0d4d643b346f079acd 29-Oct-2009 Marc Blank <mblank@google.com> Implement Exchange calendar sync support

What should be working:
* Events sync down from server and appear in calendar
* Recurrences and exceptions appear in calendar
* Changed events on server should be reflected in calendar
* Deletions on server should be reflected in calendar
* Push of new/changed/deleted events should work
* Changes on device are NOT synced back to server
* New, single events on device are synced back to server
(no time zone, attendee, or recurrence support)
* Checkbox for syncing calendar added to setup flow
* System sync glue in manifest, etc.
* Bugs are to be expected
* A few unit tests; needs more

Change-Id: I7ca262eaba562ccb9d1af5b0cd948c6bac30e5dd
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/adapter/CalendarSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
om/android/exchange/adapter/SyncAdapterTestCase.java
om/android/exchange/utility/CalendarUtilitiesTests.java
f98ffb6f44068299a57b83bf1c3067d5afd9427f 28-Jan-2010 Makoto Onuki <omakoto@google.com> Merge "Add "vendor policy" loader, and alternate exchange descriptive text."
f613489663cdc5df71b029dfcec5fd3c5173a549 27-Jan-2010 Makoto Onuki <omakoto@google.com> Add "vendor policy" loader, and alternate exchange descriptive text.

- Dynamically switch to the alternate exchange strings to substitute overlays.
- Added the mechanism to load the "vendor policy", which tells you when the
alternate strings should be used.

Bug: 2382710
om/android/email/VendorPolicyLoaderTest.java
d423fb996f7836bb8d8439bab36798669a809fc3 28-Jan-2010 The Android Open Source Project <initial-contribution@android.com> am 08d92ebf: merge from open-source master

Merge commit '08d92ebf4722e45216ee225775a3b86f9ceecc0d'

* commit '08d92ebf4722e45216ee225775a3b86f9ceecc0d':
Trim the mime type portion of Content-Type.
46199c65a357de63ae2899b90d5e0b70a1b7421f 27-Jan-2010 Marc Blank <mblank@google.com> Fix #2382368 (NPE in AccountSetupExchangeTests)

* AccountSetupExchange defaultly tries using EAS AutoDiscover, which isn't
appropriate in the unit test setting
* Add an Intent extra to disable AutoDiscover and use it in unit tests

Bug: 2382368
Change-Id: I3d4e8d7194b02da44ad583da0cf2fe60ffb19311
om/android/email/activity/setup/AccountSetupExchangeTests.java
345fb8b737c1632fb2a7e69ac44b8612be6237ed 27-Jan-2010 Andrew Stadler <stadler@android.com> Add utilities for processing account security policies

* Add security sync key & signature columns
* Add utilities for easy read/write of security columns
* Write aggregator for multiple accounts
* Simple API's for exchange security (very preliminary)
* Unit tests of above

Bug: 2387961
om/android/email/LegacyConversionsTests.java
om/android/email/SecurityPolicyTests.java
om/android/email/provider/ProviderTestUtils.java
468371917e68bfcb8f364f9b837754e5874a6647 26-Jan-2010 Andrew Stadler <stadler@android.com> IMAP ID

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

Bug: 2332183
om/android/email/mail/store/ImapStoreUnitTests.java
08d92ebf4722e45216ee225775a3b86f9ceecc0d 21-Jan-2010 The Android Open Source Project <initial-contribution@android.com> merge from open-source master
fc8d943a828cd79ff71c703ced37001bd5482173 21-Jan-2010 Andrew Stadler <stadler@android.com> Add security column to Account

* Upgrade accounts table to add security column
* Read/Write new column
* Backup/Restore new column
* Unit tests for all of the above
* First cut at defining bitfields (non-binding, just putting down ideas)

Bug: 2387961
om/android/email/AccountBackupRestoreTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/provider/ProviderTestUtils.java
2517a3dfd15a4bdb01677fd1ed6a63645eaad3f7 08-Dec-2009 Patrick Horn <patrick.horn@gmail.com> Trim the mime type portion of Content-Type.

Fixes parsing of Content-Type headers like "text/plain ; charset=iso-8859-1"
Added unit tests for whitespace and the charset parameter
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
346a0cc1e00fcfde05df66eb37433172c96b1c36 21-Jan-2010 Andrew Stadler <stadler@android.com> Backup/Restore accounts - bugfix - DO NOT MERGE

* Followup to 85d765f4
* Workaround for (HTC bug: 2275383) & (Moto bug: 2226582)
* Restores mSyncKey as null instead of empty string, which is how
a new account is initialized. Bug: 2385980
* Cleanup synchronized logic in backup & restore
* Minor cleanups & improved comments

Cherry-picked from master d612717340b2670776a75a1d2e9e3df81fd4c052
om/android/email/AccountBackupRestoreTests.java
om/android/email/LegacyConversionsTests.java
d612717340b2670776a75a1d2e9e3df81fd4c052 21-Jan-2010 Andrew Stadler <stadler@android.com> Backup/Restore accounts - bugfix

* Followup to 5e91cccd
* Workaround for (HTC bug: 2275383) & (Moto bug: 2226582)
* Restores mSyncKey as null instead of empty string, which is how
a new account is initialized. Bug: 2385980
* Cleanup synchronized logic in backup & restore
* Minor cleanups & improved comments
om/android/email/AccountBackupRestoreTests.java
om/android/email/LegacyConversionsTests.java
85d765f41c20e6efb3b120055eb4f1efae166e8b 20-Jan-2010 Andrew Stadler <stadler@android.com> Quick backup/restore of accounts DO NOT MERGE

* Workaround for (HTC bug 2275383) & (Moto bug 2226582)
* Adds checkpoints for backing up and restoring accounts
* Uses legacy Account / prefs to back up accounts - this is because
some of this code will be reused for legacy account migration
* Unit tests of Account & LegacyConversions
* Unit tests of backup & restore
* Not done: testing of EAS/Account Manager interface (this will require
deeper dependency injection, to avoid the embedded calls to the Account
Manager and other system services.)

Cherry-picked from master 5e91cccd4b530eb2aeace5c5bf4f3328a5b5d69d
om/android/email/AccountBackupRestoreTests.java
om/android/email/AccountUnitTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/PreferencesUnitTests.java
5e91cccd4b530eb2aeace5c5bf4f3328a5b5d69d 20-Jan-2010 Andrew Stadler <stadler@android.com> Quick backup/restore of accounts

* Workaround for (HTC bug 2275383) & (Moto bug 2226582)
* Adds checkpoints for backing up and restoring accounts
* Uses legacy Account / prefs to back up accounts - this is because
some of this code will be reused for legacy account migration
* Unit tests of Account & LegacyConversions
* Unit tests of backup & restore
* Not done: testing of EAS/Account Manager interface (this will require
deeper dependency injection, to avoid the embedded calls to the Account
Manager and other system services.)
om/android/email/AccountBackupRestoreTests.java
om/android/email/AccountUnitTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/PreferencesUnitTests.java
2cb9c55f3b71034be96c9a8669bcb68d3e7c4fe3 23-Dec-2009 Marc Blank <mblank@google.com> Add new tests for Email sync parsing

Change-Id: Ib3be60b5f439f79f62f62eff607673e34c75506d
om/android/exchange/adapter/EmailSyncAdapterTests.java
e2ddc55ed008bbcc77ddb22cc193a4e6eb946ff2 06-Jan-2010 Mihai Preda <preda@google.com> MessageView: fix rename next/prev in landscape.

Bug 2353633.
om/android/email/activity/MessageViewTests.java
608ca667b25e6107d20bf2fac8243a42abfad719 04-Dec-2009 Marc Blank <mblank@google.com> Don't delete referenced messages from the Exchange server DO NOT MERGE

* Addresses #2287439 incompletely
* The most likely reason for a reply/forward to get stuck in the Outbox
is that the referenced message has been deleted from the client, with
the deletion occuring BEFORE the message gets sent (currently, the two
are completely independent)
* This change causes deletes NOT to be sent to the server if the message
to be deleted is referenced by an outgoing message

Change-Id: Iad3777282385bea82276f363d6f95ba8b07cc01c
om/android/exchange/EasEmailSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
e312c12b748e9984715295b71e95c90ee8d3d3bd 11-Dec-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I356b8bfa into eclair-mr2

* changes:
Deal with mismatch between our accounts and AccountManager accounts
423680653a91d6f0cd9a8bcd074dc3cf0cfa03a4 04-Dec-2009 Marc Blank <mblank@google.com> Deal with mismatch between our accounts and AccountManager accounts

* Addresses #2226426
* Recognize the case in which there is no EmailProvider Account corresponding
to an AccountManager account (the case being addressed is that of the
EmailProvider database being deleted due to corruption
* In this case, delete the AccountManager account so that the two are in
sync
* Refactor and add unit test for account reconciliation

Change-Id: I356b8bfaa0846f85223cc15994b750df207a63ea
om/android/exchange/SyncManagerAccountTests.java
3c1334ae1f6769b55e4728341ef4c2ae3acb9b90 10-Dec-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I915b13a6 into eclair-mr2

* changes:
Fix MessageListUnitTests
7a4b1c72f6f2e8395dd67af4b00f9f1c1efbb97b 08-Dec-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I146f63ab into eclair-mr2

* changes:
Don't delete referenced messages from the Exchange server
c29e435eb3a1b42b7bd8ddfe2d9d72b140c69928 04-Dec-2009 Marc Blank <mblank@google.com> Don't delete referenced messages from the Exchange server

* Addresses #2287439 incompletely
* The most likely reason for a reply/forward to get stuck in the Outbox
is that the referenced message has been deleted from the client, with
the deletion occuring BEFORE the message gets sent (currently, the two
are completely independent)
* This change causes deletes NOT to be sent to the server if the message
to be deleted is referenced by an outgoing message

Change-Id: I146f63ab345c07e684790e1d7d1fc08870468bbf
om/android/exchange/EasEmailSyncAdapterTests.java
om/android/exchange/adapter/EmailSyncAdapterTests.java
0e1595c177e40428b267a8696dfc05d015ce6a2f 19-Nov-2009 Marc Blank <mblank@google.com> Handle unexpected deletion of EmailProvider database

* Addresses #2226426
* If the user deletes Email data, or if data corruption causes
EmailProvider.db to be deleted, we will be in an inconsistent
state with any existing Exchange accounts, since the AccountManager
will still know about them, contacts (and eventually calendar) items will
continue to exist, etc.
* Run an integrity check when the provider is created, deleting any
orphaned EmailProvider.db or EmailProviderBody.db
* Catch SQLiteException's in the Provider and do an integrity check
if any is caught

Change-Id: I47d523b90a6b8f71ba8e13fba4b04846b3da1b1d
om/android/email/provider/ProviderTests.java
3d00377b356631f555e3938bf63d7c5c292e505a 07-Dec-2009 satok <satok@google.com> Fix MessageListUnitTests

This is supperement of change,33265

* Move custom cursor to inner static class
* Change public to /* package */
* Move PROJECTION to a package
om/android/email/activity/MessageListUnitTests.java
4cb25d93a23d086b954c03cb72afb2cf0248f1c4 16-Nov-2009 satok <satok@google.com> Save the state of checkboxes when orientation is changed

BUG: 2239516

* Add tests for save/restore Instance State
om/android/email/activity/MessageListUnitTests.java
56e48981f0093c737b38b7757410283be9ed823f 13-Nov-2009 Jean-Baptiste Queru <jbq@google.com> eclair snapshot
om/android/email/AccountUnitTests.java
om/android/email/ControllerProviderOpsTests.java
om/android/email/GroupMessagingListenerUnitTests.java
om/android/email/LegacyConversionsTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/MockFolder.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/AttachmentProviderTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/exchange/EasEmailSyncAdapterTests.java
om/android/exchange/EasSyncServiceTests.java
om/android/exchange/TagsTests.java
9abd1bf9dabbf5f55b0f84a61d61b031250154bc 29-Oct-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change I21052e28 into eclair-mr2

* changes:
Controller: modify the test for "attachment already loaded".
6bb7c7248af1057eaf6f672be03bc46c8d03472d 19-Oct-2009 Mihai Preda <preda@google.com> MessageView: disable reply&forward for Trash messages.

Bug 2170118
om/android/email/activity/MessageViewTests.java
9ef6f645f57d869a600113f555389b5d5e368c21 17-Oct-2009 Mihai Preda <preda@google.com> Controller: modify the test for "attachment already loaded".

Bug 2192510.

update unit test.
om/android/email/provider/AttachmentProviderTests.java
ef83299b99288c00b9d661260d19715e73e6889c 14-Oct-2009 Marc Blank <mblank@google.com> Clear out orphaned messages in updates/deletes tables

Case #1:
* Fixes #2184702
* Messages can be in the base Messages table, but also in
Message_Deletes and Message_Updates; the latter two were not
being purged of deleted messages.
* This CL deletes from all three tables when a Mailbox is deleted
* Also run a check for orphaned deletes/updates when the email
provider's db is first opened
* Unit test updated to check for proper deletion
* Unit test for the provider check for orphans

Case #2:
* Fixes #2184708
* Messages in Outbox/Drafts can get modified or deleted, but the
rows added to the updates/delete tables never get removed because
the boxes don't sync
* Added code to SyncManager.ping (which gets notifications of these
changes) to delete these rows

Change-Id: Ib53e441136b0da1e88bc220150d631999058a8f0
om/android/email/provider/ProviderTests.java
53123c2f914db357fa5b4a8451b23c6be77314a5 14-Oct-2009 Andrew Stadler <stadler@android.com> DO NOT MERGE. Prevent duplication of POP3 attachments

* For each attachment we add, check the DB for an existing attachment
with similar metadata (name, mime type, content id, etc.)
* Skip adding them if already held
* Unit tests

Originally fixed in 5b0a12c1991988 / CL I036f39c6

Fixes bug http://b/2084704
om/android/email/LegacyConversionsTests.java
5b0a12c199198870161876996296b1262c17408e 14-Oct-2009 Andrew Stadler <stadler@android.com> Prevent duplication of POP3 attachments

* For each attachment we add, check the DB for an existing attachment
with similar metadata (name, mime type, content id, etc.)
* Skip adding them if already held
* Unit tests

Fixes bug http://b/2084704
om/android/email/LegacyConversionsTests.java
dfee3ff278c4f5d9f7b8273c0e6ecab42585213e 08-Oct-2009 Andrew Stadler <stadler@android.com> Fix a crash when you scroll MessageList to junk @ bottom

* Add missing reference to spam/junk folder icon
* Unit tests for Utility.FolderProperties.getIconIds()

Fixes http://b/issue?id=2173907
om/android/email/UtilityUnitTests.java
b6756688b1bf07c50b999c9d30dd6cb224d3812b 07-Oct-2009 Andrew Stadler <stadler@android.com> Handle IMAP empty bodies more safely

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

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

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

Change-Id: Ifb8fb0ed5ce7297908e1ae8d5a02dda5975c4a3c
om/android/email/LegacyConversionsTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
eb7752bf695b2a93854e0bb89ddbbc2236bb9aea 06-Oct-2009 Andrew Stadler <stadler@android.com> Fix back-to-back message-id bugs

* MessageCompose now adds message-id to new messages (it was previously
done on its behalf by MimeMessage).
* LegacyConversions.updateMessageFields() now handles missing message-id
without error.
* Unit tests for the LegacyConversions change

These two issues were combining with a failure of comcast's SMTP server
to insert message-id headers, to prevent delivery of a message between
any two comcast accounts using this client.

Bug # http://b/issue?id=2161478
om/android/email/LegacyConversionsTests.java
71754d3f940fe82e251c274e3e56781e702cfd6f 01-Oct-2009 Andrew Stadler <stadler@android.com> Delete attachments when necessary, don't leak disk space

* Add AttachmentProvider.deleteAllMailboxAttachmentFiles
* Call it when server deletes a mailbox
* Confirmed (no change) all message deletes call deleteAllAttachmentFiles
* Unit tests of course :)

Bug # 2069004

Change-Id: I99731e6489fdca4cc9cebdff5fcf9c09d12b7b3a
om/android/email/provider/AttachmentProviderTests.java
e4a7cc440f081ef9c4375a2bd2f82680cc11b152 30-Sep-2009 Andrew Stadler <stadler@android.com> Re-enable modernized version of "optional" SSL/TLS

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

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

Change-Id: Iaf99a8da3eaadaa4cdeec224737838b5d6813e55
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
om/android/email/provider/ProviderTests.java
c41c47fa07a22f8a7612fb0191f152a36d95b7a5 25-Sep-2009 Andrew Stadler <stadler@android.com> Enable message upload

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

Bug # 2097471

TODO (next CL): Upload attachments records too

Change-Id: I209182f5adc6b6696919f559e3cbbdd58b3eed3a
om/android/email/LegacyConversionsTests.java
om/android/email/mail/MockFolder.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
5fc57eccefeba517fe5e6f093786f37c6c4d50e6 23-Sep-2009 Marc Blank <mblank@google.com> Fix reply/forward for both SMTP and EAS; fixes #2138725

* Add new introText column in the Body database
* Reply/Forward put the appropriate String into this new column
* Rfc822Output uses this when required when streaming the message

Change-Id: I34602fdb3f91692c46fc8bc31ba0e6f680d445a0
om/android/email/mail/transport/Rfc822OutputTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
0d00889f83fc8c1d69039a2c849b630fb4dd28dd 23-Sep-2009 Andrew Stadler <stadler@android.com> Cleanup Provider Message in preparation for upload

* Remove mServerIntId and its special logic
* Add mServerTimeStamp
* Add column dynamically so we don't lose accounts

Bug # 2097471
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
fa52e6c95674aef6461a5cfc670a052e1c5b7f2f 21-Sep-2009 Andrew Stadler <stadler@android.com> Clean out old mailbox names logic and fix a couple of bugs.

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

Fixes bug 1904373
om/android/email/ControllerProviderOpsTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/UtilityUnitTests.java
71bba443f2c418df69bb3316f9394b1eda6f751f 21-Sep-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 26224 into eclair

* changes:
Fix broken test after changes to Rfc822Output
e47033245651fb2b9c4bed92f04f3c0e1e824ece 21-Sep-2009 Marc Blank <mblank@google.com> Fix broken test after changes to Rfc822Output

Change-Id: Ibb1ab79cf2cce1e5ad66d3a45656e575dbabbc6d
om/android/email/mail/transport/Rfc822OutputTests.java
ad4ec0590d3d38c9cca621eb12569b6b6766be02 21-Sep-2009 Andrew Stadler <stadler@android.com> Fix broken MessageView tests

I'm surprised these were working at all.
om/android/email/activity/MessageViewTests.java
092d35c98d00c5a8b1ba93f51f8e59220f1488cb 16-Sep-2009 Andrew Stadler <stadler@android.com> Fix NumberFormatException in POP3 message sync

* Write unit test to replicate failure(s) in POP3 use of parseInt. All
calls to parseInt must be guarded by try/catch NumberFormatException.
* Fix the failures

Bug # 2115586
om/android/email/mail/store/Pop3StoreUnitTests.java
da8836a76cd8a6eaa7e3693eeacc6393870b2066 15-Sep-2009 Andrew Stadler <stadler@android.com> Give warnings if dupe account created:

* Check for existing accounts with matching servername + username
* Show a dialog and block account creation
* Triggers in three cases:
* After input of an auto-setup account (e.g. Gmail or AOL)
* After input of manual setup (incoming) parameters
* After changing incoming parameters of *any* existing account
* Made some notes in EmailContent regarding fields in HostAuth that we
are not actually using.
* Added HostAuth unit tests

Primarily fixes bug # 1964449
Bonus fix for bug # 1594408

Change-Id: I49310faf6654280582e0ab3d3e40f2701bfcd21d
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
c21d326ef00b6fdbf01d69c32d57bc55b9109a9e 16-Sep-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 25145 into eclair

* changes:
Disable testResolveInlineImage
1761234fc600b62e415de55ab8d344d3b9a32f91 16-Sep-2009 Andrew Stadler <stadler@android.com> Disable testResolveInlineImage

This test depends on LocalStore and is thus deprecated.

It very much needs to be be rewritten and reestablished.

Bug # 2121424
om/android/email/mail/internet/EmailHtmlUtilTest.java
2d5691cac1874eb3491353ab608a84c2a75e2b62 15-Sep-2009 Marc Blank <mblank@google.com> Support bcc in Exchange (Fixes #2117849)

* Must send the bcc header for EAS

Change-Id: I38d119beed334c6bb23a09b87375804f8c03ea76
om/android/email/mail/transport/Rfc822OutputTests.java
1d98989222f2d023ddb08a70d5abb850029f95dc 09-Sep-2009 Marc Blank <mblank@google.com> Implement SmartReply/SmartForward for EAS; fixes #2098779

* SmartForward and SmartReply are EAS commands that automatically
include the original message and, if a forward, all original
attachments, regardless of whether they've been downloaded to
the device
* Both commands improve battery life by sending less data; greatly
so for SmartForward if there are attachments

Change-Id: I12432cd5275a3b54e9a80d5cd59da437c4a086cc
om/android/email/mail/transport/Rfc822OutputTests.java
f2dded3a2fba83dd3f0d14cce6abe467a4ab66eb 12-Sep-2009 Marc Blank <mblank@google.com> Reimplement reply/forward to use mTextReply/mHtmlReply

* Move creation of final reply/forward text (i.e. new text plus
the original) to Rfc822Output, where it belongs.
* Prepares the way for use of SmartForward/SmartReply in
Exchange and replying w/ multipart/alternative in SMTP
* Moved test from MessageCompose to new Rfc822OutputTests, and note
that new tests should be added (this is not a regression; there
were never enough tests here)

Change-Id: Ibefb842f47cc9223714856d99b8d4f55b55f49e3
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/mail/transport/Rfc822OutputTests.java
411334d4e5c8019e646287c102faec7f18b8a13a 12-Sep-2009 Marc Blank <mblank@google.com> Fix broken test cases

Change-Id: Ib2d019662d358a20b4d62992529bfdf398e4661b
om/android/email/mail/internet/EmailHtmlUtilTest.java
6c21942ec45f561d711b3d74ecca8e62afb735c4 10-Sep-2009 Andrew Stadler <stadler@android.com> Implement move-to-trash for IMAP and POP3.

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

Addresses bug 2097409

TODO delete from trash / empty trash

Change-Id: I00188e6dc2093823106e009f35b68c760227c9e6
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
cef2344e70b4ab90cbbb01aac00f248976d273df 06-Sep-2009 Marc Blank <mblank@google.com> Rework EAS account creation & ssl operation

* Fixes 2048663, 2025029, and 2100131
* Add "Trust Certificates" checkbox in EAS account creation
* Use custom ClientConnectionManager for HttpClient with registry
for plain, ssl, and tssl (trusted ssl) connection
* Use a ConnectionPool for HttpClient connections
* Remove "Domain" checkbox in EAS account creation
* Remove tests related to the "Domain" field
* TODO Write a test for valid usernames (requires a bit of research)
<name>, <email address>, <domain>/<name, and <domain>\<name> are all
valid, but there might be others

Change-Id: I4a0338df5960bfd3d679a88aaf22d1c49f49992b
om/android/email/activity/setup/AccountSetupExchangeTests.java
e25698319325d5e9619bc45ae85d861b0f1c5954 08-Sep-2009 Marc Blank <mblank@google.com> Add sourceKey to Body table; add flags for reply/forward in Message

* Set reply/forward flag and sourceKey as appropriate in MessageCompose
* Update provider tests accordingly

Change-Id: I7f49d80a735314a1a38f09fbf1f234257c41af8c
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
5b1ec907612642b1c92363e14c0d1aa296ae0c49 06-Sep-2009 Marc Blank <mblank@google.com> Fix more broken large Email tests (#2087413)

Change-Id: Iacff02d7bb025f6c4d6de9ca8dfa96c6cbb78d67
om/android/email/activity/MessageViewTests.java
6e7ea8cfe6fa3fe4380964df53c51ba7812b6372 06-Sep-2009 Marc Blank <mblank@google.com> Fix problem with case of attachment name in EAS

* Fixes #2102752

Change-Id: I9cc05a8fc02344f1f673c5ccb4e6aed0f9602350
om/android/exchange/EasEmailSyncAdapterTests.java
b8d0c55a05b97e53957dfd6619ea97edeca989cf 04-Sep-2009 Marc Blank <mblank@google.com> Fix reply all behavior to prevent duplicates, etc.

* Also create a bogus account if none exists to prevent setup failure
* Fixes #2087413 (Email large tests failing with Unknown URI)
* Fixes #2097361 (Duplicate email address when replying...)

Change-Id: I9ca2ac5f98db43e9009c22421c69956440356e34
om/android/email/activity/MessageComposeInstrumentationTests.java
4bb52e36b18ab5e2fb9242069611bc0ef6116c09 02-Sep-2009 satok <satok@google.com> Fix the foldername of outbox

BUG: 2077596

* fixed the array of special_mailbox_display_names
* added unit tests
om/android/email/UtilityUnitTests.java
fe5ed7b4b5a8398a3b826481275f4f478f43a506 01-Sep-2009 Andrew Stadler <stadler@android.com> DO NOT MERGE Remove test code

Bug # 2092944
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
91a5cd517f1f30131305a299efae1449f9e4118c 02-Sep-2009 Andrew Stadler <stadler@android.com> Clean up handling of Exchange setup option

* Use concrete declarations, not the old sample code
* Remove unused "sample" code
* Create ExchangeSender.java
* Strip out the unused (old sample code) parts of ExchangeStore.java
* Unit test to make sure EAS is being offered
* Fix "account leak" in AccountSettingsTests

This was triggered by donut bug # 2092944 but the solution is
different because we support EAS here.
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
936babc145e2e6eb2e222f2ce5e3da8f9e4fb9f2 02-Sep-2009 Andrew Stadler <stadler@android.com> Bulk change of columns, LAST TIME.

* Add reply columns to Body
* Remove a bunch of unused columns from Message
* Update SQL tables, content read/write, etc.
* Small tweaks to app code that was not-really-using the old columns.
* Update existing unit tests for new/changed columns
* Disable TagsTests to solve a tests failure (prexisting, not caused by
this CL)

Change-Id: Ief493796dfe219669755170d76786f91570cbb9b
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
om/android/exchange/TagsTests.java
2ebf7d97ec23e6054ca18ce94b4ccaa445213883 31-Aug-2009 Marc Blank <mblank@google.com> Fix 2085862; add email address to test Account

Change-Id: I1980935207a96daa0b34bf78931e47b8374c84cc
om/android/email/activity/setup/AccountSettingsTests.java
0967b74a62720167226e903225d47f25bacc7f92 28-Aug-2009 Mihai Preda <preda@google.com> am 629e18ad: Fix base64 decoder. BUG 2081740.

Merge commit '629e18ad866917523599ed059898f4d986e49e26' into eclair

* commit '629e18ad866917523599ed059898f4d986e49e26':
Fix base64 decoder. BUG 2081740.
629e18ad866917523599ed059898f4d986e49e26 27-Aug-2009 Mihai Preda <preda@google.com> Fix base64 decoder. BUG 2081740.

It was broken by CL 22378.
The bug was in the situation when "==" (two padding chars) were at
the end, the reading did not stop after the first '=',
and thus one more char of output was generated.
Add more unit-test for base64 decoding.
om/android/email/mail/AddressUnitTests.java
423206653fc1841153f6c6c00599a65d5c5f2191 27-Aug-2009 Andrew Stadler <stadler@android.com> Sync "read" and "favorite" back to server.

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

Addresses the 2nd half (upsync) of bug 1904385

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

Change-Id: I5a96a695d4f35fca1395506f165b86d9fb19b543
om/android/email/mail/store/ImapStoreUnitTests.java
ea0fea2558f78ba54d9a8fbca6af466d9542d038 26-Aug-2009 Mihai Preda <preda@google.com> MessageCompose: bug 2080075 & 2077496.

- fix bug 2080075, reply to message without text body.
- workaround bug 2077496 by temporarilly disabling the address adapter.
- unit test for MessageCompose.buildBodyText()
- use precompiled regex
om/android/email/activity/MessageComposeInstrumentationTests.java
aa69a174774699d452233f8ffece021f9851011e 24-Aug-2009 Marc Blank <mblank@google.com> Add initial support for uploading new Contacts to Exchange server

* Refactor the sync adapters to separate out parsing from commit
* Use ContactsProvider to save the SyncKey for contacts
* Fixes #2072664 and #2072456

Change-Id: I1e85c498496e83d9523489636a75f366f7fbd106
om/android/exchange/EasEmailSyncAdapterTests.java
4b41bae270ea4c49ec8403084db43ee9b37cdda4 20-Aug-2009 Andrew Stadler <stadler@android.com> Enable IMAP/POP sending and EAS resend

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

TODO:
* Find other places from which to call deleteAllAttachmentFiles
om/android/email/provider/AttachmentProviderTests.java
c0c9c33322deecace00a32766e0a1b355aad4b31 20-Aug-2009 Marc Blank <mblank@google.com> Add URI's that atomically add a value to a particular field (Account or Mailbox)

* Message, etc. could be added, if this had a use case
* Unit test added for both Account and Mailbox cases
* Eclipse changed some parens around; it won't happen again
om/android/email/provider/ProviderTests.java
44144d0301213536b02f2080237b63d8271b2d0b 18-Aug-2009 Mihai Preda <preda@google.com> MessageCompose: initial save attachments and load them back.

- load attachments for EditDraft.
- save attachments when save message.
- unit test for restoreAccountsWithMessageId()
om/android/email/provider/ProviderTests.java
0d1078363581db8caded06cf94e729e88a88761a 19-Aug-2009 Andrew Stadler <stadler@android.com> Finish loading large IMAP/POP messages

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

INCOMPLETE (file bugs):
* implement logic for the old loadMessageForView calls that comes from
MessageView (when you open a message that's partially-loaded)
* Resolve handling of mimetype when attachment info is read (currently
we're assuming base64 in a couple of places)
* delete account => delete attachments
* delete attachment => delete file
* create account => clear existing attachments for acct id
om/android/email/mail/MockFolder.java
4a8c70c09be3914ded18031b4cca5a6d867de0d3 18-Aug-2009 Andrew Stadler <stadler@android.com> Add "num new messages" field to Account

* Reset DB version to "1"
* Added field and support code (save, restore, & parcel)
* Added forgotten mProtocolVersion to parcelable code
* Added unit test for parceling

Also, fixed race condition in SyncManager that was underlocking the
wake locks during tests.
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
cc8d74bd038fa2da2aaf84537c1555457bbf247b 17-Aug-2009 Marc Blank <mblank@google.com> Add support for syncing the favorite flag to server (EAS 12.0 and up)

* Add test for date formatting
om/android/exchange/EasEmailSyncAdapterTests.java
9627d014e16235eadf981b9165807dc72a14a383 12-Aug-2009 Mihai Preda <preda@google.com> MessageCompose: update body on save.

- plus unit tests.
- and some attachment refactoring.
- move PROJECTION_ID up to EmailContent.
- add index on messageKey to Attachments and Body tables.
- add missing Columns.ID field in EmailContent.
om/android/email/provider/ProviderTests.java
c640cbbaf385566e1b6de361b2b23156e10f695d 13-Aug-2009 Andrew Stadler <stadler@android.com> Update SMTP to send from provider messages, and attachments

* Change Sender definition (remove old Message from API) and update
any existing calls through that API
* Rewrite SMTPSender to use provider messages
* Add attachments to RFC822Output
* Minor bugfixes in RFC822Output
* Unit tests
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
fb7974f5bfb6275fb856b0f7ff386ef10680c83a 03-Aug-2009 Mihai Preda <preda@google.com> Fix SQL for DELETE_ORPHAN_BODIES and DELETE_BODY.

and add unit tests.
om/android/email/provider/ProviderTests.java
3f1ac4da947f426775c9546f2e37206f58ce1a6e 12-Aug-2009 Andrew Stadler <stadler@android.com> Add code to handle IMAP/POP attachments.

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

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

TODO:
* handle large IMAP messages.
* unit test for POP
* unit test for large IMAP messages
om/android/email/LegacyConversionsTests.java
2917e895c7e7c33407a77c76232569d4bd4905cf 29-Jul-2009 Mihai Preda <preda@google.com> MessageCompose:
- set displayName for composed messages (from To:)
- set FLAG_LOADED
- do the save & send in an AsyncTask
- some clean-up
om/android/email/activity/MessageComposeInstrumentationTests.java
f00dccd32125c727cc18d837b59c15c95f5d78bc 31-Jul-2009 Marc Blank <mblank@google.com> Massive reworking of EAS serialization; much smaller and faster now

* Remove all use of Strings in favor of the parser's static final int's
* Strings remain in Tags for debugging output only
* Renamed lots of classes to be more consistent
* Centralized logging behavior in Eas class
* Found and fixed some bugs in the process:
- Account deletion wasn't removing HostAuth's correctly in the trigger
- Adding a second EAS account was trashing the first one
- Fixed looping sync behavior caused by Exchange 2003 bug
om/android/exchange/EasEmailSyncAdapterTests.java
om/android/exchange/EasTagsTests.java
om/android/exchange/TagsTests.java
758a532fce2f672673d38b2daa5f67eb757b118b 30-Jul-2009 Marc Blank <mblank@google.com> Use providers to update the unreadCount of Mailboxes

* Triggers added for insert/delete/update of Message
* update of Mailbox will never set unreadCount
* Removed old test for unread counts and replaced with on
that tests trigger operation.
* Remove Account.updateUnreadCount (deprecated)
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
948c36f47ac5bb3c47c85cd6269b188a82f458c3 27-Jul-2009 Marc Blank <mblank@google.com> Reimplement EAS contacts sync to work w/ new system facilities

* Modify to work with ContactsProvider2
* Modify to work with system AccountManager
* Modify to work with system SyncManager (for triggering user-change syncs)
* Sync server->client for adds/deletes implemented (CP2 doesn't handle delete yet)
* Sync server->client changes handled efficiently (only write changes)
* Some fields still not handled
* Rewrote most of the CPO code to handle server->client changes
* Sync client->server works for supported fields
om/android/exchange/EasEmailSyncAdapterTests.java
om/android/exchange/EasTagsTests.java
3e79032dd15b109a81ecb373f7efab39dea040a4 28-Jul-2009 Mihai Preda <preda@google.com> Fix MessageCompose tests.

BUG 2017612.
om/android/email/activity/MessageComposeInstrumentationTests.java
ff683a5b98eb0cc9c3e18bd022aa00c617b2eae1 27-Jul-2009 Mihai Preda <preda@google.com> Remove mOldMessage from MessageView.

And add Address.unpackFirst() (used in MessageView) + test.
om/android/email/mail/AddressUnitTests.java
a98de7e55e91229c35352b496fad3fbb108a9609 28-Jul-2009 Andrew Stadler <stadler@android.com> Finish Attachment support for EAS accounts.

* Change service API to allow caller to supply complete target path/file
* Also allow caller to supply the final content_uri
* In MessageView, use full integration with EAS service API and
attachments content provider to enable:
* Save: Only works on SD card
* View: Works w/o SD card using content provider & intents
* Thumbnail previews
om/android/email/provider/AttachmentProviderTests.java
3d25a519abf676f050b546d34401a277aea5de40 28-Jul-2009 Andrew Stadler <stadler@android.com> Convert AttachmentProvider to use new Provider db.

* Rewrite internals to use EmailProvider instead of raw db access
* Minor changes to APIs as necessary (and scattered changes to follow)
* Convert unit tests and check them
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/provider/AttachmentProviderTests.java
301ac18bb7f211b473c4f6fa6ec9bb276bbc6c10 27-Jul-2009 Andrew Stadler <stadler@android.com> Create tests and improve docs on AttachmentProvider

No change in functionality. Just getting a test infrastructure in place
before rewriting to use new EmailProvider. Provides tests for:

* get type (raw & thumb)
* open file (raw)
* open file (thumb)
* query
* resolveAttachmentIdToContentUri
om/android/email/provider/AttachmentProviderTests.java
c7ccb68ba402c867f08d35b33ea151b1672d3a79 24-Jul-2009 Android (Google) Code Review <android-gerrit@google.com> Merge change 8253

* changes:
Modified to display unread count correctly.
41f775bbc731b25854da9f5a80c66a4aa1eb0af9 22-Jul-2009 satok <satok@google.com> Modified to display unread count correctly.
om/android/email/provider/ProviderTests.java
b8a781f220617d6e7750c5e9f093742206add45f 24-Jul-2009 Marc Blank <mblank@google.com> Load EAS attachments internally with new API ; re-sync after account changes

* Fix bugs #1993689 and #1997842
* Update test for attachment name creation
om/android/exchange/EasSyncServiceTests.java
21ace307e07cb4c363c4183f4d62f4049f5d92fd 17-Jul-2009 Mihai Preda <preda@google.com> Clean-up in MessageCompose, using EmailContent.Message.

Difficulties:
re-enable EmailHtmlUtil.resolveInlineImage() and
MessageCompose.loadAttachments() that operate on MIME parts.
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/mail/AddressUnitTests.java
7375d950e4c71a3ab2c8c726b7641c825fb92efc 24-Jul-2009 Marc Blank <mblank@google.com> Move to single EmailContent file; fix bug #1998157
om/android/exchange/EasEmailSyncAdapterTests.java
6ae38e4a3937898c5d3fec11a9dc2fb4bab8eab6 23-Jul-2009 Andrew Stadler <stadler@android.com> Moving message operations into Controller, and load attachments.

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

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

TODO: Controller is not properly working in its own thread, yet, so
we are not properly preventing ANR's yet.
om/android/email/ControllerProviderOpsTests.java
531ae9d25f4310e4774e136ed74ed9749f940861 23-Jul-2009 Marc Blank <mblank@google.com> Fix bug #1997284 re: single default account

* Fixed the bug and uncommented the relevant tests in ProviderTests
om/android/email/provider/ProviderTests.java
9e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857 23-Jul-2009 Andrew Stadler <stadler@android.com> Remove saveOrUpdate from EmailContent to prevent stale writes

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

NOTE: The logic to enforce single default account no longer works,
because that logic is in Account.save() and does not run via
Account.update(). I have patched out a small section of the relevant unit
test and will file a bug to come back for this fix.
om/android/email/MessagingControllerUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
54c1f2bf9a6574240b7c9af253f83a2b566442ab 22-Jul-2009 Andrew Stadler <stadler@android.com> Improvements to default account handling

* Remove all references to Account.mIsDefault, which was not the right
way to find the default account (it is lazy initialized)
* Change Account.getDefaultAccount to getDefaultAccountId, which is more
efficient and suitable in most uses.
* Wrote unit tests for provider default account handling

This should resolve bug 1983390 as well as a few other issues with default
account management.
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
om/android/email/provider/ProviderTests.java
53093871c492d03947c494f17e2463b27345e083 18-Jul-2009 Marc Blank <mblank@google.com> Changes to EAS: attachments, HTML text, and sending mail (without atts)

* Added HTML support for Exchange 2007 and later
* Modified MessageView to show HTML parts of body (if present)
* Replace some unused convenience methods in Body to be ones that are more
useful (i.e. retrive body for a given message id)
* Made EAS sending operational
* Updated SyncManager to recognize the creation of new messages and check
for work to be done (i.e. starting Outbox sync)
* Modified MessageView to remove EmailContent.X references
* Also changed the pattern EmailContent.getContent(cursor, class) to the better
new ClassName().restore(cursor)
* Add a test of the utility to determine mime type from file name (since
EAS doesn't provide this with attachment header information)
* Fixed bug in ProviderTestUtils in which the base (EmailContent) fields weren't
being checked for equality in the various subclass equality testers. Fixed a
bug in saving emails that was caught by fixing this bug.
om/android/email/provider/ProviderTestUtils.java
om/android/exchange/EasEmailSyncAdapterTests.java
4119218e2fd64341ac946fb8f2cbdb796a444cb8 17-Jul-2009 Andrew Stadler <stadler@android.com> Add support for get-attachments-by-message-id

* clean up provider URI's in this area
* minor bugfix in EmailContent, and add auto-writeback of messageId into
saved attachments
* clean up existing attachment unit tests
* add new tests
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
976f92908dd2f69f21f62690632ff24b08d9f5d3 16-Jul-2009 Marc Blank <mblank@google.com> Add support for attachments in EmailProvider and (preliminary) EAS

* EmailProvider now saves Attachment records atomically with Message (and Body,
of course) if an ArrayList is stored in mAttachments
* Update EAS code to support attachment discovery
* Update EAS code to support attachment download via service API (preliminary)
* Add test for atomic attachment save
* Add test for unique file creation (external)
om/android/email/provider/ProviderTests.java
c6893ddf0fc1a647ca13a2b3aac2c68ca345de37 09-Jul-2009 Mihai Preda <preda@google.com> First steps towards using the new EmailContent.Message in MessageCompose.
om/android/email/ControllerProviderOpsTests.java
om/android/email/mail/AddressUnitTests.java
ded3c915d88a5ee2d143b75cbf5718dae92a2f1c 11-Jul-2009 Andrew Stadler <stadler@android.com> Add folders to AccountFolderList

* Scan folders and write into child cursors
* Clicking a folder takes you to MessageList
* Remove most links to FolderMessageList (nearly dead!)
* Repair 1-account startup behavior (takes you directly to inbox)
* Cleanup a few basic things like context menus & refresh

TODO: Magic mailbox section at the top
TODO: As always, better linkage to sync engine(s)
TODO: Menus, context menus, etc.
TODO: Proper handling of expandable list - accounts should stay open?
om/android/email/activity/FolderMessageListUnitTests.java
e8d58c01ec3f5f783bbca6841d95ca44570c6fd9 08-Jul-2009 Mihai Preda <preda@google.com> Implement efficient Address pack/unpack and unit-test it.

Also unit-test legacy pack/unpack.
om/android/email/mail/AddressUnitTests.java
7c3cca80a0b4dacb7bcb48c65a9999138b5df82b 06-Jul-2009 Andrew Stadler <stadler@android.com> Reenable delete-message UI and write delete-from-provider.

* Longpress delete in MessageList
* Delete or Menu-Delete in MessageView
* Add deleteMessage() to Controller
* Unit tests for the new code in Controller
om/android/email/ControllerProviderOpsTests.java
28448e782b825d1978c0923003a2cf91efe733dc 06-Jul-2009 Andrew Stadler <stadler@android.com> Extract utilities from provider tests for use elsewhere.
om/android/email/provider/ProviderTestUtils.java
om/android/email/provider/ProviderTests.java
45f9dd22e1141b531c564f11cb40b54adb82f848 02-Jul-2009 Andrew Stadler <stadler@android.com> Fix bug in GroupMessagingListener and add unit tests
om/android/email/GroupMessagingListenerUnitTests.java
ddc871d9eddd088c0200a30dbfeb24812a81cf80 30-Jun-2009 Andrew Stadler <stadler@android.com> Fixed a few EmailProvider omissions; added tests

* EmailProvider query wasn't handling queries for deleted messages
* EmailProvider wasn't catching exceptions on some 'drop table' ops
* Added tests of synced messages (delete and update)
om/android/email/provider/ProviderTests.java
2ed5063274db05afb05b0bf421b57b1ffdbb5ad3 30-Jun-2009 Takaoka G. Tadashi <takaoka@google.com> am 4f23ebd3: Fixed Pop3Store to be able to delete message in Inbox.

Merge commit '4f23ebd3dcca596533a33e6faedb446a814d32e3'

* commit '4f23ebd3dcca596533a33e6faedb446a814d32e3':
Fixed Pop3Store to be able to delete message in Inbox.
4f23ebd3dcca596533a33e6faedb446a814d32e3 25-Jun-2009 Takaoka G. Tadashi <takaoka@google.com> Fixed Pop3Store to be able to delete message in Inbox.

When delete policy is DELETE_POLICY_ON_DELETE, PENDING_COMMAND_TRASH
will be invoked. But in POP3 account, because of 1) Inbox is
OpenMode.READ_ONLY, 2) getMessage(uid) just after open() is not work
correctly, 3) remote Inbox folder is not closed after deleting message,
PENDING_COMMAND_TRASH does not work. And also the fat that some POP3
server use UID with '-' prevents PENDING_COMMAND_TRASH to recognize
the message is remote message.

Internal Bug: 1651709
om/android/email/mail/store/Pop3StoreUnitTests.java
7143d969dde180b7a44bdc42ade6ca2878d0760d 25-Jun-2009 Andrew Stadler <stadler@android.com> Add unit tests for Provider and fix bugs that were found

Uses a mock provider to avoid touching production databases.
Includes utilities for creating accounts, mailboxes, and messages.
Tests basic object creation & readback, object deletion, and some
forms of hierarchical deletion. Has many TODO notes for additional
tests to be written.

In EmailContent, found & fixed a few fields that weren't being written to
the database properly.
om/android/email/provider/ProviderTests.java
ed0e683d86d27aecb39347b1749b5c572594ba6c 20-Jun-2009 Mihai Preda <preda@google.com> Don't drop invalid addresses while editing & check that all addresses are valid before send.

BUG: 1542391
add unit tests.
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/mail/AddressUnitTests.java
6c5460886f83d098ccc8a3f04e46cf0035cc9962 18-Jun-2009 Mihai Preda <preda@google.com> am a4926736: Review Email tests annotations (small/medium/large) and change some annotations based on time.

Merge commit 'a492673609111fe8c41ae152d62547b267346502'

* commit 'a492673609111fe8c41ae152d62547b267346502':
Review Email tests annotations (small/medium/large) and change some annotations based on time.
a492673609111fe8c41ae152d62547b267346502 18-Jun-2009 Mihai Preda <preda@google.com> Review Email tests annotations (small/medium/large) and change some annotations based on time.

Fix an NPE appearing when running the test suite.

BUG: 1566281, 1910409.
om/android/email/AccountUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
a290f503f14432163f74548a5e5d1dc5003ad049 15-Jun-2009 Marc Blank <mblank@google.com> Refactored EmailStore, EmailContent, EmailProvider

EmailStore goes away, replaced by EmailContent
All database activity is moved to EmailProvider
om/android/email/MessagingControllerUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
a244abdad0abc2a2b9876cadcbb3e9c49aafbb4f 15-Jun-2009 The Android Open Source Project <initial-contribution@android.com> Do not merge. Merge commit '14f3e16' into donut
0dff228dc769e141ec2a27d951963a0d705ddabb 10-Jun-2009 Mihai Preda <nobody@android.com> AI 149714: Download inline images for viewing if necessary and don't
delete attachment cache files if these are inline images.
The purpose of original logic of loadAttachmnet() is to keep
at most one attachment cache, probably to limit the size of
cached file. But it also purges all inline images.
Integrates CL 149551 from DocomoEmail.
BUG=1884385,1860250

Automated import of CL 149714
om/android/email/mail/internet/EmailHtmlUtilTest.java
d2b0efa2f591f883eaad3d9f8996bbacdcec5c34 09-Jun-2009 Andrew Stadler <stadler@android.com> Cleanup broken unit tests from previous submit. This now works:

What works:
* All unit tests
* Editing existing accounts
* Create new accounts
* Checking account settings against server
* Mail sync using accounts
* Viewing mailboxes

What breaks (in approx order of planned fixes)
* Viewing messages
* Composing messages
* Some details of account editing
* Import of existing accounts
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
om/android/email/activity/setup/AccountSetupExchangeTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
c0033f24a26a08c47aa38d957f42cf63cfa3c345 09-Jun-2009 Andrew Stadler <stadler@android.com> Convert remainder of app to use provider-based accounts
What works:
* Unit tests, except for com.android.email.activity.setup.*
* Editing existing accounts
* Create new accounts
* Checking account settings against server
* Mail sync using accounts
* Viewing mailboxes

What breaks (in approx order of planned fixes)
* Unit tests in com.android.email.activity.setup.*
* Viewing messages
* Composing messages
* Some details of account editing
* Import of existing accounts
om/android/email/AccountUnitTests.java
om/android/email/MessagingControllerUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
a9576bdad6d9711c9e790fdbad3cbb1ab5c5fb03 08-Jun-2009 Mihai Preda <preda@google.com> resolved conflicts for merge of 7403a547384df0c3cb2cb7539d018a3b2029401d to donut
7403a547384df0c3cb2cb7539d018a3b2029401d 08-Jun-2009 Mihai Preda <nobody@android.com> AI 149664: Move escapeChar from MessageView to EmailHtmlUtil.
Integrate CL 148437 from DocomoEmail.
BUG=1860250

Automated import of CL 149664
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
a392e070bc9590986e57ef6a89bed34f7efc10d0 05-Jun-2009 Andrew Stadler <stadler@android.com> Add android.permission.WRITE_EXTERNAL_STORAGE
Add unit test to verify writeable to sdcard.

Fixed bug http://b/issue?id=1883487
om/android/email/activity/MessageViewTests.java
7330fe4953c39741376bdd8cb3e5c2c03068b0aa 04-Jun-2009 Mihai Preda <nobody@android.com> Merge branch 'readonly-p4-donut' into donut
70798a7892079a71bed4e2c9833b29caaa725cb5 04-Jun-2009 Mihai Preda <nobody@android.com> AI 149573: Display To: instead of From: in Drafts folder && Display unread message count for inbox, total message count everywhere else.
Integrates from imode email: 148948,149107,149247,149248,149249,149287.
BUG=1591391,1842520,1860085,1459866,1860250

Automated import of CL 149573
om/android/email/mail/store/LocalStoreUnitTests.java
438275b283224a9f830e42d4e645981d1f73589b 04-Jun-2009 Mihai Preda <nobody@android.com> Merge branch 'readonly-p4-donut' into donut
ca5089efb84fd3c60cf317de474f8e313b8119e5 04-Jun-2009 Mihai Preda <nobody@android.com> AI 149564: Escape special characters such as '<>&' in text/plain for display in WebView.
Integrate CL 144586,145919 from imode.
Remove the Emoji escaping/workaround for WebView.
Also integrate MimeHeader.java from CL 143064 from imode.
BUG=1785319,1860250

Automated import of CL 149564
om/android/email/activity/MessageViewTests.java
d64d0e56de58ca3c776f2edae1ebbbafd500d15e 03-Jun-2009 Mihai Preda <nobody@android.com> Merge branch 'readonly-p4-donut' into donut
7436601fae756e8bc1f916560a1c2d1f8ce576fc 03-Jun-2009 Mihai Preda <nobody@android.com> AI 149523: Correctly display inline images in Reply and Forward messages.
Integrates CL 148436, 148515, 148833 from imode email.
BUG=1814789,1860250

Automated import of CL 149523
om/android/email/activity/MessageViewTests.java
om/android/email/mail/internet/EmailHtmlUtilTest.java
fbde900c37ae76ec3c6181b3328d4ddf7c46cc7e 01-Jun-2009 Mihai Preda <nobody@android.com> Merge branch 'readonly-p4-donut' into donut
5182d80674a1ef90586f52355a21a82e8265c10a 01-Jun-2009 Mihai Preda <nobody@android.com> AI 149442: Integrate CL#140625 (Fix attachment uri and content uri confusion) from imode to donut.
BUG=1598754,1860250

Automated import of CL 149442
om/android/email/activity/MessageViewTests.java
7b92d9a2a9b64480a4c510b218d812581b9c4473 28-May-2009 Tadashi Takaoka <nobody@android.com> Merge branch 'readonly-p4-donut' into donut
a8884b9b72b164dfd347dab24f754bd8f7fcbd7c 28-May-2009 Tadashi Takaoka <nobody@android.com> AI 149328: Add extended header support to MimeMessage, MimeBodyPart, and LocalStore.
This extension is necessary to support some vendor specific
extended header, such as X-NoRtn-Addr of i-mode.net mail.
This change will update LocalStore database version to 24.
And it should be consistent between donutburger Email and DocomoEmail.
BUG=1741969

Automated import of CL 149328
om/android/email/mail/internet/MimeHeaderUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
b011a812e05902d7e417b8c47acc90a592f4b412 22-May-2009 Andrew Stadler <stadler@android.com> Fix the java.lang.StringIndexOutOfBoundsException that occurs when an SMTP server closes the connection early or returns an empty line.
Fix the same error in the Pop3 UIDL parser.
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
c6efb28ad3466b6f59c0f72428eb5244bcb757de 20-May-2009 Andy Stadler <nobody@android.com> AI 149059: Manually merge CL 148988 to fix "Not to revert SEEN flag if POP, and
fixed counting unread messages bug".
BUG=1785254

Automated import of CL 149059
om/android/email/mail/store/ImapStoreUnitTests.java
80257af81bbdbd015e81324a7b5c27b763b9d512 19-May-2009 Andy Stadler <nobody@android.com> AI 149020: Manually merge CLs 148814, 148818 which fix IMAP response parsing to be
able to handle a literal string in the middle of the response.
BUG=1814528

Automated import of CL 149020
om/android/email/mail/store/ImapResponseParserUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
93116fe28ed366a4cc2285fba2019c0b4a316a31 07-May-2009 Andy Stadler <nobody@android.com> AI 148457: Allow exchange accounts to be set up without an empty domain
specification. This relaxes a rule that was incorrectly applied.
BUG=1740626

Automated import of CL 148457
om/android/email/activity/setup/AccountSetupExchangeTests.java
08e2bc5bb43e3d00ca9f89ac5432b420da206e30 07-May-2009 Andy Stadler <nobody@android.com> AI 148382: Check cursors in LocalStore so we avoid errors when the folder itself
has been deleted from the DB. Add unit tests.
BUG=1835733

Automated import of CL 148382
om/android/email/mail/store/LocalStoreUnitTests.java
e67a433c449bd798ab3a639e31435a6a34f92abf 07-May-2009 Andy Stadler <nobody@android.com> AI 148381: Fix broken tests
BUG=1776149

Automated import of CL 148381
om/android/email/activity/setup/AccountSettingsTests.java
843125b98a8130069fb4cdca92029fed3e189e7b 05-May-2009 Andy Stadler <nobody@android.com> AI 148300: Reduce memory waste in getTextFromPart(), and improve error handling.
Fix NPE's in loadMessageForViewBodyAvailable().
BUG=1831272

Automated import of CL 148300
om/android/email/activity/MessageViewTests.java
c9f151d4fe47c5d426109822a7042ae8bbeb0a06 02-May-2009 Andy Stadler <nobody@android.com> AI 148230: Allow stores to indicate if they support server-side copying of sent
mail into the "Sent" folder, thus eliminating the need to perform a 2nd
upload into the server's Sent folder. IMAP and POP3 do not support
this (although IMAP could when it recognizes Gmail IMAP servers.)
BUG=1807499

Automated import of CL 148230
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
c5c2b9673907d44fa03ac277a9028704b6277c7b 01-May-2009 Andy Stadler <nobody@android.com> AI 148145: Remove the account-based storage of store persistent data, and instead
combine it with the same code that handles folder persistent data (in
the database). The schema is really simple; Rows with a folder id of
-1 are store data. This also adds the ability to use keys to store
multiple values, instead of a single string per account. Added/updated
unit tests.
3rd party stores will need slight code changes because the persistent
callbacks now accept keys.
BUG=1807499

Automated import of CL 148145
om/android/email/AccountUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
d8cbeaf7aee0b307b96c2aa1c2a93c4c417838e2 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148098: Manual merge CL 148086 to fix additional problems with non-ASCII chars
in address fields.
BUG=1676634

Automated import of CL 148098
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
067d0a87fa88436aa9fbbaf9767102c102d2a6ce 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148097: Fix bug in exchange account setup (actually it only affects
editing existing accounts). Added simple functional tests for
Activity UI.
BUG=1812798

Automated import of CL 148097
om/android/email/activity/setup/AccountSetupExchangeTests.java
0cfffc5222f951475b249f7ed1c8ceefb34f6ffe 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148091: Manual merge CL 148078 which resolves bugs when you have non-ASCII
names in email address fields of MessageCompose.
BUG=1676657

Automated import of CL 148091
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/mail/AddressUnitTests.java
3c3add638ec34c8627e3783f810e3b68ad01a007 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148027: Fix concurrency failure in Folder.getUnreadMessageCount() and
Folder.getVisibleLimit(), which used local copies of the data from the
DB. If there were two Folder objects associated with a single actual
folder, updating one wouldn't be reflected in the others.
BUG=1812798

Automated import of CL 148027
om/android/email/mail/store/LocalStoreUnitTests.java
c05afb24bbb47be9b9c5224cfe9aa6a3a84b6870 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148019: Add "accountInstanceLimit" to stores.xml so a given type of connection
(e.g. EAS) can limit itself to n (usually 1) accounts per device.
The UI for this is really simple - don't show the EAS button when the
limit is reached. More work would be required in
AccountSetupAccountType.java in order to do a more sophisticated UI
(e.g. show the button but pop a toast if the limit is reached.)
BUG=1740626

Automated import of CL 148019
om/android/email/activity/setup/AccountSetupAccountTypeUnitTests.java
8264c4fa21d922ad028242ae12e8da62c82a88a4 30-Apr-2009 Andy Stadler <nobody@android.com> AI 148002: Add X_DOWNLOADED_FULL, X_DOWNLOADED_PARTIAL, and DELETED flags
to the set that are stored in their own columns (and thus can
be quickly selected from). Add code to migrate old style
flags into new flags. Add tests.
BUG=1786939

Automated import of CL 148002
om/android/email/mail/store/LocalStoreUnitTests.java
a13aea24a396ae8f115b016b702bd2457ad04e6d 28-Apr-2009 Andy Stadler <> AI 147868: Fix CL 146360 which didn't make the changes persistent. Changed
MessagingController to accept and track a Context, instead of the
unnecessary Application object, which makes this fix more testable.
BUG=1790798

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

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

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

Automated import of CL 147620
om/android/email/mail/MockFolder.java
om/android/email/mail/store/Pop3StoreUnitTests.java
72288724d40a4179ea0f978fee72e8b8dd293007 24-Apr-2009 Andy Stadler <> AI 147538: Because mPreferences is transient, we need to pass Context into the
persistent callbacks, in order to recreate it occasionally.
BUG=1786939

Automated import of CL 147538
om/android/email/AccountUnitTests.java
2990ff1f968c5424b6218d2829b87ca1c4a32db4 23-Apr-2009 Andy Stadler <> AI 147452: Update LocalFolder.fetch() to support STRUCTURE mode, in
addition to existing support for BODY mode. Add tests.
BUG=1807499

Automated import of CL 147452
om/android/email/mail/store/LocalStoreUnitTests.java
29bbfd0b971a7afca9e61f9475036f3b53f0209c 22-Apr-2009 Andy Stadler <> AI 147401: Redo the implementation of store-specific flags to allow
deeper database-style operations with them. This enables two
new LocalStore APIs to be provided: A new version of
GetMessages() that can retrieve only flagged (or un-flagged)
messages, and a new method to set flags for an entire set of
messages, in a single SQL transaction.
BUG=1786939

Automated import of CL 147401
om/android/email/mail/FlagTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
7e6df9c6aa616978efa9fc8288014735f9bf7edd 16-Apr-2009 Andy Stadler <> AI 146379: Provide a small set of message flags that can be set by stores and will
be persisted by LocalStore.
BUG=1786939

Automated import of CL 146379
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
1f48259d22001f3e745e34e1bf142dfaf6cad94b 15-Apr-2009 Andy Stadler <> AI 146360: Provide an API by which the server (or store) can tag some
of the role-specific folders such as Drafts, Sent, or Trash.
This allows us to properly target these folders even on
systems where they have different names. I capture the
tagged names into the existing columns in the account data,
where they are used elsewhere in the code (no changes
necessary).
Use default implementations on POP3 and IMAP for now -
no change from original behavior. The new code is
primarily to support EAS (for now).
BUG=1790798

Automated import of CL 146360
om/android/email/MessagingControllerUnitTests.java
om/android/email/mail/MockFolder.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
4836f3c289f728048435ea2b5055e65b167f5a88 15-Apr-2009 Andy Stadler <> AI 146331: Make the download window sizing adjustable on a per-store basis.
The default values are 25 (default) and 25 (increment). This is fine
for Stores that control downloads by # of messages, but won't work for
stores that use other measurements - e.g. EAS windows the download in #
of days. So for this change:
1. Allow the StoreInfo to provide non-default values
2. Remove the hardcoded references to the default values
3. Use StoreInfo values everywhere
4. Set the values to 1,1 in EAS store info
BUG=1789913

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

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

Automated import of CL 146061
om/android/email/AccountUnitTests.java
om/android/email/mail/StoreTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
ea6fea9bb22368c10083d5dce52adae86e51a243 08-Apr-2009 Andy Stadler <> AI 144953: Provide UI for push mode accounts.
1. Generalize the code for the various spinners that control
account check frequency.
2. Provide an API for looking up store attributes (and refactor
existing instatiateStore logic to use it).
3. Cleanup the old code that was used to setup frequency spinners.
4. Hardwire Exchange accounts to default into push mode.
Notes to tester:
1. For each account type (POP, IMAP, EAS) we need to check that
auto & manual creation "do the right thing" for frequencies.
POP & IMAP should offer "none" or time intervals, while EAS
should offer "push", "none", or time intervals.
2. EAS accounts should default to "push", all others to "15 min"
3. Make sure that you can edit existing account settings and see
the right choices (only EAS should be offered push).
4. I couldn't write an automated test for the mail checker service,
please confirm that POP & IMAP accounts are checked at the right
intervals (or never, if set for "none".)
BUG=1776149

Automated import of CL 144953
om/android/email/activity/setup/AccountSettingsTests.java
om/android/email/activity/setup/AccountSetupOptionsTests.java
om/android/email/mail/StoreTests.java
ae8ca3fbd1545c3a94011d7d70bcadac99e7779f 27-Mar-2009 Andy Stadler <> Automated import from //branches/donutburger/...@143018,143018
om/android/email/activity/MessageViewTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
2a34cb9c9c0affaa3482b63261298d46d761cf79 25-Mar-2009 Tadashi Takaoka <> Automated import from //branches/donutburger/...@142523,142523
om/android/email/mail/internet/MimeUtilityTest.java
b1d72808d7957b98194d0aca98879f4068f396c3 25-Mar-2009 Tadashi Takaoka <> Automated import from //branches/donutburger/...@142458,142458
om/android/email/mail/internet/MimeUtilityTest.java
2b4b8d3e8e446e5124c65a12e8d35001dfe6cbd4 25-Mar-2009 Andy Stadler <> Automated import from //branches/donutburger/...@142110,142110
om/android/email/mail/internet/MimeUtilityTest.java
7dbeb7d91c7b3970426af6debe48301ba053fd79 25-Mar-2009 Andy Stadler <> Automated import from //branches/donutburger/...@141237,141237
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
3469902379242c723b871d1dcb09b02d0998d538 19-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@140373
om/android/email/activity/MessageViewTests.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/MessageTestUtils.java
om/android/email/mail/internet/MimeBodyPartTest.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
3b85e2c2b5662c58525baa41479e42c59e292f66 13-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake_rel/...@138607
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/LocalStoreUnitTests.java
fd09f8019aa079a3be5648179dc0e72886dd11c0 09-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@137197
om/android/email/activity/MessageViewTests.java
96c5af40d639d629267794f4f0338a267ff94ce5 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
om/android/email/AccountUnitTests.java
om/android/email/PreferencesUnitTests.java
om/android/email/SmallTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/codec/binary/Base64Test.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MailTransportUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
8c2158a5ebb88e226c23b66ff95910158a2727df 04-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@135843
om/android/email/AccountUnitTests.java
om/android/email/PreferencesUnitTests.java
om/android/email/SmallTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/MessageViewTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/codec/binary/Base64Test.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/internet/MimeUtilityTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MailTransportUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java
1f5bbf66d14caf6c8e7fb594fd1203601f588e93 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@132589
om/android/email/activity/MessageComposeInstrumentationTests.java
7a8703fda965e08ee255ef5f40f7e121ebf2f5e6 03-Mar-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //depot/cupcake/@137055
om/android/email/activity/MessageComposeInstrumentationTests.java
88a1d6f92da47dc816377ee8911db15927b9f62b 19-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@132276
om/android/email/PreferencesUnitTests.java
om/android/email/activity/FolderMessageListUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
ff4eb775dfc72375053733d7b8a0b18c4f43dbbb 13-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@131421
om/android/email/activity/MessageViewTests.java
f7ae27b973c7a93cd5fb8432940179f6b76a9548 11-Feb-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@130745
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/mail/internet/MimeMessageTest.java
om/android/email/mail/store/ImapStoreUnitTests.java
b957c795560ac4f5ea45a00c3103c5bc25ec01d0 16-Jan-2009 The Android Open Source Project <initial-contribution@android.com> auto import from //branches/cupcake/...@126645
om/android/email/mail/internet/MimeUtilityTest.java
687f9962d7095e18ef994cd0e64337f02ed1a5bd 18-Dec-2008 The Android Open Source Project <initial-contribution@android.com> Code drop from //branches/cupcake/...@124589
om/android/email/AccountUnitTests.java
om/android/email/SmallTests.java
om/android/email/UtilityUnitTests.java
om/android/email/activity/MessageComposeInstrumentationTests.java
om/android/email/activity/setup/AccountSetupIncomingTests.java
om/android/email/activity/setup/AccountSetupNamesTests.java
om/android/email/activity/setup/AccountSetupOutgoingTests.java
om/android/email/codec/binary/Base64Test.java
om/android/email/mail/AddressUnitTests.java
om/android/email/mail/store/ImapStoreUnitTests.java
om/android/email/mail/store/Pop3StoreUnitTests.java
om/android/email/mail/transport/MailTransportUnitTests.java
om/android/email/mail/transport/MockTransport.java
om/android/email/mail/transport/SmtpSenderUnitTests.java