Handle the following edge cases when a manual refresh is triggered:
* No connectivity
* Low storage space
* Timeout (sync not started)
Bug: 11241113
Change-Id: I580235d633fcb65999c0bfe8bf383c9c8ba72110
We used to do N+1 DB queries when our list has
N folders in it. Now just do 1 and be smarter about
how we read our values out of it.
Bug: 11112954
Change-Id: Icde0b979ca985e63d6ceba05c3a63f3a9b7e3566
b/11174975
There are already several database fixing steps that
occur when the database is opened, add another one
to correct uninitialzed mailbox parent keys.
This is because we use a two pass system for adding
mailbox rows, first to insert the rows, and second to
assign parentKeys to child rows. We need two passes
because we may insert a child row before its parent,
so the parent's rowId is unavailble. But if the process
dies before the second step is complete we'll be in
an inconsistent state.
Change-Id: Ifaeeaca7e82c1e99656033bc1a9f25d7acb67517
Launch a 2-second delayed message to send a second notification on the folder change update
b/11027351
Change-Id: Ia0a22be79f4a74c6857517cc21e2313cea9cc0e9
b/11069575
The problem is that the UI_MESSAGE query strips out
any inlined attachments, but the UI_ATTACHMENTS query
does not. This means that we display all attachments
at the bottom, regardless of whether or not they're
inlined, but the formatting is wrong because when we measured
we only had the non-inlined attachments.
Maybe we should not display the inlined attachments at
the bottom, but right now if we do that, it's impossible
to save an inlined image. So for now, I'm just making
UI_MESSAGE query keep the inlined attachments so that
both queries have the same behavior.
Change-Id: I155f5bb74dbfbc8dbf02b56dca58fbca3da5da78
b/10968838
The main problem here is that Ui Attachment was always using
a content Uri that was generated using the attachment's account
Id and rowId. This works correctly for attachments in messages
we have received, but it does not work for drafts: Draft attachments
are not stored in the normal place, rather, they are stored in
the cache directory. There is an additional column in the
Attachment table, called cachedFile, which is not replicated in the
Ui attachment. That's okay though, if we have a cachedFile, then
when we are populating a Ui Attachment, we should just use that
for content Uri.
Also, I discoverd that for draft attachments, we were not correctly
setting the account key. That didn't turn out to be the problem,
but I'm fixing it anyway because it will cause problems later on.
Change-Id: I0143ba824f3a5bfcd77f32828931b94d6977626f
On updates to content://com.google.android.email.provider/syncedMessage
request a sync for the folder the message is in.
We need to do this because Exchange sync adapter is marked as
android:supportsUploading="false" so notifySync() doesn't work.
Neither does adding a UPLOAD extra to the sync request. If we do that, the
request is dropped.
This means that the sync request will also downsync the folder but t's probably
a good thing anyway.
We could add our own version of UPLOAD extra if we really want to prevent downsync.
Bug: 10678136
Change-Id: I14f06c4da905560716773d31d59388d2e6d25635
I added these to real mailboxes for hierarchical folders, but we
also need them in combined view.
Bug: 10891994
Change-Id: Iaa291fb9a9cd6039fb4d347309ce3a37aa64392a
Use something similar to the sectioned inbox teaser.
This change allows displaying sender snippets in the teaser.
Bug: 9604590
Change-Id: Ib27f002ab8cbd2315d95d46eeb1735aa6b594db5
Also ignore messages without server ids for moves and
state changes.
Also cleanup to match needs of EAS upsync.
Bug: 10678136
Change-Id: Id4d5229b8479e61bd718b707b0d2bc77a9e68046
We need to track changes that need to be unsynced. Because
Exchange handles moves differently from other changes, we
create two different tables. The tables are structured as
change logs to better handle error cases.
Change-Id: I4df90c75f36707fa117aed9718508426e60e0749
If you went from search results to conversation view, then hit the
back button, we were taking you out of search results to the inbox,
because we didn't know you had search results.
Now, we're tracking this (through the use of a folder type), so we
take you where you should go.
Bug: 10591438
Change-Id: I12ad81323fe3e1f199d9dd06a1a4e18f765b01ee
It's possible to have multiple EmailProviders.
Also get rid of references to the multiprocess attribute.
Bug: 10388165
Change-Id: Ic6be363eaee20b3b5deddc7b3054d1a7419483a1
Deleting .db files can make malformed database issues
when WAL(write ahead logging) mode is enabled.
EmailProvider doesn't use WAL mode currently,
But it has to be fixed because it might cause the problem in the
future.
Change-Id: Ie0313c5d253f3080401b00b197e7cbf97f25423c
Conflicts:
src/com/android/email/provider/EmailProvider.java
Use DatabaseUtils.longForQuery() method instead of SQLiteDatabase.query().
This reduces processing cost of database cursor.
Change-Id: Ibe53645b32a4de1ab6518f879e564ddf8f75d822
Conflicts:
src/com/android/email/provider/EmailProvider.java
uifolders and uiallfolders cursors now setNotificationUri on
the appropriate uri. That uri is notified whenever:
- A folder is inserted, deleted, or modified.
- A message is inserted or modified (since this can affect
message counts).
This second one is still not quite right: there are some
conditions where counts aren't updating correctly.
While I was here, I renamed the notification uris to
avoid collisions between different versions of the app.
Bug: 9111855
Change-Id: Ia29bb6a65b4f673bf352fdf0e14270b3f1443ca8
- Restore message_count in the database.
- For UI queries on outbox, trash, and drafts,
use message count instead of total count.
Note this won't be the right thing to do when we properly
sync trash & drafts, but we'll address that when those syncs
are fixed.
Bug: 10098601
Bug: 10113686
Change-Id: I647c74396ee12ed981d89bfb654cc6d0a25cac95
The old callback mechanism is deprecated, in favor of making
calls on the ContentProvider.
Bug: 9842867
Change-Id: I65f559e593cda24456c4ffb96f785e054626dd0b
Load large attachments from a partial POP message
There will be a new change that improves the UI for loading
the rest of the message
Bug: 8651782
Change-Id: I075de1e82e27cf2018607eef50143850e8fecaf2
By the time the remote call actually runs, the account
may be deleted from the DB, so the account id is likely
useless.
Bug: 9021105
Change-Id: If28b4b8c4b5c52be35c6ff68b326c4ea28d7f7b4
This will allow us to add query parameters such that Uris will still
appear to be equal, regardless of differences in the parameters.
Bug: 9780067
Change-Id: I483d009fe3681ec3d4323b3ca95dff8ca9f4ffde
Turns out that you don't need it -- Exchange has a way to
tell the client when folder changes occur.
Change-Id: If8089d9fe55e7ece407acf2f0dae977dced522b4
The user no longer has control over this. Now, the "default" account
(which is only used for prepopulating the name of new accounts is
either the last used account (to be defined), or the first account in
the database.
This removes a setting, and simplifies a lot of code.
We may also want to auto-select the default account when entering the
compose screen from the combined view, but we do not currently have
an easy way to do that.
Bug: 7442992
Change-Id: Iff5bb36d8cbd327334211b670fa4851cbda6b9a0
Fixes b/9193813. Previously we returned
a value from the database in all cases.
This meant that system folders were not
translated.
Change-Id: Ife568651886bfb6de76221b8bc5d013dac8fa21a
We are no longer doing per-mailbox sync intervals; instead,
mailboxes opt in to syncing, and the account sync interval
controls what happens.
Change-Id: I8ae32ea25079abbb63bb6a6a282bf5c06de73fca
EAS push only gets changes to the contents of collections,
but not for changes to accounts or folder structure. This
adds a new sync type to fetch only accounts, and adds a
periodic sync of this type for push accounts.
Change-Id: I1e9337252dbb5e53db3f7c5953e089de2c69d18c
Add a new Account setting field: Uri moveToInbox
This contains the Uri to use for the "move to inbox" action, which
may differ from defaultInbox.
There is no Move to Inbox in Email right now.
Bug: 9256654
Change-Id: I7c81c8115eda83123a09a9b7da7adf97a3c79964
There is now only one LogTag class. The static initializer of
GmailApplication (existing) and EmailApplication (new) will now set
the log tag to "Gmail" and "Email", respectively. Up until that code
is run, it will be "UnifiedEmail".
"setprop log.tag.Gmail VERBOSE" (or .Email) will trigger all logs to
be printed as long as they go through LogUtils, regardless of what tag
is used by that individual log. This lets us still turn on logging
everywhere in one command, but also lets us use more descriptive tags
(like the class name).
And since we no longer have three com.android.mail.utils.LogTag
classes, builds will be much easier.
Also, we now use LogUtils everywhere.
Change-Id: I55f1c7a66ce50ead54877a13e40256422a56dc39
We were not populating the unread count for virtual folders in one of
the two code paths, which resulted in the count disappearing from
the folder list whenever that folder was selected.
By moving the count code into getVirtualMailboxRow(), it will always
be called, so the count will always show up.
Change-Id: Ibb947ec6ed761babbcf162dbab38f44a6150d5e3
To get the name of the folder, we need
the conversation cursor's respond method
to return a Folder object. Now it does.
Also refactored a getFolder method in
WidgetProvider to be in EmailProvider so
anyone can use it.
Change-Id: I55ee180955ff4f4be7012ed6b5dda596e8e9d236
There were a few places calling the old notification code to cancel
notifications. These calls were completely unnecessary.
Also, when an account is removed, we now clear all notifications that
may exist for that account.
Bug: 7935576
Change-Id: I58f7e194c3f9a928e932b3b1b87475e7d3653b6a
Fixes b/8599310. Using selector xml drawables
to properly get the right assets for the folder labels.
Also did some renaming/moving cleanup.
Change-Id: I3b5ddc9fb9da239131405880e637fa1df2c99ea6
This is the minimum change to not break the build in Email when CL
for removing checkboxes is submitted in MR2.
I'm still investigating why contact images aren't showing up in Email and
will follow up with a fix.
Change-Id: I814ed2b0b0a468ee465e57c47c6c7248f4afdbbc
Periodic sync management was wrong in at least two ways:
1) Periodic syncs were scheduled as a side effect of
performing a sync, so changing the sync interval setting
would not do what you expect.
2) Performing a manual mailbox sync would schedule a
periodic sync on that mailbox.
This change removes the side effect from sync, and instead
actually responds to updates to the sync interval by
removing the extra syncs and updating just the account sync.
Bug: 8666490
Change-Id: I3f4a3fb7044c408578f0dc75ccb6c5bb176bfc0b
We don't have special MIME types for all possible queries.
It's only an error if the matcher doesn't know about it at
all, which is handled by findMatch, so we just return null
here (same as with Gmail).
Change-Id: I7061e25b8fd4543c41f62188cb90712353a64779
"Stale" is currently defined as "it's been 5 minutes since
my last sync".
Also includes a small refactor so that uiloadmore doesn't
load the mailbox from DB twice.
Bug: 7100372
Change-Id: Ib31aa211fe2ab790044beb7bc7d2fdcccf595171