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
* It appears as if our running multiple sync threads can confuse the
mobile sync server during a remote wipe (the server expects the next
client response to be an acknowledgment, whereas it might well be
a command or response from a different thread)
* To avoid this, we first put the account on security hold and then
shut down all other sync threads for the account
* After this, we send the acknowledgment and the remote wipe proceeds
normally.
* NOTE: It's possible that, due to the vagaries of multithreaded
operation, one of the other syncing threads could still send a non-
acknowledgment response to the server before our provisioning thread
gets a chance to send its acknowledgment. However, since the other
syncing threads will terminate (and not restart, because of the hold),
the provision/remote wipe/ack sequence will work on the subsequent
attempt
Bug: 2844888
Backport From: Ib4ffbbc67b681e69176b6c1d5515fa80c7d1e121
Change-Id: Ie9e944bd39f331c2ddc0f0ba303a3d5684f6f033
* Apparently, Exchange 2003 doesn't like to see Visibility set in
Exceptions
* Apparently, Exchange 2003 likes to see Exception Deleted and
ExceptionStartTime prior to other data
* The word "apparently" is used above to indicate that these
findings are not part of any specification, but have been
determined empirically
Bug: 2775885
Backport of: I163f156675f65c494a59d5233b2b6e23b3f1d6a0
Change-Id: I5d32dea5c3903147725b8df87a71e961a4d78c60
The problem is that ths method is called in a worker thread, so
there's nothing to prevent it from running just after/at the same
time as clearContent() (which sets -1 to mMessageIdToOpen).
If it does, it passes -1 to restoreMessageWithId() and crashes.
Also removed a half-obsolete comment which is a bit too obvious for its length.
Bug 3077387
Change-Id: I736d696046e6d8964a16c80515544c582aca3943
Show this when there's no messages, and no "Load more messages" footer.
i.e. Only Outbox, Drafts, and exchange mailboxes can show "No messages".
Also removed an obsolete comment.
Bug 2363624
Change-Id: If483d33cfacb186d0fe54b4f4382333a332be84c
* It appears as if our running multiple sync threads can confuse the
mobile sync server during a remote wipe (the server expects the next
client response to be an acknowledgment, whereas it might well be
a command or response from a different thread)
* To avoid this, we first put the account on security hold and then
shut down all other sync threads for the account
* After this, we send the acknowledgment and the remote wipe proceeds
normally.
* NOTE: It's possible that, due to the vagaries of multithreaded
operation, one of the other syncing threads could still send a non-
acknowledgment response to the server before our provisioning thread
gets a chance to send its acknowledgment. However, since the other
syncing threads will terminate (and not restart, because of the hold),
the provision/remote wipe/ack sequence will work on the subsequent
attempt
Bug: 2844888
Change-Id: Ib4ffbbc67b681e69176b6c1d5515fa80c7d1e121
* Apparently, Exchange 2003 doesn't like to see Visibility set in
Exceptions
* Apparently, Exchange 2003 likes to see Exception Deleted and
ExceptionStartTime prior to other data
* The word "apparently" is used above to indicate that these
findings are not part of any specification, but have been
determined empirically
Bug: 2775885
Change-Id: I163f156675f65c494a59d5233b2b6e23b3f1d6a0
Current implementation ignores callbacks coming from
AccountManager, which should be called everytime
when this Activity finishes its job.
Bug: 3069222
Change-Id: Iea03cf94bdfe8da184e415bf7e759ddeb46ecdd9
Refresh mailbox list when changing the account, if it's been more than
5 minutes since the last refresh.
Change-Id: I5b1400bb881197e117b8863f850c368c2d1ccbc6
I was assuming MailService.resetNewMessageCount cleared notification,
but it didn't.
Doing it in Activity.onResume is clearly wrong because we don't always
have an account ID there. If we don't, we're passing -1, which clears
all notifications for all accounts.
We're now calling resetNewMessageCount() in MessageListFragment,
when we refresh the list, so we can remove it from onResume() for the Phone
UI as well.
Bug 3074056
Change-Id: Ib0bb2fbb0309a0784fb3a525927102f423e930df
The method to start ReloadMessageTask() when detecting content
changed events is delay-called, so need to make sure the fragment
is still in the valid state.
Bug 3069896
Change-Id: I1991d902e8044b4f8ca3ffd7d3e2e66005f1e960
Added "tabs" to the message view according to the latset mock.
This removes the necessity of putting a WebView inside a ScrollView,
which caused the infinitely-growing email bug (issue 6882).
Right now the tabs are actually just Buttons. Complete visual refresh
should follow it.
http://code.google.com/p/android/issues/detail?id=6882
Bug 2349275
Change-Id: I897a3a32e0dd7a90d637ac5ea1d47e5e65a1eabe
Now MessageViewFragment detects changes made to the current message,
and update the UI.
(Although it doesn't really know if the message is really changed, or just
something else was changed in the DB. It updates the header regardless.)
Change-Id: I35627c7aff129723b83605fc84521da907078571
Moved the buttons to the header. All other buttons below the message view
go away, so I just hid the old buttons.
Also now we stop trying to hide these buttons when entering contextual mode,
which fixes bug 3044284: Message view buttons get disabled when closing
quick contact
Assets were temporarily copied from gmail.
Change-Id: Ib178c6221dfab02832a10d0c0441044e4969fb70
- Pass the correct context to the adapter to make the text visible.
- MailboxesAdapter itself now has two modes (normal mode for MailboxList,
and "move to" mode), and use different views for them.
Change-Id: I2bd8a7d3a99d7fa3a047e653a77ec958e37e563b
* HTTP error 500 occurs with Exchange 2003 when the user tries to
authenticate with wrong credentials; we report this as "Cannot
connect to server", which is wrong
* Error 500 is supposed to mean "internal server error", but since
we know that an authentication error can cause this, we now put
up a better error message
Bug: 2933381
Change-Id: I9319a5ed6fbf4c92739f305b42b6b1cad7036a4b
- Now we declare all fragments in the layouts.
- Added clearContent() to MessageList/MessageView to keep them calm when not
used. (e.g. MessageView.clearContent() will be called when closing message
view and going back to the mailbox list+message list screen.)
- Some of the processes have moved from onStop to onPause.
- Now that we don't use the fragment transaction, the "restored fragments"
has been removed, and the separation between selectXxx() methods and
updateXxx() methods are gone.
Bug 3045555
Bug 3041502
Change-Id: I958897a8a38bccea1dfed7cfcd900e6dd52d2eed
- 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
* When changing account/mailbox, reset scroll position.
Applied same change as I4b368f51 to MailboxListFragment.
Also fixed a bug introduced in the same CL.
When CursorLoader detects content changed events and reloads itself,
only onLoadFinished() gets called, and in this case we should keep the scroll
position. This means mMailboxChanging should be cleared once data is loaded
for the next content changed reload.
Bug 3015916
* Don't try to make the selection visible when reloading the list for content
changed events.
We should make the selection visible only when account/mailbox is explicitly
selected. We can use the same mXxxChanging flags for this.
Bug 3036317
Change-Id: I93e3653da6816f491c1e99c9ef6d6b947be4de37
Implement basic behavior of the new layout. Supports collapsing/expanding
message list on portrait.
TODO Collapsing the middle pane should cancel the selection mode on
message list
TODO Implement animation
TODO On STATE_PORTRAIT_MIDDLE_EXPANDED state, right pane should be pushed out,
rather than squished.
Change-Id: I0306516845de3a1f05a102864c3dc4aba809a49a
The format string "The server %s requires that you allow it to remotely
control some security features of your phone." was being displayed with
the account name instead of the server name.
Bug: 3011124
Change-Id: I1aadb5790297777831dd69f04ea89641240b7b87
* assignContactFromEmail("") was causing the following exception on logcat.
"java.lang.IllegalArgumentException: URI: content://com.android.contacts/data/emails/lookup/,"
* This method is to set the contact to open when the badge is tapped,
but we trigger quick contact by ourselves, so don't have to do call this.
Bug 3013527
Change-Id: I16e1573bd82ffe5c39d30b69361354010f508f91
* Makes the side-scrollable again
* Required after making them non-long-clickable
Requires companion change in WebView, to allow touch events while
clickable or long clickable (it had been requiring both)
Bug: 3036477
Change-Id: I4cae46d047f825d2aab08d254287855b187e9207
* 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
* Check array returned by split("=")
* Add unit tests for this case
* Also add unit tests for quoting removal
Bug: 3040796
Change-Id: I170f3cd483fe35186194edeb0c3142fb0e2e9b75
* 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
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
- Move the notifiaction code into a bg thread.
We need to access db to fetch the latest message
- Extracted ContactStatusLoader.load to synchronously load contact
pictures.
Change-Id: I282ffb706ea8e14558bf29880a0fb952868b27e5
Hopefully it'll soon be fixed in the framework, but it's blocking what
I want to do now.
Bug 3028455
Change-Id: I43ed059b7766a3bfc29166464bd449d905b207e4
* 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
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
Hide the command buttons at the bottom of the message view when the message
list enters the selection mode.
Change-Id: Id825bb5183673e9def055b6480fa180beab51178
On the message list,
- Longpress toggles selection.
- Tap opens message
Now it should be in line with gmail.
Change-Id: I1ce441a13fd9b41e3d7d10c2f2e4d43e580db708
Also make sure the highlighted mailbox is always visible on the mailbox list.
MessageListFragment now just uses the default background color, which means
it no longer changes background color for unread messages or checked messages.
This should be re-implemented if necessary with the newer wireframe.
Change-Id: I9bfbe9f0711ea4ab56be27778b00298d3033123b
Merge commit '9b5c615ceea0270878a5b89fc0a063eeb9ffdd3e'
* commit '9b5c615ceea0270878a5b89fc0a063eeb9ffdd3e':
Increase EAS command timeout from 20 to 30 seconds
When a new account has just been set up and the app is still loading
mailboxes, keep the mailbox list empty and let ListFragment show
the progress icon, rather than showing "Combined Inbox" "All Starred" etc
without acutal inboxes, which looks like it's broken.
Change-Id: Ia3de4377b701f0033c5dc92f8b6b14651d4d8e1e
In message view mode, show MessageListFragment on the left pane.
TODO: Highlight opened message on message list
TODO: If the opened message is moved/deleted/starred/etc, update
message view
TODO: Collapsible left pane on portrait
Change-Id: I9b26f7291648da0e08bc526b79305ab65ce4d926
* The meaning of a busy status of "Busy" is uncertain; it could mean
"Accepted" or "Tentative", depending on whether the event was
created via OWA/Outlook or EAS
* We have interpreted it as "Accepted", which prevents the user from
actually accepting the event (as a state change is required for us
to send updates to the server/organizer)
* This CL changes the behavior such that a newly arriving event with
a "Busy" status is shown as "No response" in the Calendar, thereby
allowing the user to pick from any of the three possible options.
Bug: 2811859
Change-Id: I321f714e54e66ee8f40f5e2c00587b98bad71a63
* This gets very confused by the new text copy logic
* Downside is that copy from received message does not work at all
(it didn't work anyway).
* Will fix in next release by redesigning MessageView layout and no
longer wrapping in ScrollView
Bug: 2998892
Change-Id: Icd1219f3c45fd4da9259499e9c8a31ed0d3c4c30
- Merged all three BroadcastReceivers into one.
(Changed class name because old ones may have been disabled.)
- Use IntentService to perform the tasks in a worker thread.
Note the new receiver will never be disabled. We always need to start
exchange.SyncManager.
Bug 2722155
Bug 2416929
Backport of I8241880fc1ee38d85dcdca7e1d46fc2f6b2d375b
Change-Id: I9835cf86846d842e6f2d23014bc0912c3b888a05
* Functionality is effectively unchanged, but we reuse existing
code rather than custom code created for this purpose
* Fix bug related to setting mFlagLoaded after loading a plain
text body
Change-Id: Iaaf647c0560827f318c8b7a00fb18a6570783c99
* The code to enforce a sync window (limit to the number of items
synced per request) was inadvertently removed in an earlier
CL; restore it here
Bug: 3018568
Change-Id: Ib2377b36999b92d0bcef1b159416f46016137100
* 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
* 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
- 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
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
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
- This is to make sure we're not touching any ImapResponse that's
already been destroyed.
- I didn't add "is it already destroyed?" check to them
(except for ImapTempFileLiteral), because it can be costly.
Just let NPE be thrown.
Backport of Idc7b88c4844727922841cbad8a106bf781181d45
Change-Id: I9932e78a49784e4218e939a12ebcb9a497c4eb57
Unfortunately it's hard to write tests for this change, but at least
all tests pass with Idc7b88c4.
Backport of If0335a848dfcc23aecea22c21b2cce73dac7ff6f
Change-Id: I6cb3525bc3c67bbf2fb101488bf95edbead5d299
- 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
- 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
- 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
- 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
Adding regression test for the new IMAP parser.
Backport of Iac7f5c022e44ca5f06f735e145af15cc459eb61f
Change-Id: Ic84172b6793a9837c2fc4a894fee141da3d19f1d
* Assign "enable exchange parser logging" from Eas.PARSER_LOG instead
of from EAS.USER_LOG.
* Reorder setup to assign listeners last; This avoids unnecessary calls
to Email.updateLoggingFlags() during setup.
Note: The bug exists as far back as eclair, but the fix will need to be
made in a different file in earlier versions (pre DebugFragment)
Bug: 3003813
Backport from: I5d8f66747a86139dd593ac16ea421ab1e33b8795
Change-Id: Ifd427d697347894d0f584ae04142434c30724e92
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
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
Main motivation: not to make the new IMAP parser too complecated.
- Removed messageRetrieved.
Motivation:
- It's not easy to call messageRetrieved() at the proper timing
from the new IMAP parser, and this method wasn't used anyway.
- Renamed messageFinished to messageRetrieved.
And removed the "number" and "ofTotal" arguments.
Motivation:
- They weren't used. Also there was inconsistency about
what to pass as "numebr". (i.e. 0-based or 1-based?) There was
even a bug that caused passing a wrong number.
Backport of If92dbfe681b78a0eea8125188ede63a8f00dcf49
Change-Id: Icdea45e0a9ac567b1cdfb44e975e60bb11815472
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
- Fix misnomered fields. (e.g. static mMember -> static sMember)
- Reduce visibility. (e.g. mark as private)
- Mark final / static if possible.
Note it's on master.
There's a lot more cleanup oppotunities in the activities, but they're going
to go through a major overhaul, so I didn't bother.
Backport of b3f7dd0169
Change-Id: Ic33f9518f23805716e2aec0ab42edb92107e066c
* Existing code reloads long POP/IMAP messages at every sync
* If the server is POP3, or the IMAP message is unread, this
will lead to redundant notifications of new message arrival
* The fix avoids repeated message reload
* Backport of I8dc22966282655c8645362d672a083a1c37f554c (master)
Bug: 2892705
Change-Id: I1ce7de0dc25abc8ace544849dc3d437fcd1459f0
The latest framework change made it very easy to do this.
We no longer need to implement Checkable by ourselves.
Change-Id: I9264b157b6600659597ca8d525a4288d7bb9c470
Create a custom view containing the bottons below MVF
(delete, move, reply, etc) and let MVF own this.
These buttons used to be owned by the XL activity itself, because
the UI for these commands will most likely be totally different
from the tablet UI, so the fragment having them looked wrong.
However, this made it harder to make changes suggested by the latest
mock, such as "put reply/forward in the message header".
I think the buttons are semantically part of the message view anyway,
so the fragment owning UI for these commands is probably the way to go.
(And let's worry about the phone UI later.)
Reason for the use of a custom view is that it will make it easier
to make non-trivial UI changes, e.g. "combine reply, reply-all and
forward and make it dropdown."
Also removed obsolete TODOs from MessageListXL.
Change-Id: Ibf93f4c70fe07bdbbe33d2adb6bbd2b96812830d
* Load MIME data for these messages and parse, looking for a body either
in HTML or plain text or both
* If the MIME data had been trunctated and we can't find text, mark the
message as partially loaded and load the body text as we did before
(i.e. get the plain text body); this should be a rare case
TODO: Consider what is testable in the new EmailSyncAdapter code
Change-Id: I00a3066a373a0596431335593de356a4dda7f036
if available, instead of email addresses.
Also make sure the change to the display name will be reflected to
the UI.
Bug 2149083
Bug 3002398
Change-Id: I4aa4ffcec3a81688b3fb11182aacd546c310f117
* Assign "enable exchange parser logging" from Eas.PARSER_LOG instead
of from EAS.USER_LOG.
* Reorder setup to assign listeners last; This avoids unnecessary calls
to Email.updateLoggingFlags() during setup.
Note: The bug exists as far back as eclair, but the fix will need to be
made in a different file in earlier versions (pre DebugFragment)
Bug: 3003813
Change-Id: I5d8f66747a86139dd593ac16ea421ab1e33b8795
- 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
Drafts/Trash are not syncable on EAS, but let's kick the callbacks
as the UI is expecting them.
Bug 2989403
Change-Id: I4feac1f0e5471995c14260be6d12329659385e23
Update settings to use to PreferenceActivity APIs to retain its
current state across instances. Removes
inheritance of Header (to work well with new framework impl that
retains these across instances), avoid resetting the current header
after a state change (we want to keep showing whatever the user
last viewed), put the dialog on the back stack (so it will get
removed if the back stack is cleared).
Change-Id: Ie35b1c0eb9b06277165f2b9cadb0e2999bb8af47
When selecting a different mailbox, start/stop the refresh button animation
as necessary.
Bug 2997302
Change-Id: If29d7ec37348d527698685503b7b4fbf0ed0c35f
* Remove AccountSetupCheckSettings and related resources
* Remove all handling of EDIT flow in setup activities
Change-Id: I7b87d87978533b52b9c974d006920749389418d8
* AccountCheckSettingsFragment now supports AutoDiscover
* Clean up callbacks for account check & autodiscover errors
* AccountSetupExchange now supports rotation
* Remove dead code in SetupData & AccountSetupBasics
TODO next CL: Remove all edit flows from setup activities
TODO next CL: Remove old CheckSettings activity
Change-Id: I3c9884856ca6e70226374fdb28400bfb3588387e
* Activities modified to use new check-settings fragment:
* AccountSetupBasics (auto-setup for imap/pop)
* AccountSetupIncoming
* AccountSetupOutgoing
Next CL: Same work for exchange, and terminate old CheckSettings activity.
Change-Id: If5c5bfe331161b2429f7d7a4bd13290932f03c47
- Two-pane now respects the auto-advance setting.
- Added another TODO for one-pane.
- Removed unused method.
Change-Id: If2cfb8cc1de04c48cd2f6075bc01bef830425662
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
- Don't allow manual modification of unreadCount/messageCount
(We used to check only unreadCount in update().)
- Do the integrity check at the very first in update().
I think the old place was really problematic because we opened
the database in a few lines above and kept it in a local variable.
Change-Id: I2bf5de4e4e45b40c11b951dd2255f8193c26f1aa
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
- Removed the place holder setting
- Added "auto-advance" setting, which has "newer",
"older" (original behavior, default) and "message list"
- Strings were copied from Gmail
This CL has preference change only (i.e. the setting isn't used yet).
The actual implementation will come later.
Change-Id: I9f90a723c67e066fdc536a73490101817a127933
- 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
* 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
Some of these broke in 8bcb572ccf
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
* All setup activities given UI makeover:
* Remove legacy themes from manifest - exposes default holo theme
* Remove bottom row button(s)
* Replace with action bar button(s)
* No change to workflow or activity/fragment organization
Change-Id: I07ce11a0a2b4b767b5ac111d466e68400fe0f30b
Added Email.DEBUG_THREAD_CHECK. If true, EmailProvider warns if certain
methods are called on the UI thread.
Change-Id: I6db9e45f2e449a31850c223fc9eec0fb9a575cb1
* Existing code reloads long POP/IMAP messages at every sync
* If the server is POP3, or the IMAP message is unread, this
will lead to redundant notifications of new message arrival
* The fix avoids repeated message reload
Bug: 2892705
Change-Id: I8dc22966282655c8645362d672a083a1c37f554c
* Create new retained fragment + asynctask as the worker
* Stateless dialog fragments for everything else (progress & errors)
* Used for account settings, incoming & outgoing, only so far
TODO: Support for account setup workflow
TODO: Support for autodiscover workflow
TODO: Remove old checker activity when complete
Change-Id: I1fdafa1a51c53b934e59ea4af7d3e0ac24a3da17
The extra overloads for setStandardNavigationMode are going away to
simplify the API. setTitle/setSubtitle should be used to change title
content in standard nav mode.
Change-Id: I29baa1ea5572a01ed9bc1d99f5c8a6e35dd02a1a
* 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
* 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
* From account settings, switch to incoming/outgoing/eas fragments
* Show "Next" button in actionbar (may be dup'd in single-pane view)
* Common base class for in/out/eas fragments
* Depends on PreferenceActivity.startPreferenceFragment(), new API
* If the user clicks an account header while editing server settings,
present a dialog before discarding the changes that haven't been
checked yet.
* Confirm working (if a bit ungainly in appearance) on phone screen
Change-Id: I03591b9a8ffd11fe26fc6f58a5698740e61d0090
If the cursor is empty, hide the list and let the framework show
the rotating icon. (Don't set an empty cursor, which makes the list just
blank.)
We do this for only MailboxList because we know we'll get mailboxes
soon enough. We can't do this on MessageList because there may be really
no messages even if we wait.
Bug 2927973
Change-Id: Ic0346d2d90d03489072eb95a123281f60cda44dd
* Now the message shown/gone callbacks are called directly by
MessageViewFragment, rather than MessageListXLFragmentManager.
* The buttons are enabled/disabled per messages, so it even works
properly when you move around in All Starred. (if you ever star
trashed messages.)
* Fixed one-pane as well.
Bug 2968810
Change-Id: Ie6de1dc7ea0bd18c40c091a6685629c26ffb7110
* 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
Because "move" and "delete" are asynchronous operations, Message.mMailboxKey
can change any time. We can't use stored values.
(Fortunately it was used at only one place, and this was actually unused.)
Change-Id: Idc1300a00122fe0e6372b0374cddc98aa54a47fc
* 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
* Preserve the scroll position in the following transitions
MessageList -> MessageView -> [back] -> MessageList
MessageList -> MessageView -> [screen rotation] -> [back] -> MessageList
two-pane -> compose -> [discard, etc] -> two-pane
two-pane -> switch to other app, and switch back -> two-pane
* Don't always refresh on onResume. Do it only when requested.
This supresses unnecessary refresh when coming back from other full-screen
activities, e.g. MessageCompose.
* Also updated the comments on the back handling.
Bug 2769052
Change-Id: Id83dc3e778c35860d634c68ecac0c7a07cc4057e
* 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
* Add DebugFragment and incorporate it into AccountSettingsXL
* Tap "Email preferences" 10 times in a row to enable debug settings.
(Or type D E B U G works as well.)
* Point broadcast receiver (*#*#EMAIL#*#*) to AccountSettingsXL
* Remove old debug launchers in AccountFolderList
* Remove old Debug activity
Change-Id: Ib289c42878a07c23f815654ce4570c1399aa49de
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
* 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
Batch edit (toggle star, toggle un/read) used to work like this:
- Update DB
- Cursors get content change event
- But the list won't update immediately, because ThrottlingCursorLoader
postpones refresh.
- The list will update a few seconds later.
It wasn't really a good UX, so refresh the list right after the db change.
Change-Id: If483b305cf448ec4c73e65498044fd52cc144773