Reimplement a dropped snippet from the original MessagingController
that preserved locally-created special mailboxes (drafts, sent, etc.)
instead of dropping them when they were not found on the server.
Bug # 2078209
* Seems to improve UI responsiveness while doing large syncs,
but it can still slow down quite a bit
Change-Id: I539b8a9a96a922d810fba02ff4093759489a8153
* in onActivityResult, we not only need to update the Account, but also
the relevant HostAuth (both if coming from AccountSetupExchange)
Change-Id: I0657ff257fe949e46e100eb3e6cfec6162514aa9
* Otherwise, there's a chance that various activities will be
disabled (like MessageCompose), even if there are existing
accounts.
* Enable BootReceiver by default
Change-Id: Id4669c41a846545d8bac5ad85736e1508074864a
* syncServerId in the Message table can now be NULL; this broke a test
used by EasOutboxService and SyncManager to determine whether there
were sendable messages in the Outbox
* Changed test to allow for NULL in syncServerId
Change-Id: Id76c7a45bc306abe7a927ab2395700f54a01a298
* 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
* If not, it will start the service
* This will catch cases in which the Email process has been killed
while alarms are set (this would be the vast majority of the time)
* Will look into ways of catching any remaining cases...
* Fixes#2131432
Change-Id: Id71e68d14b5d1b0402c866db49a07c7b1adf499d
* Our AccountManager listener was getting unregistered due to the way
ApplicationContext caches AccountManager in a static member
* The result was that AccountManager registers its listeners against the
FIRST context it is instantiated with! Future calls will all obtain
this pre-initialized AccountManager.
* In this case, AccountSetupOptions was the first caller (to create the
AccountManager Account for Exchange)
* The subsequent call to register a listener therefore had its registration
tied to the context of AccountSetupOptions, and was therefore leaked
when AccountSetupOptions finished!
* This caused a chain of problems - the leaked receiver, an Exception in
AccountManager when trying to ping the listener in an expired context,
and eventually the bug referenced above, which became a P1 issue
Change-Id: I478e28d21ca77419afa8011e4ed8101cdf67ab79
* Fixes#2135238 in which a change to a POP/IMAP mailbox
ended up causing a sync of that box as an EAS mailbox
* The fix is to check that mailboxes with changes actually
belong to an EAS account before trying to sync them
Change-Id: I832095ce61665813cbcfb2aa58e45a48db8a34e7
* 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
* Check that SyncManager's thread is running when called for startSync;
if not, start the service via Intent
* Mostly fixes#2133115 (although there are possibly other cases for
SyncManager not running, this will cause any manual "Refresh" to start
it up.)
* Added large comment at onCreate to explain how all this works
Change-Id: Ib43211ddb36e2f79ee5b1f6973f8bc2bc499024c
* Improve appearance of basics screen and use simplified text
* Provide alternate text when in EAS account setup flow (from acct mgr)
* Change "Exchange/ActiveSync" button to "Exchange account"
* Add some spacing to the three buttons, to improve appearance
Bugs addressed:
2128055 Change string in account picker activity to Exchange
2132713 Welcome message for Email app is inappropriate when coming from
Settings -> Accounts & sync -> New account
* Prevent open access to sent or received messages
* Prevent open access to account info incl. passwords
* Allow access only to system apps
Bug # 2133080
* SmartReply doesn't put in header information related to the original, which
looks like a bug in EAS, so we add our own (as we do for SMTP)
* SmartForward works properly, but doesn't put any CRLF between the new text
and the original; we fix that by adding one after the original text.
* Addresses #2132658
Change-Id: I48efec0d02598a8e9ce2a54b4c66464e8e62e5d6
* Save reference to LoadMessageTask and cancel it in onDestroy
* Check whether we've already processed the source message
before calling processSourceMessage
* Fixes#2097361 (Duplicate addresses in reply/reply all)
* Fixes NPE (not in Buganizer) related to fast orientation changes
due to duplicated background task
Change-Id: Ib8115e29c9d88db1be009df4f549f925db8a1c19
* Don't use unneeded managed cursors
* Put more of the DB work in async
* Don't try to load HTML and plaintext simultaneously
* Explicitly catch & handle exceptions during db ops
Bug # 2087051 (see also bug # 2122960 re unexpected db exceptions)
Change-Id: I446086bc4f3a85b2e766b12d1f7271e61e3ae8d5
* Since transactions can be nested, get rid of pointless/dangerous
flag for indicating we're in a transaction.
* Fixes#2131847
Change-Id: I2955e8a7659533e8ee9e71b949a042570466df45
* Make sure to null out vars in onDestroy
* Use START_STICKY as return value for onStartCommand
* Start SyncManager from EasAuthenticator callback, rather from the
authenticator itself (otherwise, the Account might not have been
created when we start SyncManager)
Change-Id: I54ff8d5586e96f016b365587717710dee3202da8