Commit Graph

1497 Commits

Author SHA1 Message Date
Andy Stadler
927dbc7c20 Don't send IMAP ID unless server supports it
Only send IMAP ID to servers that include ID in the CAPABILITY response.
Always sending IMAP ID was found to cause problems with some servers.

Better compliance with RFC 2971.
Thanks to Samsung for debugging & reporting this.

Change-Id: I495f80949f9f811470853a1f2f8e506d8236d8cf
2011-01-31 15:10:49 -08:00
Andy Stadler
ecffd551cc DO NOT MERGE Remove all password trim() calls
* Initial account setup screen, password entry field
* When passing the entered password from incoming->outgoing
* When restoring store URI's from HostAuth

This will satisfy the users who insist on leading/trailing spaces
in their IMAP or EAS password.  Not supported by POP3 (no quoting).

Bug: 2981433
Change-Id: I16c00bf96382899abb54cb75fcd44cf0f140a660
2011-01-20 11:30:20 -08:00
Andy Stadler
8c45186b47 Merge "DO NOT MERGE Fix cursor leaks when canceling AsyncTask" into gingerbread 2011-01-05 08:01:37 -08:00
Andy Stadler
1a791e675b Fix NPE when switching IMAP into TLS
* Update MockTransport to allow TLS connections
* Test TLS connection in ImapStore unit tests
* The bugfix: Re-query capabilities after closing/reopening parser for TLS

(Note: Actually, this is required by the IMAP RFC 3501, 6.2.1)

Bug: 3315939
Change-Id: I51f838043e87750b5712a1bd2e4f9c821b58c808
2011-01-04 20:21:15 -08:00
Andy Stadler
d2911c3e86 DO NOT MERGE Fix cursor leaks when canceling AsyncTask
We discovered that AsyncTask.cancel() doesn't quite perform as expected;
In particular, if you call cancel() during a particularly slow background
worker, the result is discarded and onPostExecute() is never called.  If
the result is an open cursor, then we "leak" by not closing it.

For AccountFolderList, which has a multi-step doInBackground():
1.  Check for isCancelled() during the long doInBackground() which will
    reduce the number of discarded cursors in the first place.
2.  Check for isCancelled() at the end of the long doInBackground() and
    if true, close the result cursors and return null.
3.  In the existing isCancelled() code in onPostExecute(), close the
    cursors.

For other Activities (with simpler configurations):
1.  Check for isCancelled() at the end of doInBackground() and if true,
    close the just-opened cursor and return null.

Bug: 3088870
Change-Id: Ie63a3197af563baa8bb0fe6f1ef9423e281cbf4c
2011-01-04 18:17:32 -08:00
Marc Blank
2a08ef0d28 Don't allow MailService to schedule EAS accounts
Bug: 3120208
Change-Id: I53e935f8bf08e0bda6e2cd483229a6377ed39d74
2010-10-21 16:49:41 -07:00
Marc Blank
4a546f5f6e DO NOT MERGE: Backport AttachmentProvider security fix
* Apps trying to open attachments using AttachmentProvider were
  seeing SecurityExceptions due to the fact that internal calls
  from AttachmentProvider to EmailProvider didn't have their
  calling identity saved/restored.
* Updated provider calls so that these calls use the Email
  process' identity.
* Backport of Ifb71ad834530c6232728e1aad31439991f8ed379, fixing
  2908737

Bug: 3121146
Change-Id: Ifa3a0ca8d3e34733c937d7f8c60f068984e1f4f2
2010-10-21 15:39:36 -07:00
Andy Stadler
214c6c6c81 Fix remote wipe with mobile sync server
* 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
2010-10-13 15:39:27 -07:00
Andy Stadler
efcde27bf7 Use original all-day flag when upsyncing exceptions DO NOT MERGE
Bug: 3087410
Backport of: I4bed0039758e98d4b85054876f192605eb00ee82

Change-Id: Ibc875d58c2f6c5317ce8e4fee97b96c2fd6b2ecf
2010-10-13 15:05:38 -07:00
Andy Stadler
9c2baaabd2 Fix upsync of exceptions in EAS 2.5 (Exchange 2003) DO NOT MERGE
* 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
2010-10-13 15:02:38 -07:00
Marc Blank
5c5f3a0dbc Fix issue w/ race condition leading to log spam
Bug: 3064901
Change-Id: I115fa6878ae9b4464b3f0b9cace1f200e2e5f47c
2010-10-05 12:52:35 -07:00
Andy Stadler
d7876681a8 Reorganize startup/shutdown code in SyncManager DO NOT MERGE
* Move all thread-related startup code into run()
* Move all thread-related shutdown code into new method shutdown()
* Add appropriate synchronization during startup/shutdown
* Add thread names to worker threads

