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
b/10075523
Now, every 15 minutes we'll sync the last 24 hours.
Every 4 hours we'll perform a full sync, which will
take either the last 7 days, or until the oldest message
we already have locally.
Change-Id: Idc55a46a28af2a68cc324e414d51d88373941595
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
b/10111339
b/10125810
The first problem was that the imap BEFORE clause
is exclusive, so messages on the date given in
BEFORE will not be sent. Now, on the sync for the
most recent messages, we will just not specify a
BEFORE clause, so we can always get the most recent
messages even if our clock drifts from the server.
The second is that some imap servers do not accept
time information on the query dates, and that causes
errors. The imap spec defines the BEFORE and SINCE
clauses to come with a <date> only, not a time,
and although it seems that at least some imap servers
handle that, it can't be expected to always work.
Change-Id: Ibf41c6f7600b9f9537bc6d13b59873ee36798e1e
b/9857766
If we currently have zero messages (i.e. initial sync of
a new account) we will load the most recent 100 messages.
On subsequent syncs, we will load more recent messages
until either:
1. We have loaded 100 and not yet past any of the messages
we already had locally, or
2. We encounter messages that we already had locally, and
then load "deltaMessageCount" additional messages past
the ones we have locally.
Change-Id: I8b34409dcdaceff2d2e1906174241a74f2331688
I'm formalizing the concept of folders that must exist,
and the list of such folders should be accessible to all
sync adapters.
Change-Id: I9e4d2d51aa495d211eab2d1e36c3fa197a1ac00d
Do the same thing as with LogTag, so that we don't have the same
class name in the same package name in three projects.
This makes IDE builds much easier.
Change-Id: I6c9235ab231e1c04ba87c5da627094c7258a5edf
- 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
- Account & general fragments need to clear to remove
"Add account" for phone & 7".
- 10" needs to therefore specify their menus in order to
have "Add account".
Bug: 10097087
Change-Id: I133db9b9f7f6610ae30b46927ffcb8a9e4df4c0a
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
This is the first part of the change to fix POP attachments.
A following change will handle these partial messages better
Bug: 8651782
Change-Id: I8d00866207dedf63805e0eecab9555c28104f2dc
Authenticator upgrading no longer uses the services file
to specify upgrades, so we can remove the fields associated
with that functionality.
Change-Id: I2122f18614d714a3d5a565fb4a6a547ddc010b6f
- Rather than handle by type, do them all at once.
- Simplify when reconciliation happens.
Bug: 9056861
Change-Id: If264678c82c63090246ef8ff857c8e46f6672c85
Rather than use null, just force the valid default value.
Also rename SYNC_WINDOW_UNKNOWN to SYNC_WINDOW_ACCOUNT to
better reflect how it's actually used.
Bug: 9989995
Change-Id: I8d0b466fe3bc2e4c651c309d4815cea201058d22
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
This is part of moving away from the explicit setCallback,
which either has race conditions or is very noisy, or both.
(Each IEmailService call that wants callbacks should just
pass the callback explicitly.)
I'm not yet changing how the services actually handle the
call. Each protocol will need to fix this on their own.
Bug: 9735207
Bug: 9842867
Change-Id: If8cf69ffe82f3544ace9e58b1db5a183f38d038a
Turns out that you don't need it -- Exchange has a way to
tell the client when folder changes occur.
Change-Id: If8089d9fe55e7ece407acf2f0dae977dced522b4
We have a way to handle lack of outbound host auth, and it's
a legitimate state for Exchange accounts (since it's unused
anyway).
Bug: 8631134
Change-Id: I99863f627c4f364e61f7a4b99dea3e2606a55275
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
If the string contains a character that is intrepreted by the
string formatter, this would throw an exception
Change-Id: I60cccb539bf197fa555d8d1f0fa1bdca3e07114e
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
Moved two files out of Email into UnifiedEmail and
removed their dependencies on EmailContent. As a result,
those classes now return the data directly via a data only
class.
Change-Id: Iaf0618dd6879c9dc2a41943d3d15428904b65768
Previously, we were not properly handling the
case-insensitive INBOX mailbox type. We are now
upgrading properly. Fixes b/8701883.
Change-Id: I61be5159e23dc3e9578e577e33bc00a63f56b525
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
Exchange goes through multiple steps to set up accounts.
Each step requires a sync request to occur, so this change
requests syncs as necessary.
Bug: 9074056
Change-Id: I0f35a06409c6a77c82d004958ecc323cf8030ab4
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
Exchange used to just re-check version on first sync.
Version is known during validation so might as well use it.
Change-Id: I004fe671a1ad30a7cfe0a0659b74b20ee2136771