that SharedPreferences has some non-thread-safe paths. As a quick,
brute-force workaround, I'm putting a global lock around our use of it.
This is a bit inefficient, but cases of multiple threads writing to it
should be very rare.
Note, we don't have an explicit test for this (I will think about
finding a way to write one), but the evidence of this failure is that
after some amount of activity in the Email app, we see corruption in
the string mSenderUri.
BUG=1822859
Automated import of CL 148333
Merge commit '51249c25c5a1ed448e1889ee37786e02cbe3063d'
* commit '51249c25c5a1ed448e1889ee37786e02cbe3063d':
AI 148300: Reduce memory waste in getTextFromPart(), and improve error handling.
Merge commit '9391a604e49112d6fd2ddd39ebba42688ec54985'
* commit '9391a604e49112d6fd2ddd39ebba42688ec54985':
AI 148257: Allow preview of any files (mime type */*) by removing
the original filters. This affects preview, not download.
This does not preflight the launch at all, it is very simple
as it simply downloads the attachment and then tries to open it.
If no activity is found, it uses a toast to say "couldn't do
that." A better fix will be to pre-check the mime type to see
if there are any intent filters to handle it.
BUG=1650669
Automated import of CL 148257
Merge commit '63c1ba8f0d80df67438c3dbe08bf43fccadfcf5a'
* commit '63c1ba8f0d80df67438c3dbe08bf43fccadfcf5a':
AI 148256: Finish cleaning up the concurrency bugs in FolderMessageList.
At this point, *all* MessageListener callbacks should have their
work routed through the handler for deeper processing (especially
anything that affects the lists) to be in the UI thread only.
Also fixed a minor regression introduced in CL 148096 (on
configurations with a single account, the inbox was not
automatically preopening - this affected desktop shortcuts
as well.)
BUG=1812798
Automated import of CL 148256
Merge commit 'c98f9775ad2b01f1692f96f14faacaca4ef3c1cf'
* commit 'c98f9775ad2b01f1692f96f14faacaca4ef3c1cf':
AI 148255: Don't show "Outgoing Settings" preference when sender does not
Merge commit '114026bf3fdd3a5f54a35030d6e071160e8992f8'
* commit '114026bf3fdd3a5f54a35030d6e071160e8992f8':
AI 148230: Allow stores to indicate if they support server-side copying of sent
Merge commit '3a0985b83a9856da3639e5a28e1acd0f8db37246'
* commit '3a0985b83a9856da3639e5a28e1acd0f8db37246':
AI 148216: Provide UI for fixed sync window sizes, as required by EAS.
Merge commit '0fc66ee3664ca2c92d79e6fd976962b99a15656f'
* commit '0fc66ee3664ca2c92d79e6fd976962b99a15656f':
AI 148215: Provide a better way for stores to get their callbacks, since they
Merge commit '503d4c52370bbe39a7c7b045d63db0f329190ed6'
* commit '503d4c52370bbe39a7c7b045d63db0f329190ed6':
AI 148204: Encapsulate a requirement for some remote stores, that need to preload
mail into the "Sent" folder, thus eliminating the need to perform a 2nd
upload into the server's Sent folder. IMAP and POP3 do not support
this (although IMAP could when it recognizes Gmail IMAP servers.)
BUG=1807499
Automated import of CL 148230
message structures before fetching the message body. Code for IMAP &
POP3 is unaffected, but remote stores can override
requireStructurePrefetch() in order to trigger the new behavior.
BUG=1807499
Automated import of CL 148204
Merge commit '60ab49eddcf8f7f1fd7c805739d7035eca787107'
* commit '60ab49eddcf8f7f1fd7c805739d7035eca787107':
AI 148145: Remove the account-based storage of store persistent data, and instead
combine it with the same code that handles folder persistent data (in
the database). The schema is really simple; Rows with a folder id of
-1 are store data. This also adds the ability to use keys to store
multiple values, instead of a single string per account. Added/updated
unit tests.
3rd party stores will need slight code changes because the persistent
callbacks now accept keys.
BUG=1807499
Automated import of CL 148145
being strict enough about decoupling the MessageListener from
updates to the various lists that should only happen in the UI
thread.
BUG=1812798
Automated import of CL 148096
access mMessageContentView.
This is a brute-force solution, and I have also left TODO notes
mentioning that it might make more sense (long term) to use the
existing handler message mechanism.
BUG=1812798
Automated import of CL 148095
Folder.getVisibleLimit(), which used local copies of the data from the
DB. If there were two Folder objects associated with a single actual
folder, updating one wouldn't be reflected in the others.
BUG=1812798
Automated import of CL 148027