Bug: 2790929
Bug: 2645835

Backport of: Idbd35892cea3de5fbd365102a62103b2f0bdf6c9
Backport of: Ib12a70222ac3fd9e65bec3834c0aae061858776c

Change-Id: Idfd1c9ac7fbe8ce6859b1933ab6d287e3cb0d2e9
2010-10-04 15:50:41 -07:00
Andy Stadler
a9bc41f5ec Show server name instead of account name
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
2010-09-28 20:15:54 -07:00
Andy Stadler
e242578a49 Make WebViews clickable DO NOT MERGE
* 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
2010-09-27 15:54:37 -07:00
Andy Stadler
ac916da48e Improve handling of content-disposition DO NOT MERGE
* 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
2010-09-27 15:16:24 -07:00
Andy Stadler
02a0edb60d Allow spaces in passwords DO NOT MERGE
* Separate/identical fixes for incoming, outgoing, exchange
* Unit tests
* Some protocols will fail anyway (e.g. POP3)

Bug: 2981433
Backport from: I82984e5912fc7fcb88e747815d0fe33cb36605e7

Change-Id: I49d5c13137e4f78b6fa0f9ce288c1a78ff028f88
2010-09-27 13:31:04 -07:00
Marc Blank
deed4505e9 Merge "Increase EAS command timeout from 20 to 30 seconds" into gingerbread 2010-09-22 13:39:46 -07:00
Andy Stadler
ed824a07ae DO NOT MERGE Harden thumbnail creation
* Catch some errors earlier;  Log all errors.

Bug: 2905324
Backport from master: Icdf4ec881f404787a0621e606d7e611d5e50aab1

Change-Id: I817a770da2d158984476cfa2b10a5de6bc0b43f8
2010-09-22 13:24:46 -07:00
Andy Stadler
16657c9c20 Merge "Fix test failures" into gingerbread 2010-09-22 13:18:52 -07:00
Marc Blank
65a10186a5 Increase EAS command timeout from 20 to 30 seconds
Bug: 3027271
Change-Id: Ic58fea147d179ffd18f28a8ce5d290a1b37302ce
2010-09-22 12:45:48 -07:00
Andy Stadler
6278dcdeaf Fix test failures
Methods were used by tests only and being stripped by PG.

Bug: 2894378
Change-Id: Ieb1dd0daa8bd380c66a7b1e6151c5e5b22cbe38c
2010-09-22 12:06:41 -07:00
Andy Stadler
ebba88e4f4 Merge "DO NOT MERGE disallow longpress in WebView" into gingerbread 2010-09-22 11:07:34 -07:00
Marc Blank
d46952e7b0 DO NOT MERGE: Test validity of port numbers in account setup
Bug: 1712475
Change-Id: Iced4875379a804b5072e4df0af25db7bf9473131
2010-09-21 17:46:15 -07:00
Marc Blank
ccfc1c29c2 Merge "DO NOT MERGE: Don't disable account box if sync freq -> "Never"" into gingerbread 2010-09-21 15:54:01 -07:00
Marc Blank
6f207f5df2 DO NOT MERGE: Interpret "busy" on new events to mean "no response"
* 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
2010-09-21 15:30:57 -07:00
Marc Blank
77259fab1b DO NOT MERGE: Don't disable account box if sync freq -> "Never"
Bug: 2905667
Change-Id: Iec214b0fed093ff39dc70d5d821577bcf15f00ed
2010-09-21 15:25:27 -07:00
Andy Stadler
70880a7f29 DO NOT MERGE disallow longpress in WebView
* 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
2010-09-21 15:04:27 -07:00
Makoto Onuki
c6299fc078 Merge "DO NOT MERGE: Fix ANR in one time initializer and unify BroadccastReceivers." into gingerbread 2010-09-21 10:49:02 -07:00
Makoto Onuki
9523ecf27e DO NOT MERGE: Fix ANR in one time initializer and unify BroadccastReceivers.
- 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
2010-09-21 10:48:17 -07:00
Makoto Onuki
b3eefca0e1 DO NOT MERGE: Fix NPE in Controller and MessagingController.
Bug 2553401
Bug 2186777
Bug 2721133
Bug 2684365
Bug 2530534

