b/13545303
Prior to this change, there is no bound on the number of message
headers we might try to fetch at the same time. Now, we fetch
headers in chunks of limited size.
Change-Id: I06db96eefa8732f970c31fc3617480de40723f2d
This is an Algol only fix that needs to be reconsidered for L.
The fix comes in 2 parts. The first addresses existing accounts.
The second addresses new accounts. First we check that the protocol
is EAS and then we check the protocol version to be greater than
12.0 before setting the flags. In the future, the protocol specific
flags should be set in the protocol specific components.
Change-Id: I00a6fa3337d5230801f6de8876332c66deeae2c4
b/13362667
Really this is just for testing, the only window setting
that has any affect is SYNC_WINDOW_ALL. At some point we
should revisit the imap sync window strategy, right now
we will sync up to the oldest message currently on the
device, which is potentially a large amount of data.
Change-Id: I00dd59bd084e85bdf80f3991062b84fcd6a12362
The code related to the comment didn't ship as part of Kitkat MR2 and instead will go out with the platform L release.
Change-Id: Ib9ece3390005b5b0217e0c5540322802b1c096ad
The reason why the UI is wedged is becasue it doesn't
see a state transition in the status. So now we detect the situation
where the user is trying to download an ineligible file and force
the status to indicate that it was a failure to dismiss the UI and
to show the correct error message.
Change-Id: I9264966830a317724bf2fe469ae570860ba7c2a9
b/13304929
The solution being delivered introduces a new folder capability:
UIProvider.FolderCapabilities.SHOW_RECIPIENTS which indicates a folder
should display "To: " in front of its participants list because it
is a folder containing outgoing mail or sent mail (thus viewing
recipients is more useful than senders). This capability is returned
for Drafts, Sent, and Outbox.
Note that extra work was required to make this function properly in
the widget we export to the launcher. See BaseWidgetProvider and
friends for details.
Change-Id: Ie7b077b8dd8934182de5e94a90fa163e8105faac
b/11658428
As per Yu Ping's advice, we alter the storage of all email addresses (from, to, cc, bcc and
replyto) to be stored in *decoded* format within our database. This makes them both human
readable when inspecting the database manually and alleviates the need to repeatedly decode
them before they are displayed anywhere in our UI layers.
As part of this bugfix, I resurrected several tests related to the LegacyConversions class out of
LegacyConversionsTests and into a new (not Suppressed) test class: LegacyConversionsTest
Change-Id: Ie2e3264646e25c08c4ba74f60b3e1090c052e6c6
Disable the code that translates the max attachment size column of
our db to the EmailProvider max attachment size column. They mean
different things as our max attachment size column refers to the max
size of any file that we can download where the EmailProvider's version
represents the max attachment size of a file that we can upload.
Change-Id: I93202766d7b1782c902f17ce20b2823aaf647ec4
b/11818312
We were using the existance of OPTIONS_CALENDAR_SYNC in the
bundle to indicate that syncing was possible, and it's value
to indicate whether automatic syncing should be enabled.
This is misleading.
Now, we check the serviceInfo for the account type to figure
out if sync calendar and contacts is possible, and use the
options passed in to indicate whether or not it should be
automatic.
Change-Id: I776519668c6630dc71153fb008218a7ca6357c74
table and connect the data to the Settings object in the existing
location (SettingsColumns.MAX_ATTACHMENT_SIZE).
Change-Id: Iaf48995757511e1dfb65aa35ff6d81bbc47187bd
Conflicts:
src/com/android/email/provider/DBHelper.java
This supports the EasService design.
Yes, I just removed a startSync function from this interface last month. No,
I didn't quite know at the time that I'd be adding one back. :)
Change-Id: I19d9c7838473d8982560764fdba0056cba03d132
(cherry picked from commit 4a5b11d650)
the loadAttachment() call. This work was necessary to support
the new EasService & EasOperation infrastructure.
Change-Id: Idd507aec999596ccd4afa5f03ff2b3c2e38a9029
(cherry picked from commit efac8255ed75d22e60036e19e7a95f8407d18ad3)
This call lets the service know that the push settings for an
account have changed.
Change-Id: I7ed41853df6af6762c80283a2a3510ce41551657
(cherry picked from commit 446136a2278652c627068ecddff534de1ad431ab)
b/11061485
HELP and SEND FEEDBACK are now the two bottom-most drawer
items in the Navigation drawer when it is present or in
the overflow menu when it is not present.
SEND FEEDBACK still behaves as always.
HELP has been redesigned so that it displays the help
content in a local webview rather than using an external
browser.
Change-Id: I01003f3cd6f8dedbcfb95ae87872968dfc6be48b
Now, if you fail to authenticate on the credentials fragment,
instead of taking you to the full accountSetupIncoming,
it just takes you back to the credentials fragment with
a warning that your password is wrong.
Also, make it so that pressing "next" on the password IME behaves
the same as pressing the Next button.
Change-Id: Ice91c842659c33ba6f8ac876356a79265c703e2e
This doesn't work yet because the account type selection
screen doesn't not currently come up after the initial
setup screen. Also, right now we will always display the
cert selector, regardless of security type, because at
this point in the flow we haven't asked the user for that.
Change-Id: I8b4a13030cd6a4a8b243d7208d8df9798fd24bea
b/11551107
This is caused by ImapConnection.doLogin() only throwing
AuthenticationFailedExceptions and not other varieties of exceptions.
While fixing this bug, I discovered that the ConversationListFooterView
that is displayed in response to a authentication failure contains a
button called "Sign In" that didn't actually do anything. I made it
navigate to the incoming account settings fragment where the user is
free to change the relevant account credentials.
Change-Id: I2c772ecab18f3e57059eceeae01de08f1fdab4c2
Previously, we used the service to listen to Intent.ACTION_LOCALE_CHANGED.
This never worked because that intent is broadcasted by the system
and so Services will never receive them. Just use the existing forwarding
infrastructure to send the broadcast to the service.
Change-Id: I50ef625804e76e2348d3fe14686778d54463b78d
When a message is flagged as deleted on the server, but is not yet purged,
we'll see it syncing down with a deleted flag. This change treats that
condition as if the message has been fully deleted.
Also fix a copy/paste error for cleaning up the message modification tables.
b/12367845
b/13137235
Change-Id: Ic741dedc10251775a7afdce171d59efbd2cf1a5f
If we have image/* attachments with "Content-Disposition: inline" we would
fetch the images immediately, then drop them on the floor instead of saving
them to the DB.
Add code to catch these attachments and save them.
b/13132802
Change-Id: I5203bb1aa518aa46cdb3a38ead6f79af63b521ac
b/13085182
You can't look up emailServiceInfo for smtp, we don't store that
in services.xml. The thing is, if we're using outgoing settings,
we're always using smtp, which allows oauth.
Change-Id: I5c6032e8d5020ba83fa1c803666b83f134f87f75
Queue operations through a single ConcurrentLinkedQueue and
service the updates on a single async task to avoid spamming the
async thread task queue.
b/11336926
Change-Id: I8e5c526d61f70fbad0ccef80afd08fc26bb5acf0
Unfortunately, there are problems with making a single
view handle all kinds of authentication and certificate
selection. The layouts for the account settings screen
on phones versus tablets are just too different. So
now the certificate selection code has moved back to the
fragments themselves, and the authenticationView only
handles passwords and oauth.
Change-Id: I1ef0c69687a00029717b836458c85c1b0667ff95
Now the password entry is removed from AccountSettingsBasics,
and the user is taken to either SignInActivity or AccountSetupType
after hitting the next button. This is a lot closer to the
desired setup flow as it allows for oauth signin.
Ideally this is not what we will ship for Algol, but it put us
in a state where we could ship if we had to.
Change-Id: I5b28bccd27c515572e4947ca877bd1772732507d
b/10847599
This is the second attempt at fixing this bug. The strategy has
changed entirely to accommodate GMail as well as reuse formatting
rules that squish the list of conversation participants into an
abbreviated line for display in conversation lists.
ConversationInfo used to include a List<MessageInfo> which was
used to answer questions about which senders had read which
messages in the thread. This has been removed and replaced with a
List<ParticipantInfo>. The backend should populate that list with
appropriate conversation participants (e.g. recipients of the last
message in the case of Sent, Drafts or Outbox; senders for all
other mailbox types)
Change-Id: I32dcc2a255cccaf06c5976633380b2443729f357
I left an abstract function unimplemented, but didn't realize
because the function was added to the interface in a very recent cl.
Change-Id: I2b091ed284c256e1624633be6a598ff2798075c0
Putting authentication in a fragment was a problem, it
means that we need fragments as children of other fragments.
While this works in theory, it adds a lot of complexity.
Now, authentication is done with AuthenticationView,
which is just an extension of LinearLayout.
Currently, this does not yet handle adding certificates
for exchange accounts, but I'll fix that ASAP. As it is,
this is better than the current state, which crashes on
account setup 100% of the time.
Change-Id: I4274e7250f97012c3dc476003fd36fb960f2b728
This is one fragment that holds all types of
authentication information, e.g. password,
OAuth info, and client certificates. What gets
displayed depends upon the type of account it is
dealing with.
So far this is only used in AccountSetupIncoming,
but later it can be added to other settings fragments.
There are still some issues with this, but I'd like
to check it in sooner than later to unblock other
work.
Change-Id: Iea675ad5c1727f32ca0baa270dfa793ab7109993
b/11689324
In Jelly Bean, the hardware button has been redirected to always open Google Now by default. But
Email does run on Ice Cream Sandwich and on that platform the hardware search button should invoke
a local search of Email. The issue at play here was that IMAP accounts weren't reporting themselves
as being capable of a remote server search, even though they are in practice. Adjusting this
capability fixes the issue.
Change-Id: I829d08d3bb9c8d09beacc85fe8b5903a8565d178
THIS DOES NOT CHANGE ANY EXISTING FUNCTIONALITY.
Address.pack() has been removed and all calls replaced with its synonym Address.toHeader().
Address.unpack() has been renamed to Address.fromHeader() to follow the new naming convention.
In days of yore, pack() and toHeader() used to do different things. Now they are identical and
thus one is superfluous. We have standardized on toHeader() and fromHeader().
Change-Id: Iac91c966eb6c1477f8dba0dd2ae01c84b359e539
Now you can authenticate your account using oauth
for google hosted accounts (e.g. google.com, gmail.com)
The setup ui is still not up to spec.
Change-Id: Ib2826653550a823b4d1b8739c1e483746cccbc22
Also, clean up when we create and lose track of ImapStores.
Prior to this we were creating them often, and losing track of them,
which renders useless a lot of the complex logic in ImapStore devoted
to reusing connections.
Change-Id: I771d4e46d0c1cb9b605c43d9cbae6e52f5894745
A small CL to make sure email keeps compiling
and has the same behavior as before.
If Email wants to support long press to view image,
additional work needs to be done on the email side
in order to enable the full functionality.
Change-Id: I8e7cbdf2a2eee452fe9597097b77db5c8052d7fe
Now it logs stack traces of exceptions, and does not use
exception.toString() as the format specifier, which can be
dangerous.
Change-Id: If841426067017c574c4aff88b8d8ae6b49ee867a
This will keep it from being recreated quite as much while off-thread tasks are possibly mutating it.
Change-Id: Ic9873489906339c33a76b8a600c0fc28016debc4
This just adds an oauth button to the accountSetupBasics
screen, which will launch a webview and go to the google
authentication page.
Change-Id: I09d5182fa6081fb94b40e7910b71afbbee70387e
There is now an xml file that holds parameters for oauth
providers, and entries in providers.xml can specify that
they can use oauth.
Change-Id: Ibce5b207f83ce9c773f8f713be9e73bb068070ed
Also add a loader to AccountSecurity, and ignore when a policy contains unsupported requirements.
b/11790165
Change-Id: Idd651153848eea3216656047c5aba3bbd750ca0a
- Delete accounts, not just account data.
- Wait for PIM data to get deleted before proceeding.
- Reconcile after deleting an account.
Bug: 11856902
Change-Id: Ie52b7c583688bf48a33bcf6b4e555b8c055b476c
This ensures the SuppressNotificationReceiver object quiesces the notification while we're viewing the folder
b/11789666
Change-Id: I98f388844b29458e7ea7deee398f7d8536b1919c
b/11436795
If an attachment download fails due to a timeout, or
an exception being thrown from startDownload(), we'd call
cancelDownload() on it. But this didn't actually cancel,
it would remove it from the inProgres list, but leave it
in the list of all downloads, so we'd immediately retry it.
This is bad for two reasons:
1. It can starve out other attachment downloads that could
have been successful.
2. It will keep attempting to do network work, even if it's
hopeless, forever, draining battery.
Now, if an attachment download fails in this way, for the first
few times, we'll move it to the tail end of the list of
downloads we'd like to perform. If it fails more than 10 times,
we'll give up completely. Giving up is not permanent, if we
have a reason to attempt a download again (such as the user
tapping on it), then it will get added back to the download
service and retried.
Change-Id: I5364a7d8b4b25ce299b8dcf061db6e9ce12daf75
b/11436795
Some of the logging I enabled here actually causes an
exception to be thrown because the format didn't match
the args in the log command.
Change-Id: If86942e64927c0e8df7573ef099824899e20c289
b/11535121
Now we only delete messages with the same serverId and account
if the account is an exchange account.
Change-Id: Ic2ebb465ccdb38724b88daac8ac40771c7a24bed