Backport of I5185d9196deab5ba3a9866e2de2a9be04a04ca03

Change-Id: I192267d7d48d377fe1fc083797cb199f8e94c0c4
2010-09-21 10:47:04 -07:00
Makoto Onuki
0be6c7c5cf Merge "DO NOT MERGE: Fix handling IOException in ImapStore" into gingerbread 2010-09-21 10:24:48 -07:00
Makoto Onuki
32517753ea Merge "DO NOT MERGE: Handle multiple IMAP SEARCH results." into gingerbread 2010-09-21 10:24:44 -07:00
Makoto Onuki
75c6a611aa Merge "DO NOT MERGE: Test for interaction between ImapStore and vendor policy." into gingerbread 2010-09-21 10:24:40 -07:00
Makoto Onuki
7fbdc44c58 Merge "DO NOT MERGE: Extract MockVendorPolicy, add standard mechanism to inject it." into gingerbread 2010-09-21 10:24:36 -07:00
Makoto Onuki
2ef9710e02 Merge "DO NOT MERGE: Implement destroy() for all ImapElement classes." into gingerbread 2010-09-21 10:24:31 -07:00
Makoto Onuki
56d04724fe Merge "DO NOT MERGE: Always destroy ImapResponses." into gingerbread 2010-09-21 10:24:28 -07:00
Makoto Onuki
8c02a81722 Merge "DO NOT MERGE: Add TODOs to ImapStore." into gingerbread 2010-09-21 10:24:24 -07:00
Makoto Onuki
415b27fbd3 Merge "DO NOT MERGE: Follow-up to the new IMAP parser." into gingerbread 2010-09-21 10:24:18 -07:00
Marc Blank
ef70c9872b Merge "DO NOT MERGE: Send intro text with SmartForward" into gingerbread 2010-09-20 19:18:58 -07:00
Marc Blank
9afbf947de DO NOT MERGE: Send intro text with SmartForward
* 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
2010-09-20 18:51:32 -07:00
Marc Blank
6512458784 DO NOT MERGE: Make sure signature is added to reply/forward
* 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
2010-09-20 18:48:07 -07:00
Makoto Onuki
f255081a85 DO NOT MERGE: Fix handling IOException in ImapStore
- 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
2010-09-20 16:45:48 -07:00
Makoto Onuki
29f0638f4d DO NOT MERGE: Handle multiple IMAP SEARCH results.
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
2010-09-20 16:45:48 -07:00
Makoto Onuki
8aa79ba695 DO NOT MERGE: Test for interaction between ImapStore and vendor policy.
Backport of I092b3a0f2f40d9aa19f2f61066362099c8b3f50b

Change-Id: I492f975e66d67aae62024804a294e796f23d2aad
2010-09-20 16:45:48 -07:00
Makoto Onuki
618f1d8ac5 DO NOT MERGE: Extract MockVendorPolicy, add standard mechanism to inject it.
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
2010-09-20 16:45:48 -07:00
Makoto Onuki
ee6d0d47f5 DO NOT MERGE: Implement destroy() for all ImapElement classes.
- 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
2010-09-20 16:45:48 -07:00
Makoto Onuki
6275e8b144 DO NOT MERGE: Always destroy ImapResponses.
Unfortunately it's hard to write tests for this change, but at least
all tests pass with Idc7b88c4.

Backport of If0335a848dfcc23aecea22c21b2cce73dac7ff6f

Change-Id: I6cb3525bc3c67bbf2fb101488bf95edbead5d299
2010-09-20 16:45:48 -07:00
Makoto Onuki
565f58b9aa DO NOT MERGE: Add TODOs to ImapStore.
Backport of I5a9f246eb81cfca6008f82e8c2ffff8b7f28ba1d

Change-Id: I1422e8ae35e2ba560d1227669b9f720b937033a7
2010-09-20 16:45:48 -07:00
Makoto Onuki
57ab324a11 DO NOT MERGE: Follow-up to the new IMAP parser.
- 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
2010-09-20 16:45:48 -07:00
Makoto Onuki
ff0712cb1e DO NOT MERGE: New IMAP parser to fix long-lasting problems.
- 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
2010-09-20 16:45:48 -07:00