Commit Graph

4787 Commits

Author SHA1 Message Date
Andrew Stadler 9e5ee4589f Create MailboxList for new UI activity.
* Shows mailboxes
* Click to open mailbox (see messages)
* Basic menus
* Fat title bar (appearance)
* Fat title bar (buttons)

Temporary hack to call this from AccountFolderList (when you click the
account groups and "expand" them, you come here instead.)
2009-07-29 19:21:37 -07:00
Andrew Stadler ea69fc40d7 Rework Controller to use new single callback from EAS.
* Use unified callback instead of per-call callbacks
* Remove per-call tag
* Rework MessageView to operate without tag
* Minor cleanups in service side
2009-07-29 18:36:01 -07:00
satok 183e4a7a85 Localize special folder name 2009-07-30 10:08:36 +09:00
Marc Blank c449cba510 First pass at implementing new IEmailServiceCallback.
* Add setCallback method to IEmailService interface
* Remove the callback from loadAttachment and loadMore in SyncManager and
  EmailServiceProxy
* Remove the callback from PartRequest
* Update EasSyncService to use the saved callback in SyncManager

Note: Unsure how to handle the case in which SyncManager dies, since it
will no longer have the callback available...
2009-07-29 13:36:13 -07:00
Android (Google) Code Review eeac194150 Merge change 8810
* changes:
  initial Controller.sendMessage() and invocation from MessageCompose.
2009-07-29 00:59:33 -07:00
Android (Google) Code Review aef3fb963b Merge change 8744
* changes:
  Show/Hide Account folders dynamically by checking number of messages
2009-07-28 16:17:17 -07:00
satok fac5dc2d77 Show/Hide Account folders dynamically by checking number of messages 2009-07-29 05:56:23 +09:00
Mihai Preda 334903369e initial Controller.sendMessage() and invocation from MessageCompose. 2009-07-28 20:48:42 +02:00
Mihai Preda 3e79032dd1 Fix MessageCompose tests.
BUG 2017612.
2009-07-28 16:27:04 +02:00
Android (Google) Code Review 67143e5680 Merge change 8646
* changes:
  Remove mOldMessage from MessageView.
2009-07-28 04:52:45 -07:00
Mihai Preda ff683a5b98 Remove mOldMessage from MessageView.
And add Address.unpackFirst() (used in MessageView) + test.
2009-07-28 13:49:40 +02:00
Android (Google) Code Review 274576bb90 Merge change 8656
* changes:
  Load source message in UI in MessageCompose for reply/forward/edit-draft.
2009-07-28 04:47:48 -07:00
Andrew Stadler a98de7e55e Finish Attachment support for EAS accounts.
* Change service API to allow caller to supply complete target path/file
* Also allow caller to supply the final content_uri
* In MessageView, use full integration with EAS service API and
  attachments content provider to enable:
  * Save: Only works on SD card
  * View: Works w/o SD card using content provider & intents
  * Thumbnail previews
2009-07-27 19:52:21 -07:00
Andrew Stadler 3d25a519ab Convert AttachmentProvider to use new Provider db.
* Rewrite internals to use EmailProvider instead of raw db access
  * Minor changes to APIs as necessary (and scattered changes to follow)
  * Convert unit tests and check them
2009-07-27 15:52:42 -07:00
Android (Google) Code Review 63b2ad5bfb Merge change 8633
* changes:
  Fix UnsupportedOperationException in AccountSetupBasic caused by Account.update() when !isSaved().
2009-07-27 12:46:38 -07:00
Mihai Preda 0712ce063c Load source message in UI in MessageCompose for reply/forward/edit-draft.
Replace EmailContent.Message with Message.
Remove MessageCompose.mAccountId (mAccount is enough).
2009-07-27 21:22:37 +02:00
Mihai Preda 180d69e085 Fix UnsupportedOperationException in AccountSetupBasic caused by Account.update() when !isSaved().
Bug 2001896.
Introduced by CL 8158.
2009-07-27 20:56:43 +02:00
Andrew Stadler 301ac18bb7 Create tests and improve docs on AttachmentProvider
No change in functionality.  Just getting a test infrastructure in place
before rewriting to use new EmailProvider.  Provides tests for:

* get type (raw & thumb)
* open file (raw)
* open file (thumb)
* query
* resolveAttachmentIdToContentUri
2009-07-27 11:20:15 -07:00
Android (Google) Code Review c7ccb68ba4 Merge change 8253
* changes:
  Modified to display unread count correctly.
2009-07-24 14:46:52 -07:00
satok 41f775bbc7 Modified to display unread count correctly. 2009-07-25 06:42:34 +09:00
Marc Blank b8a781f220 Load EAS attachments internally with new API ; re-sync after account changes
* Fix bugs #1993689 and #1997842
* Update test for attachment name creation
2009-07-24 12:36:52 -07:00
Mihai Preda 21ace307e0 Clean-up in MessageCompose, using EmailContent.Message.
Difficulties:
re-enable EmailHtmlUtil.resolveInlineImage() and
MessageCompose.loadAttachments() that operate on MIME parts.
2009-07-24 18:50:09 +02:00
Android (Google) Code Review 852974bc0b Merge change 8306
* changes:
  update the permissions for the AccountManagerService
2009-07-23 17:19:33 -07:00
Marc Blank 7375d950e4 Move to single EmailContent file; fix bug #1998157 2009-07-23 16:24:48 -07:00
Fred Quintana ee37898bcb update the permissions for the AccountManagerService 2009-07-23 11:05:37 -07:00
Andrew Stadler 6ae38e4a39 Moving message operations into Controller, and load attachments.
* Moved logic into Controller:
  * toggling read/unread
  * toggling favorite status
  * some new unit tests
  * load attachment
* Completed logic for EAS to save attachments and MessageView to
  begin and complete that process.

NOTE:  Until EAS has a mode for saving the attachment locally (and I
rewrite the attachmentprovider to handle the new database) I am
implementing "view" attachment to just call "save".  This means that
attachments "viewed" will be dropped onto the SD card, instead of
cached and flushed.

TODO:  Controller is not properly working in its own thread, yet, so
we are not properly preventing ANR's yet.
2009-07-23 09:51:01 -07:00
Marc Blank 531ae9d25f Fix bug #1997284 re: single default account
* Fixed the bug and uncommented the relevant tests in ProviderTests
2009-07-22 16:35:12 -07:00
Andrew Stadler 9e2c6bd5f2 Remove saveOrUpdate from EmailContent to prevent stale writes
* Numerous classes modified to deal with this change
  * Fixes bugs 1993292 and 1994671
  * Renamed various setter and getter methods to reflect the underlying
    field names
  * Renamed syncFrequency to syncInterval in Account and Mailbox
  * Convenience method added to AccountSettings to save only user settings
  * Calls to content.update(context, content.toContentValues()), which save
    all fields, should be double-checked for correctness, making sure that
    content has current data and will not conflict with other threads that
    might modify that data
  * Ran all unit tests to confirm proper function

NOTE:  The logic to enforce single default account no longer works,
because that logic is in Account.save() and does not run via
Account.update().  I have patched out a small section of the relevant unit
test and will file a bug to come back for this fix.
2009-07-22 15:13:30 -07:00
Andrew Stadler 54c1f2bf9a Improvements to default account handling
* Remove all references to Account.mIsDefault, which was not the right
    way to find the default account (it is lazy initialized)
* Change Account.getDefaultAccount to getDefaultAccountId, which is more
    efficient and suitable in most uses.
* Wrote unit tests for provider default account handling

This should resolve bug 1983390 as well as a few other issues with default
account management.
2009-07-21 16:44:16 -07:00
Android (Google) Code Review 986a3b5f03 Merge change 8002
* changes:
  Prevent EAS startup race condition while debugging
2009-07-21 12:13:13 -07:00
Marc Blank eda017627e Prevent EAS startup race condition while debugging
* Make sure that mAccount and mMailbox are up-to-date at all sync starts
* Prevent duplication of mailboxes in schema, since it's always wrong
* Add a service call to enable/disable logging in EAS
2009-07-21 12:00:16 -07:00
Andrew Stadler 4e4abc645c Clean up launch-time & account setup behaviors.
* Moved welcome message into account setup basics (name/pass)
* Reworked Welcome to go to AccountSetupBasics on count=0
* In AccountFolderList, removed old welcome message code, and add
  code to launch AccountSetupBasics when last account is deleted
* Fixed shortcut picker so launcher shortcuts work again
* Reimplemented shortcut receiver (in MessageList now)
* Default EAS accounts to SSL

Addresses bug 1916583 & 1987440
2009-07-21 11:06:14 -07:00
Marc Blank 28fc7799ce Add support for the flag (favorite) property in EAS 12; cleanup
* Support flag property in Exchange 2007 (EAS 12)
* Support startSync/stopSync/reloadFolderList in EAS service
* Cleanup files a little bit
2009-07-20 17:45:43 -07:00
Marc Blank 5790d1458f Work on EmailService calls, attachment loading, etc.
* Stubbed in attachment loading in MessageView for EAS messages
* Modified MessageView.Listener to implement IEmailServiceCallback
  for testing callback functionality
* Rewrote EmailServiceProxy entirely
* Simplified loadAttachment service call
2009-07-20 13:52:27 -07:00
Marc Blank 53093871c4 Changes to EAS: attachments, HTML text, and sending mail (without atts)
* Added HTML support for Exchange 2007 and later
* Modified MessageView to show HTML parts of body (if present)
* Replace some unused convenience methods in Body to be ones that are more
  useful (i.e. retrive body for a given message id)
* Made EAS sending operational
* Updated SyncManager to recognize the creation of new messages and check
  for work to be done (i.e. starting Outbox sync)
* Modified MessageView to remove EmailContent.X references
* Also changed the pattern EmailContent.getContent(cursor, class) to the better
  new ClassName().restore(cursor)
* Add a test of the utility to determine mime type from file name (since
  EAS doesn't provide this with attachment header information)
* Fixed bug in ProviderTestUtils in which the base (EmailContent) fields weren't
  being checked for equality in the various subclass equality testers.  Fixed a
  bug in saving emails that was caught by fixing this bug.
2009-07-18 23:31:39 -07:00
Android (Google) Code Review d10ffd33de Merge change 7780
* changes:
  resolved conflicts for Email MessagingController null check from donut to master
2009-07-17 16:51:47 -07:00
Andrew Stadler 7e91c121bb Enable listing attachments in MessageView
* Rename internal helper class from Attachment to AttachmentInfo
* After message loads, query for Attachments
* Play back cursor adding attachments
* Commented out almost everything else related to loading or opening them
2009-07-17 16:39:31 -07:00
Brett Chabot 035ce8bcd1 resolved conflicts for Email MessagingController null check from donut to master 2009-07-17 16:18:41 -07:00
Brett Chabot 8a3b8992f9 Add null check when initializing email messaging controller visible limits.
This is to fix the NPE that would often occur during test runs. I believe the
root cause is mock accounts would be created by some email unit tests that did
not have values for all fields. Before these accounts were deleted, the main
email thread would try to access them and blow up with a NPE.
2009-07-17 11:12:07 -07:00
Andrew Stadler 4119218e2f Add support for get-attachments-by-message-id
* clean up provider URI's in this area
* minor bugfix in EmailContent, and add auto-writeback of messageId into
    saved attachments
* clean up existing attachment unit tests
* add new tests
2009-07-16 16:03:40 -07:00
Android (Google) Code Review d4c18546fb Merge change 7580
* changes:
  Eliminate Config.LOGV (deprecated, always false). Add Email.LOGD as a development log guard.
2009-07-16 14:51:12 -07:00
Mihai Preda f33986d5cc Eliminate Config.LOGV (deprecated, always false).
Add Email.LOGD as a development log guard.
2009-07-16 14:09:15 -07:00
Android (Google) Code Review 0dba37ec51 Merge change 7552
* changes:
  Fix push bug, minor changes to logging and removal of debug code
2009-07-16 13:14:55 -07:00
Marc Blank 6a6d67edde Fix push bug, minor changes to logging and removal of debug code 2009-07-16 13:13:54 -07:00
Andrew Stadler 3c27c65426 Small cleanups to POP/IMAP sync.
* Close after sync, so next sync will open and update message count.
2009-07-16 10:19:19 -07:00
Marc Blank 976f92908d Add support for attachments in EmailProvider and (preliminary) EAS
* EmailProvider now saves Attachment records atomically with Message (and Body,
  of course) if an ArrayList is stored in mAttachments
* Update EAS code to support attachment discovery
* Update EAS code to support attachment download via service API (preliminary)
* Add test for atomic attachment save
* Add test for unique file creation (external)
2009-07-16 00:01:57 -07:00
Android (Google) Code Review c5f783f022 Merge change 6675
* changes:
  First steps towards using the new EmailContent.Message in MessageCompose.
2009-07-15 14:13:31 -07:00
Andrew Stadler f2fdd899ef Clean up new account creation & initial sync.
* Give MessageList the ability to do a folder scan (from server)
    in order to "find" the inbox after account creation.
* Don't show messages that haven't even been partially downloaded yet
    (reduces flicker during POP initial sync)
* Move some folder lookup code (in MessageList) out of UI thread
* Restore simple color chip code so multiple accounts look good
    in MessageList
2009-07-15 13:28:55 -07:00
Mihai Preda c6893ddf0f First steps towards using the new EmailContent.Message in MessageCompose. 2009-07-15 13:13:45 -07:00
Marc Blank 16470fc7db Fix bugs related to EAS upsync and the cleanup afterward. 2009-07-14 17:24:16 -07:00
Marc Blank 6b158f715b Handle UI delete in EAS where the message is moved to trash
* Check for the folder of updated messages, and delete those now in trash
* Created convenience method for finding a mailbox of a particular type in
  an account (helpful for finding, say, an Inbox or Trash for a given account
* Fix deleted/updated message table so that the _id column is defined to be
  unique (to prevent duplicate change records from being written)
2009-07-14 16:04:27 -07:00
Marc Blank 316bb44e1a Use MatrixCursor instead of (internal) ArrayListCursor 2009-07-14 14:49:34 -07:00
Andrew Stadler 2999db7866 Add Summary Section to AccountFolderList ("at a glance")
* Wrap group cursor in a MergeCursor to insert 1st row
* Clean up a few loose ends (e.g. no longpress on summary row)
* Implement the summaries child cursor
* Add special queries to MessageList for Inbox, Unread, Favorites

There are *a lot* of TODO's in this checkin;  I just wanted to get some
basic UI up and running so we could start to explore issues created by
the new configuration.  A lightweight sampling:
* Aggregrate filters (e.g. all inboxes) need to be handled in the
provider, instead of with the current two-query hack.
* We'll need a lot of UI cleanup, e.g. different contextual menus
* We'll need to generalize some of the code in order to more easily
support repeating the same compound queries - e.g. MessageView actually
needs the same query in order to enable the next/prev buttons.
2009-07-14 11:44:07 -07:00
Andrew Stadler 17250429db Various EAS related changes related to accounts and services.
* Renamed ISyncManager/ISyncManagerCallback to IEmailService/IEmailServiceCallback
* Restored ExchangeTransportExample to its original state; created ExchangeStore to
  handle validation functionality instead; updated stores.xml to reflect these changes.
* Add support for AccountManager in EAS code (this is necessary for the contacts and
  calendar providers to work with syncable data); created EasAuthenticatorService to
  as our authenticator, which required adding authenticator.xml and modifying the
  manifest to register our service with AccountManager metadata
* Created EmailServiceProxy as a convenience for the UI in calling into the EAS
  service; created EmailServiceStatus class for status codes in callbacks.
2009-07-13 19:10:08 -07:00
Andrew Stadler ded3c915d8 Add folders to AccountFolderList
* Scan folders and write into child cursors
* Clicking a folder takes you to MessageList
* Remove most links to FolderMessageList (nearly dead!)
* Repair 1-account startup behavior (takes you directly to inbox)
* Cleanup a few basic things like context menus & refresh

TODO: Magic mailbox section at the top
TODO: As always, better linkage to sync engine(s)
TODO: Menus, context menus, etc.
TODO: Proper handling of expandable list - accounts should stay open?
2009-07-10 16:46:51 -07:00
Andrew Stadler 72dce73390 Convert Accounts to AccountFolderList
* Move relevant sources & resources to new name
* Convert from ListView to ExpandableListView
* No children yet - selecting account simply jumps to FML (temp)
* No other change to functionality (e.g. no menu changes yet)
2009-07-09 12:33:09 -07:00
Andrew Stadler b55bfc96f4 Enable multi-selection actions
* Toggle small pane with multi-select action buttons
* Implement multi-read/unread
* Implement multi-favorites (stars)
* Implement multi-delete

TODO: menu items when there are selected items
2009-07-08 16:09:45 -07:00
Mihai Preda e8d58c01ec Implement efficient Address pack/unpack and unit-test it.
Also unit-test legacy pack/unpack.
2009-07-08 12:07:58 -07:00
Andrew Stadler 432d1ec3ed Add custom item view to MessageList
* Stores per-message metadata
* Fix a number of todo's in MessageList
* Clicking on checkbox toggles state, updates checked list
* clicking on star toggles favorite state

To do:  When one or more messages are checked, we should slide in a
panel with action buttons.
2009-07-07 13:43:24 -07:00
Andrew Stadler a396a9bf14 Minor cleanups (layout only) 2009-07-07 11:36:04 -07:00
Android (Google) Code Review 5e444dd794 Merge change 5793
* changes:
  Major refactor and cleanup of EAS code
2009-07-07 11:17:48 -07:00
Marc Blank b6493a07ef Major refactor and cleanup of EAS code
* Rewrote push logic to encompass multiple folders (i.e. calendar/contacts)
    * Change inbox from push frequency to ping frequency after initial sync
    * Implement upsync logic for email (i.e. sending changes to the server)
    * Did cleanup of some files (there's still some to do) re: format, style
    * Initial one-way sync of Contacts data - add and delete are implemented
    * Created adapter package for all parts of the EAS adapter
    * Created utility package for utility code that will eventually be merged
      with code in the Email application (Base64, QuotedPrintable, etc.)
    * SyncManager/AbstractSyncService can be used in the future for other
      protocols, especially IMAP push
2009-07-07 00:30:24 -07:00
Andrew Stadler 61e6ff4521 Fixed minor typo in MessageView 2009-07-06 19:02:16 -07:00
Andrew Stadler 7c3cca80a0 Reenable delete-message UI and write delete-from-provider.
* Longpress delete in MessageList
* Delete or Menu-Delete in MessageView
* Add deleteMessage() to Controller
* Unit tests for the new code in Controller
2009-07-06 13:58:30 -07:00
Andrew Stadler 45f9dd22e1 Fix bug in GroupMessagingListener and add unit tests 2009-07-02 14:29:02 -07:00
Andrew Stadler bb0f962dbb Enable message read/unread toggling
* Automatically marked read when entering MessageView
* Marked unread via menu selected during MessageView
* Provider updated (directly - see note)
* Enable context menu in MessageList and enable "open" & toggle unread

NOTE: Does not use the correct service notifications yet;  Just updates
the providers.

NOTE: The UI for the context menu is incomplete, it says "mark as read"
but it actually toggles the state.  The true UI is to flip the text to
match the current state e.g. "mark as read" or "mark as unread".  That
will be much simpler to implement when we switch to a custom list item
view class, where we can cache the read/unread state (and other tidbits).
2009-07-01 16:04:30 -07:00
Andrew Stadler 48c8cc34b7 Add "favorite" star to MessageView
* Shown next to subject (non-final layout)
* Value taken from provider data
* Tapping star toggles state
* State writes back to provider

NOTE:  I am currently doing the provider writeback via direct provider
calls (using the synced-message URI) but not doing it with a service call,
so at this point there is no triggering of any server-side update.
However a sync engine might "discover" the change.

NOTE:  I made a global change of "mMessage" to "mOldMessage" because
there is still a lot of legacy code in MessageView and I wanted to clearly
demarcate the code that still needs to be redone.
2009-07-01 12:11:47 -07:00
Andrew Stadler 7c3de93429 Add attachments, favorites, and selections to MessageList.
* Attachment icon is displayed when message.mAttachment != 0
* Favorite icon is set/cleared from message but not clickable
* Selection icon is not clickable

Further progress requires implementing a custom child view which can
handle sub-clicks properly.
2009-07-01 10:47:23 -07:00
Andrew Stadler 4765472db8 Add MessageList activity
* Add MessageList Activity class and Manifest entry
* Add appropriate layouts, views, etc.
* Wire into FolderMessageList

Lots to do, but this gives us a useable screen.
2009-06-30 15:15:07 -07:00
Mihai Preda b7e954bba6 Fix ConcurrentModificationException in MessagingController.
The exception was caused by removing from the HashSet (in Controller.java)
while iterating over it. The locking offered no protection in that case.

Extracted the notification of listeners (MessagingListener) in separate class
to simplify reimplementation.

Got rid of a couple of generic catch(Exception) that were hiding surprises.
2009-06-30 11:22:43 -07:00
Andrew Stadler ddc871d9ed Fixed a few EmailProvider omissions; added tests
* EmailProvider query wasn't handling queries for deleted messages
* EmailProvider wasn't catching exceptions on some 'drop table' ops
* Added tests of synced messages (delete and update)
2009-06-29 23:08:40 -07:00
Takaoka G. Tadashi 2ed5063274 am 4f23ebd3: Fixed Pop3Store to be able to delete message in Inbox.
Merge commit '4f23ebd3dcca596533a33e6faedb446a814d32e3'

* commit '4f23ebd3dcca596533a33e6faedb446a814d32e3':
  Fixed Pop3Store to be able to delete message in Inbox.
2009-06-29 20:20:23 -07:00
Marc Blank 73018c31d6 Add new mailbox types for use by EAS 2009-06-27 17:21:44 -07:00
Marc Blank f374304e92 Add support for sync related provider operations
There is now a deleted table as well as an updated table for Messages,
and some new URIs that are well documented in EmailProvider
2009-06-27 14:41:41 -07:00
Takaoka G. Tadashi 4f23ebd3dc Fixed Pop3Store to be able to delete message in Inbox.
When delete policy is DELETE_POLICY_ON_DELETE, PENDING_COMMAND_TRASH
will be invoked. But in POP3 account, because of 1) Inbox is
OpenMode.READ_ONLY, 2) getMessage(uid) just after open() is not work
correctly, 3) remote Inbox folder is not closed after deleting message,
PENDING_COMMAND_TRASH does not work.  And also the fat that some POP3
server use UID with '-' prevents PENDING_COMMAND_TRASH to recognize
the message is remote message.

Internal Bug: 1651709
2009-06-26 10:36:27 +09:00
Andrew Stadler 7143d969dd Add unit tests for Provider and fix bugs that were found
Uses a mock provider to avoid touching production databases.
Includes utilities for creating accounts, mailboxes, and messages.
Tests basic object creation & readback, object deletion, and some
forms of hierarchical deletion.  Has many TODO notes for additional
tests to be written.

In EmailContent, found & fixed a few fields that weren't being written to
the database properly.
2009-06-25 00:02:29 -07:00
Android (Google) Code Review c3905eccdd Merge change 4842
* changes:
  Don't drop invalid addresses while editing & check that all addresses are valid before send.
2009-06-24 15:49:02 -07:00
Mihai Preda ed0e683d86 Don't drop invalid addresses while editing & check that all addresses are valid before send.
BUG: 1542391
add unit tests.
2009-06-24 15:44:08 -07:00
Andrew Stadler 5f4dbd6438 Attempt to download small messages, and POP messages.
POP doesn't supply headers in the ENVELOPE phase, so we have to
explicitly ask for, download, copy, and save small message bodies.

Fix bug in EmailProvider (it was not always detaching the body db),
leaving the DB locked in some situations.

Problems outstanding:
* POP messages are committed before they have headers, which leads
to blank entries in the UI.  It might be worth tagging them and
selecting them out until they're ready to display.
* Inefficient because we're reloading the message from the provider on
each pass, instead of hanging onto it and updating it.
* Not marking "complete" yet because we aren't handling attachments
or inline images yet.  So we keep on reloadin'.
2009-06-24 12:48:57 -07:00
Marc Blank 1cdb4077d9 Only sync EAS mailboxes 2009-06-24 09:57:05 -07:00
Marc Blank 09d13e6295 Clean up Exchange code
Clean up imports to point to the com.android.exchange version of EmailContent
Clean up some line wrapping
Update EmailContent with latest version from Email project
2009-06-23 17:59:27 -07:00
Marc Blank 2c67f1f8b8 Initial submission for EAS support (email)
* There is some temporary code ensuring that SyncManager runs (this will be removed when Exchange
is entirely independent)
* The service interface (aidl) is in place for most user-facing actions (load more, start sync, etc.)
* EAS account validation is done via aidl
* Folder and message sync appear to be functional in this early submission
* Provider now does cascading deletes (Account -> HostAuth and Mailbox, Mailbox -> Message,
  Message -> Attachment and Body)
2009-06-23 13:13:42 -07:00
Andrew Stadler 553603337a Quick cleanups of FolderMessageList and MessageView
Show date/time properly
Unpack from, to, cc, bcc
2009-06-22 21:56:04 -07:00
Andrew Stadler 7b0b463477 List messages from MessagingController & Stores.
* update MessageListener callbacks and remove the callbacks that
  edit data (this comes through the provider now).
* provide simple linkage via Controller to sync a mailbox
* update FolderMessageList to trigger mailbox sync
* rewrite synchronize to push messages into provider
* small improvements to FML (sorting;  show read/unread status)
* note: trailing whitespace cleanup in some files
2009-06-22 16:13:03 -07:00
Marc Blank 33e176f491 Remove the bodyId column in the message base for consistency
Foreign keys belong in the child, not the parent, as is done with other
EmailContent classes.  Therefore, Body has a messageKey, and Message has
no bodyKey.

Updated MessageView to use the proper query for retrieving a message body.
2009-06-22 12:13:06 -07:00
Andrew Stadler 07871c4ce7 Clean up code to delete account & delete mailbox.
Delete account was already written but needed to be cleaned out (and
removed vestiges of LocalStore code as well.)

Delete mailbox required some new code in listFolders.  This happens
every time we refresh an account.
2009-06-22 11:39:40 -07:00
Mihai Preda 6c5460886f am a4926736: Review Email tests annotations (small/medium/large) and change some annotations based on time.
Merge commit 'a492673609111fe8c41ae152d62547b267346502'

* commit 'a492673609111fe8c41ae152d62547b267346502':
  Review Email tests annotations (small/medium/large) and change some annotations based on time.
2009-06-18 13:12:45 -07:00
Mihai Preda a492673609 Review Email tests annotations (small/medium/large) and change some annotations based on time.
Fix an NPE appearing when running the test suite.

BUG: 1566281, 1910409.
2009-06-18 12:16:28 -07:00
Andrew Stadler bcec088320 Begin implementation of new master controller
The first thing we'll implement is a function to list remote folders,
and it will call the existing MessagingController to do that for IMAP
and POP3.

Also change default folder type # order to get desired order in UI
2009-06-17 16:15:37 -07:00
Android (Google) Code Review 19fd130680 Merge change 4482
* changes:
  Add URI's for updated messages, and Provider support for them
2009-06-17 11:26:11 -07:00
Marc Blank e34525d0f0 Add URI's for updated messages, and Provider support for them
Messages that have been updated in the database live in a different table
and therefore can't be accessed in the provider without the added support.
2009-06-17 11:20:32 -07:00
Mihai Preda 94386cce2a am aeeefedb: Thumbnail cache file should be deleted when AttachmentProvider is created.
Merge commit 'aeeefedb43c40e887850654ac88270755f5631c1'

* commit 'aeeefedb43c40e887850654ac88270755f5631c1':
  Thumbnail cache file should be deleted when AttachmentProvider is created.
2009-06-16 16:43:07 -07:00
Mihai Preda 50a24d5e95 am 075e9d51: Added recursive limit check to renderAttachments method.
Merge commit '075e9d5104c0e23a6188677f5c9e99fcbcfdbc60'

* commit '075e9d5104c0e23a6188677f5c9e99fcbcfdbc60':
  Added recursive limit check to renderAttachments method.
2009-06-16 16:42:49 -07:00
Mihai Preda d250bcd5cd resolved conflicts for merge of a830816f to master 2009-06-16 15:51:11 -07:00
Marc Blank 1f5a93936b Fix to bug in Message.save 2009-06-16 11:26:40 -07:00
Mihai Preda aeeefedb43 Thumbnail cache file should be deleted when AttachmentProvider is created.
Integrates CL 149651 from p4 Docomo email.
Bug 1902523.
2009-06-15 18:35:38 -07:00
Mihai Preda 075e9d5104 Added recursive limit check to renderAttachments method.
Integrates CL 149561 from p4 Docomo email.
Bug 1897000.
2009-06-15 18:10:29 -07:00
Mihai Preda a830816fe2 Updating attachment thumbnail after attachment or inline image has been downloaded.
Integrates 149560 from Docomo email.
2009-06-15 18:01:19 -07:00
Andrew Stadler b5903285dd Enable MessageView using provider.
Very primitive, just shows a few headers, and no navigation at all (you
can only go "back" from here.
2009-06-15 16:46:38 -07:00
Andrew Stadler 1da551bd08 Fix build break, master # 4712 2009-06-15 15:21:43 -07:00
Marc Blank a290f503f1 Refactored EmailStore, EmailContent, EmailProvider
EmailStore goes away, replaced by EmailContent
All database activity is moved to EmailProvider
2009-06-15 14:49:11 -07:00
Andrew Stadler 879318ee30 Add message list (from provider) to FolderMessageList.
1.  Use proper AsyncTask for all cursors
2.  Convert to CursorTreeAdapter and get data from cursors
3.  (Temporarily) block all context menus and other things that would
    crash.

With this CL you can view folders and see the message list but you cannot
view the messages (that's next).
2009-06-15 09:25:39 -07:00
The Android Open Source Project a244abdad0 Do not merge. Merge commit '14f3e16' into donut 2009-06-15 00:08:40 -07:00
The Android Open Source Project 14f3e16793 IA 149719: Display Bcc: field if present... 2009-06-15 00:01:17 -07:00
Andrew Stadler 13b92c618e Convert Accounts activity to use AsyncTask 2009-06-10 15:53:02 -07:00
Mihai Preda 0dff228dc7 AI 149714: Download inline images for viewing if necessary and don't
delete attachment cache files if these are inline images.
  The purpose of original logic of loadAttachmnet() is to keep
  at most one attachment cache, probably to limit the size of
  cached file.  But it also purges all inline images.
  Integrates CL 149551 from DocomoEmail.
  BUG=1884385,1860250

Automated import of CL 149714
2009-06-10 10:48:32 -07:00
Andrew Stadler 68a9ccfcde final cleanups to get basic message operations working properly.
* Generate compatibility UUID early enough to stick, so our localstore
db's are created correctly and not recreated over and over again.
* Compose menu items working
* Fix single-account mode (go straight to inbox)
* Lightweight Account projections where possible
* Properly show/hide default account checkbox (during new acct screens)

What works:
* All unit tests
* Editing existing accounts
* Create new accounts
* Checking account settings against server
* Mail sync using accounts
* Viewing mailboxes
* Viewing messages
* Composing messages

What breaks (in approx order of planned fixes)
* Some details of account editing
* Import of existing accounts
2009-06-09 16:13:05 -07:00
Andrew Stadler d2b0efa2f5 Cleanup broken unit tests from previous submit. This now works:
What works:
* All unit tests
* Editing existing accounts
* Create new accounts
* Checking account settings against server
* Mail sync using accounts
* Viewing mailboxes

What breaks (in approx order of planned fixes)
* Viewing messages
* Composing messages
* Some details of account editing
* Import of existing accounts
2009-06-09 14:46:30 -07:00
Andrew Stadler c0033f24a2 Convert remainder of app to use provider-based accounts
What works:
* Unit tests, except for com.android.email.activity.setup.*
* Editing existing accounts
* Create new accounts
* Checking account settings against server
* Mail sync using accounts
* Viewing mailboxes

What breaks (in approx order of planned fixes)
* Unit tests in com.android.email.activity.setup.*
* Viewing messages
* Composing messages
* Some details of account editing
* Import of existing accounts
2009-06-08 15:42:40 -07:00
Mihai Preda 7ac2b6e048 am a9576bda: resolved conflicts for merge of 7403a54738 to donut
Merge commit 'a9576bdad6d9711c9e790fdbad3cbb1ab5c5fb03'

* commit 'a9576bdad6d9711c9e790fdbad3cbb1ab5c5fb03':
  AI 149664: Move escapeChar from MessageView to EmailHtmlUtil.
2009-06-08 12:23:43 -07:00
Mihai Preda a9576bdad6 resolved conflicts for merge of 7403a54738 to donut 2009-06-08 20:52:12 +02:00
Mihai Preda 7403a54738 AI 149664: Move escapeChar from MessageView to EmailHtmlUtil.
Integrate CL 148437 from DocomoEmail.
  BUG=1860250

Automated import of CL 149664
2009-06-08 11:21:18 -07:00
Andrew Stadler 294a4fd0c6 Enable creation of new accounts using provider-based accounts.
What works:
* Editing existing accounts
* Create new accounts
* Checking account settings against server

What breaks (in approx order of planned fixes)
* Some details of account editing
* Viewing mailboxes & messages
* Mail sync using accounts
* Import of existing accounts
2009-06-05 16:09:18 -07:00
Mihai Preda da93b380d1 am 23a27697: Merge branch \'readonly-p4-donut\' into donut
Merge commit '23a27697963642d6450b70dd83709492c1bdde72'

* commit '23a27697963642d6450b70dd83709492c1bdde72':
  AI 149607: Add relevant title to attachment file chooser.
2009-06-05 11:41:33 -07:00
Mihai Preda c4a9e52f49 am cf4a3aea: Merge branch \'readonly-p4-donut\' into donut
Merge commit 'cf4a3aea3fa31210deca572c6c933034036fe558'

* commit 'cf4a3aea3fa31210deca572c6c933034036fe558':
  AI 149604: Localized the special folders name in FolderMessageView.
2009-06-05 11:41:21 -07:00
Mihai Preda 84bba2c57b am 9c629105: Merge branch \'readonly-p4-donut\' into donut
Merge commit '9c62910550ee132ead267fa465a726f917db7fd0'

* commit '9c62910550ee132ead267fa465a726f917db7fd0':
  AI 149603: Show progress dialog while loading attachment. Fixed possible ArrayIndexOutOfBoundsException in message view.
2009-06-05 11:41:20 -07:00
Mihai Preda 8043caa55a am 4dad6670: Merge branch \'readonly-p4-donut\' into donut
Merge commit '4dad6670724a57e560aac3d07bfda0a1f05fd2f2'

* commit '4dad6670724a57e560aac3d07bfda0a1f05fd2f2':
  AI 149600: Fixed message view web link be more robust.
2009-06-05 11:41:05 -07:00
Mihai Preda 23a2769796 Merge branch 'readonly-p4-donut' into donut 2009-06-05 11:38:31 -07:00
Mihai Preda a00eb291f1 AI 149607: Add relevant title to attachment file chooser.
Delete the original source message only when the message is in Drafts folder.
  If the original message is in the other folder than Drafts, it should be
  retained.
  Integrates 149194,149306,149459 from DocomoEmail.
  BUG=1860250,1887835

Automated import of CL 149607
2009-06-05 11:36:17 -07:00
Mihai Preda cf4a3aea3f Merge branch 'readonly-p4-donut' into donut 2009-06-05 10:50:26 -07:00
Mihai Preda 7eb313fb00 AI 149604: Localized the special folders name in FolderMessageView.
Integrates 149049,149217 from DocomoEmail.
  BUG=1860091,1860250

Automated import of CL 149604
2009-06-05 10:48:20 -07:00
Mihai Preda 9c62910550 Merge branch 'readonly-p4-donut' into donut 2009-06-05 10:35:38 -07:00
Mihai Preda c099563834 AI 149603: Show progress dialog while loading attachment. Fixed possible ArrayIndexOutOfBoundsException in message view.
Integrates 149422,149510,149516 from DocomoEmail.
  In some situation, email header From: might be empty or have
  illegal email address.  The assumption that From: must exist
  will be violated and causes ArrayIndexOutOfBoundsException.
  BUG=1741969,1890770,1860250

Automated import of CL 149603
2009-06-05 10:33:22 -07:00
Mihai Preda f53ef9b50c Merge commit 'goog/donut' into donut 2009-06-05 10:08:37 -07:00
Mihai Preda 4dad667072 Merge branch 'readonly-p4-donut' into donut 2009-06-05 08:38:58 -07:00
Mihai Preda 980385b0f9 AI 149600: Fixed message view web link be more robust.
Integrates 149300 from DocomoEmail.
  This is work around for
  - Regex.WEB_URL_PATTERN would not handle protocol part case
  insensitive correctly.
  - WebView only could follow the href link that protocol part
  is lower case.
  BUG=1860250,1842508

Automated import of CL 149600
2009-06-05 08:34:52 -07:00
Andrew Stadler f5df628991 am a392e070: Add android.permission.WRITE_EXTERNAL_STORAGE Add unit test to verify writeable to sdcard.
Merge commit 'a392e070bc9590986e57ef6a89bed34f7efc10d0'

* commit 'a392e070bc9590986e57ef6a89bed34f7efc10d0':
  Add android.permission.WRITE_EXTERNAL_STORAGE
2009-06-04 23:48:25 -07:00
Mihai Preda 372c12bfbb am a15503a4: Merge branch \'readonly-p4-donut\' into donut
Merge commit 'a15503a4a6cf46e810bde4aedc846680ed288c1c'

* commit 'a15503a4a6cf46e810bde4aedc846680ed288c1c':
  AI 149578: Fixed possible NullPointerException in MessageCompose.
2009-06-04 22:43:34 -07:00
Mihai Preda 18106fe981 am 7330fe49: Merge branch \'readonly-p4-donut\' into donut
Merge commit '7330fe4953c39741376bdd8cb3e5c2c03068b0aa'

* commit '7330fe4953c39741376bdd8cb3e5c2c03068b0aa':
  AI 149573: Display To: instead of From: in Drafts folder && Display unread message count for inbox, total message count everywhere else.
2009-06-04 22:43:17 -07:00
Andrew Stadler a392e070bc Add android.permission.WRITE_EXTERNAL_STORAGE
Add unit test to verify writeable to sdcard.

Fixed bug http://b/issue?id=1883487
2009-06-04 15:16:43 -07:00
Mihai Preda a15503a4a6 Merge branch 'readonly-p4-donut' into donut 2009-06-04 12:50:26 -07:00
Mihai Preda e6ec9d86e8 AI 149578: Fixed possible NullPointerException in MessageCompose.
Integrates 148996,149295 from imode email.
  BUG=1862155,1798576,1860250

Automated import of CL 149578
2009-06-04 12:48:20 -07:00
Mihai Preda 7330fe4953 Merge branch 'readonly-p4-donut' into donut 2009-06-04 11:40:35 -07:00
Mihai Preda 70798a7892 AI 149573: Display To: instead of From: in Drafts folder && Display unread message count for inbox, total message count everywhere else.
Integrates from imode email: 148948,149107,149247,149248,149249,149287.
  BUG=1591391,1842520,1860085,1459866,1860250

Automated import of CL 149573
2009-06-04 11:38:26 -07:00
Mihai Preda 98475b1d7c am 438275b2: Merge branch \'readonly-p4-donut\' into donut
Merge commit '438275b283224a9f830e42d4e645981d1f73589b'

* commit '438275b283224a9f830e42d4e645981d1f73589b':
  AI 149564: Escape special characters such as '<>&' in text/plain for display in WebView.
2009-06-04 09:46:29 -07:00
Mihai Preda 438275b283 Merge branch 'readonly-p4-donut' into donut 2009-06-04 09:42:51 -07:00
Mihai Preda ca5089efb8 AI 149564: Escape special characters such as '<>&' in text/plain for display in WebView.
Integrate CL 144586,145919 from imode.
  Remove the Emoji escaping/workaround for WebView.
  Also integrate MimeHeader.java from CL 143064 from imode.
  BUG=1785319,1860250

Automated import of CL 149564
2009-06-04 09:39:24 -07:00
Andrew Stadler 9019315b26 Conversion to provider-based Account. What works:
* Editing existing accounts
 * Two placeholder accounts are written

What breaks (in approx order of planned fixes)
 * Some details of account editing
 * New account creation,
 * Viewing mailboxes & messages
 * Mail sync using accounts
 * Import of existing accounts
2009-06-03 16:11:36 -07:00
Mihai Preda 361a7225f2 am d64d0e56: Merge branch \'readonly-p4-donut\' into donut
Merge commit 'd64d0e56de58ca3c776f2edae1ebbbafd500d15e'

* commit 'd64d0e56de58ca3c776f2edae1ebbbafd500d15e':
  AI 149523: Correctly display inline images in Reply and Forward messages.
2009-06-03 06:49:56 -07:00
Mihai Preda d64d0e56de Merge branch 'readonly-p4-donut' into donut 2009-06-03 06:47:40 -07:00
Mihai Preda 7436601fae AI 149523: Correctly display inline images in Reply and Forward messages.
Integrates CL 148436, 148515, 148833 from imode email.
  BUG=1814789,1860250

Automated import of CL 149523
2009-06-03 06:44:47 -07:00
Fred Quintana 84969fb580 update to adhere to applyBatch changes 2009-06-01 17:06:26 -07:00
Andreas Huber 0cb7ddfc27 Fixing the build. Methods implementing interfaces must not be declared @Override. 2009-06-01 15:03:34 -07:00
Andrew Stadler 626f3e48a4 Updates to EmailStore and EmailProvider:
1. Call notifyChange() after all API calls.
  2. Make Account & HostAuth parcelable
  3. Temporary APIs to create "store URI" strings for the existing mail code
2009-06-01 14:34:16 -07:00
Mihai Preda 061f4d21dc am d9c1e51d: Merge branch \'readonly-p4-donut\' into donut
Merge commit 'd9c1e51d841369ba7f26b8769337471ca10b7b84'

* commit 'd9c1e51d841369ba7f26b8769337471ca10b7b84':
  AI 149446: Add sending pending outbox message feature; integrates 148664, 148823 from imode to donut.
2009-06-01 13:13:38 -07:00
Mihai Preda d9c1e51d84 Merge branch 'readonly-p4-donut' into donut 2009-06-01 12:40:16 -07:00
Mihai Preda 39137e51aa AI 149446: Add sending pending outbox message feature; integrates 148664, 148823 from imode to donut.
BUG=1860250,1793767

Automated import of CL 149446
2009-06-01 12:38:20 -07:00
Mihai Preda 4c27102aea am fbde900c: Merge branch \'readonly-p4-donut\' into donut
Merge commit 'fbde900c37ae76ec3c6181b3328d4ddf7c46cc7e'

* commit 'fbde900c37ae76ec3c6181b3328d4ddf7c46cc7e':
  AI 149442: Integrate CL#140625 (Fix attachment uri and content uri confusion) from imode to donut.
  AI 149328: Add extended header support to MimeMessage, MimeBodyPart, and LocalStore.
2009-06-01 11:34:46 -07:00
Mihai Preda fbde900c37 Merge branch 'readonly-p4-donut' into donut 2009-06-01 11:31:52 -07:00
Mihai Preda 5182d80674 AI 149442: Integrate CL#140625 (Fix attachment uri and content uri confusion) from imode to donut.
BUG=1598754,1860250

Automated import of CL 149442
2009-06-01 11:28:33 -07:00
Marc Blank fae4727a91 Squashed commit of the following:
commit 19beb6f0cc6c0f3f0cbcdcd66cec9f141b470d70
Author: Marc Blank <mblank@google.com>
Date:   Fri May 29 14:23:01 2009 -0700

    Changes to EmailProvider

commit 84cced7b94bde4688ad986a45a6bf876cde3bdbe
Author: Marc Blank <mblank@google.com>
Date:   Fri May 29 14:02:20 2009 -0700

    Fix additional formatting issues.

commit 1faeb1763ba8a967fbf79ddbc48822af08c65a15
Author: Marc Blank <mblank@google.com>
Date:   Thu May 28 19:26:03 2009 -0700

    Changes in EmailStore.Account
    - Add isDefault column
    - Add status methods setDefaultAccount/getDefaultAccount

    Resubmit previous with formatting issues addressed.
2009-05-29 16:08:17 -07:00
Andrew Stadler ea6b71e0f4 Per android code style guide, all member variables start with "m" 2009-05-28 11:46:09 -07:00
Tadashi Takaoka 7b92d9a2a9 Merge branch 'readonly-p4-donut' into donut 2009-05-27 19:06:31 -07:00
Tadashi Takaoka a8884b9b72 AI 149328: Add extended header support to MimeMessage, MimeBodyPart, and LocalStore.
This extension is necessary to support some vendor specific
  extended header, such as X-NoRtn-Addr of i-mode.net mail.
  This change will update LocalStore database version to 24.
  And it should be consistent between donutburger Email and DocomoEmail.
  BUG=1741969

Automated import of CL 149328
2009-05-27 19:03:34 -07:00
Andrew Stadler bd649fc1fd General changes to generalize account & hostauth classes:
- Remove references to SMTP and use generic "send" and "recv" notation
  - Move protocol indication into hostauth
  - Add TLS (along with SSL)
2009-05-27 17:30:07 -07:00
Andrew Stadler 2e758791d0 Rename Email to EmailStore to avoid collision with existing Email.java 2009-05-27 16:47:41 -07:00
Marc Blank c5f2a7af76 I fixed the authority in Email to point to the EmailProvider's authority, and I added the EmailProvider to the manifest. 2009-05-27 15:43:27 -07:00
Andrew Stadler f3d5b20236 Import first versions of Provider from Marc 2009-05-26 16:40:34 -07:00
Android (Google) Code Review f50c7fb084 Merge change 2252 into donut
* changes:
  Fix the java.lang.StringIndexOutOfBoundsException that occurs when an SMTP server closes the connection early or returns an empty line. Fix the same error in the Pop3 UIDL parser.
2009-05-26 08:21:24 -07:00
Andy Stadler fc9e1ce030 AI 149203: Manual merge CL 149118: "Make URL which is in the head of body text be
clickable."
  BUG=1810716

Automated import of CL 149203
2009-05-22 12:14:07 -07:00
Andrew Stadler b011a812e0 Fix the java.lang.StringIndexOutOfBoundsException that occurs when an SMTP server closes the connection early or returns an empty line.
Fix the same error in the Pop3 UIDL parser.
2009-05-22 11:48:14 -07:00
Andy Stadler c2887cd81d AI 149140: Automated g4 rollback of changelist 148333.
*** Reason for rollback ***
  Rollback global lock because bug (now fixed) was not caused by
  threading/concurrency.
  *** Original change description ***
  Evidence from failures, and inspection of source, leads me to believe
  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 corrup
  ... description truncated by g4 rollback ...

Automated import of CL 149140
2009-05-21 10:39:04 -07:00
Andy Stadler f9edef8dee AI 149088: Automated g4 rollback of changelist 148488.
*** Reason for rollback ***
  Problem found (bug in ICU encoder/decoder) so instrumentation no
  longer required here.
  *** Original change description ***
  Heavily-instrumented Account.java that's looking for the precise moment
  when an Account string gets corrupted.  Looks for bad base64 strings
  and bad store Uri's.  Logs the error, and (optionally/disabled) throws
  an exception (good for debugging).
  BUG=1822859

Automated import of CL 149088
2009-05-20 17:23:48 -07:00
Andy Stadler c6efb28ad3 AI 149059: Manually merge CL 148988 to fix "Not to revert SEEN flag if POP, and
fixed counting unread messages bug".
  BUG=1785254

Automated import of CL 149059
2009-05-20 10:36:16 -07:00
Andy Stadler 80257af81b AI 149020: Manually merge CLs 148814, 148818 which fix IMAP response parsing to be
able to handle a literal string in the middle of the response.
  BUG=1814528

Automated import of CL 149020
2009-05-19 14:54:49 -07:00
Andy Stadler 305382f790 AI 148488: Heavily-instrumented Account.java that's looking for the precise moment
when an Account string gets corrupted.  Looks for bad base64 strings
  and bad store Uri's.  Logs the error, and (optionally/disabled) throws
  an exception (good for debugging).
  BUG=1822859

Automated import of CL 148488
2009-05-07 14:43:25 -07:00
Andy Stadler 93116fe28e AI 148457: Allow exchange accounts to be set up without an empty domain
specification.  This relaxes a rule that was incorrectly applied.
  BUG=1740626

Automated import of CL 148457
2009-05-07 10:58:05 -07:00
Andy Stadler 08e2bc5bb4 AI 148382: Check cursors in LocalStore so we avoid errors when the folder itself
has been deleted from the DB.  Add unit tests.
  BUG=1835733

Automated import of CL 148382
2009-05-06 18:01:47 -07:00
Andy Stadler 615fcaf337 AI 148378: Allow store to create BinaryTempFileBody from a preexisting file
instead for forcing a copy via input stream.
  BUG=1807499

Automated import of CL 148378
2009-05-06 17:54:14 -07:00
Andy Stadler dab90a7b35 AI 148377: Push Mode changes: (1) Add android.permission.WAKE_LOCK and
READ_PHONE_STATE so a push mode service can hold an active
  network connection, monitor roaming status, etc.  (2) Refresh
  push mode status on Refresh(), not just on Check, so UI
  (settings) changes, which call refresh(), propagate immediately
  to the stores.
  BUG=1776149

Automated import of CL 148377
2009-05-06 17:50:29 -07:00
Andy Stadler 63a22008c7 AI 148376: Two policy changes for lookback window: (1) Change default
for new accounts to "1 day".  (2) Remove "all" from the list
  of available lookback window sizes, to prevent runaway
  during our simplistic sync model.
  BUG=1789913

Automated import of CL 148376
2009-05-06 17:46:25 -07:00
Andy Stadler 3b7a93e8bb AI 148375: Explicitly remove deleted accounts from the Store cache. This resolves
possible bugs when an account is deleted and recreated.
  BUG=1740626

Automated import of CL 148375
2009-05-06 17:42:22 -07:00
Andy Stadler 235609d04e AI 148334: Provide a new entry in MessageUpdateCallbacks by which the store can
indicate that the message of interest no longer exists.  This is used
  in remoteFolder.copyMessages, for example because the message was
  already deleted by another client.
  BUG=1807499

Automated import of CL 148334
2009-05-05 16:36:31 -07:00
Andy Stadler 5293030ba0 AI 148333: Evidence from failures, and inspection of source, leads me to believe
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
2009-05-05 16:32:33 -07:00
Andy Stadler 843125b98a AI 148300: Reduce memory waste in getTextFromPart(), and improve error handling.
Fix NPE's in loadMessageForViewBodyAvailable().
  BUG=1831272

Automated import of CL 148300
2009-05-05 10:26:55 -07:00
Andy Stadler 09866af013 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
2009-05-04 10:28:41 -07:00
Andy Stadler 62c4a62985 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
2009-05-04 10:22:54 -07:00
Andy Stadler 1e2ca965e7 AI 148255: Don't show "Outgoing Settings" preference when sender does not
provide a class for launching the settings editor.
  BUG=1812798

Automated import of CL 148255
2009-05-04 10:17:27 -07:00
Andy Stadler c9f151d4fe AI 148230: Allow stores to indicate if they support server-side copying of sent
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
2009-05-01 16:36:34 -07:00
Andy Stadler 9197f42894 AI 148216: Provide UI for fixed sync window sizes, as required by EAS.
When in fixed sync window size mode, change "load more
  messages" to "refresh".
  BUG=1789913

Automated import of CL 148216
2009-05-01 15:30:33 -07:00
Andy Stadler 035dfc0859 AI 148215: Provide a better way for stores to get their callbacks, since they
might be null at creation time, and available slightly later.
  BUG=1807499

Automated import of CL 148215
2009-05-01 15:25:32 -07:00
Andy Stadler 9ba72bb00d AI 148204: Encapsulate a requirement for some remote stores, that need to preload
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
2009-05-01 14:40:58 -07:00
Andy Stadler c5c2b96739 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
2009-04-30 16:47:50 -07:00
Andy Stadler d8cbeaf7ae AI 148098: Manual merge CL 148086 to fix additional problems with non-ASCII chars
in address fields.
  BUG=1676634

Automated import of CL 148098
2009-04-30 10:18:00 -07:00
Andy Stadler 067d0a87fa AI 148097: Fix bug in exchange account setup (actually it only affects
editing existing accounts).  Added simple functional tests for
  Activity UI.
  BUG=1812798

Automated import of CL 148097
2009-04-30 10:14:00 -07:00
Andy Stadler 05aba0b4ba AI 148096: Fix multiple concurrency bugs in FolderMessageList, which wasn't
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
2009-04-30 10:08:25 -07:00
Andy Stadler c795d8b324 AI 148095: In MessageView, protect the listener callbacks that directly
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
2009-04-30 10:04:06 -07:00
Andy Stadler 0cfffc5222 AI 148091: Manual merge CL 148078 which resolves bugs when you have non-ASCII
names in email address fields of MessageCompose.
  BUG=1676657

Automated import of CL 148091
2009-04-30 09:38:30 -07:00
Andy Stadler 3c3add638e AI 148027: Fix concurrency failure in Folder.getUnreadMessageCount() and
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
2009-04-29 17:17:14 -07:00
Andy Stadler c05afb24bb AI 148019: Add "accountInstanceLimit" to stores.xml so a given type of connection
(e.g. EAS) can limit itself to n (usually 1) accounts per device.
  The UI for this is really simple - don't show the EAS button when the
  limit is reached.  More work would be required in
  AccountSetupAccountType.java in order to do a more sophisticated UI
  (e.g. show the button but pop a toast if the limit is reached.)
  BUG=1740626

Automated import of CL 148019
2009-04-29 17:10:25 -07:00
Andy Stadler 8264c4fa21 AI 148002: Add X_DOWNLOADED_FULL, X_DOWNLOADED_PARTIAL, and DELETED flags
to the set that are stored in their own columns (and thus can
  be quickly selected from).  Add code to migrate old style
  flags into new flags.  Add tests.
  BUG=1786939

Automated import of CL 148002
2009-04-29 17:07:03 -07:00
Andy Stadler a13aea24a3 AI 147868: Fix CL 146360 which didn't make the changes persistent. Changed
MessagingController to accept and track a Context, instead of the
  unnecessary Application object, which makes this fix more testable.
  BUG=1790798

Automated import of CL 147868
2009-04-27 17:24:41 -07:00
Andy Stadler de6b2519be AI 147866: To better support remote stores that write back persistent data
or other changes during a delete operation, we need to explicitly
  open the remote trash folder and give it the callbacks.
  BUG=1807499

Automated import of CL 147866
2009-04-27 17:17:22 -07:00
Andy Stadler 6c0cd49610 AI 147839: In checkMail(), do a listFolders() before the existing sync...()
calls for each account.  This allows the folder list to be
  updated before it is synced, which is necessary for some
  stores.
  BUG=1807499

Automated import of CL 147839
2009-04-27 09:18:01 -07:00
Andy Stadler b24a1eb3d0 AI 147765: Fix concurrency bugs in MessagingController, in the collections
mCommands and mListeners.
  BUG=1812798

Automated import of CL 147765
2009-04-24 16:17:04 -07:00
Andy Stadler 100867a231 AI 147730: 1. Create an API by which a Store can specify its own custom
synchronizer code.
  2. Refactor (and spell-fix) the core folder synchronizer.  Extract
  the innards that are IMAP/POP specific, leaving common wrapper
  code in a simpler shell.
  3. For each account & folder to sync, check the store and call
  the specialized sync'er (if provided) or the generic one.
  BUG=1807499

Automated import of CL 147730
2009-04-24 13:25:34 -07:00
Andy Stadler 5551f7feb2 AI 147714: New, lighter-weight version of CL 147620. Still touches as many files,
due to API change, but still has a smaller footprint.  Also fixes the
  bug in the original, which is that we actually needed to udpate the
  local trash folder, not the remote one.
  BUG=1807499

Automated import of CL 147714
2009-04-24 11:54:42 -07:00
Andy Stadler b633efa2b7 AI 147708: Automated g4 rollback of changelist 147620.
*** Reason for rollback ***
  We figured out a simpler solution affecting fewer files - we
  don't actually need the new remotestore API.
  *** Original change description ***
  Some stores require changing the UID of a message when it is
  copied to a new folder (I'm looking at you, EAS).  Add a callback
  to Folder.copyMessages() which allows the store to report back
  such changes.  Then, add a new api to record the new values:
  Folder.updateMessages().
  For now, the two APIs are linked by a common callsite in
  MessagingController, so the existing stores can use a minimal
  implementation - if they don't call the callback, nobody will
  call the update.
  BUG=1807499

Automated import of CL 147708
2009-04-24 11:13:36 -07:00
Andy Stadler 1df530294d AI 147620: Some stores require changing the UID of a message when it is
copied to a new folder (I'm looking at you, EAS).  Add a callback
  to Folder.copyMessages() which allows the store to report back
  such changes.  Then, add a new api to record the new values:
  Folder.updateMessages().
  For now, the two APIs are linked by a common callsite in
  MessagingController, so the existing stores can use a minimal
  implementation - if they don't call the callback, nobody will
  call the update.
  BUG=1807499

Automated import of CL 147620
2009-04-23 23:16:01 -07:00
Andy Stadler 72288724d4 AI 147538: Because mPreferences is transient, we need to pass Context into the
persistent callbacks, in order to recreate it occasionally.
  BUG=1786939

Automated import of CL 147538
2009-04-23 16:42:23 -07:00
Andy Stadler f2c5f08b32 AI 147537: Fix copy/paste mistake in previous CL.
BUG=1807499

Automated import of CL 147537
2009-04-23 16:38:44 -07:00
Andy Stadler 3f66d3de11 AI 147486: Change the remote/local mapping callback to be folder-by-folder instead
of for the entire store.
  BUG=1807499

Automated import of CL 147486
2009-04-23 10:49:42 -07:00
Andy Stadler 2990ff1f96 AI 147452: Update LocalFolder.fetch() to support STRUCTURE mode, in
addition to existing support for BODY mode.  Add tests.
  BUG=1807499

Automated import of CL 147452
2009-04-22 23:48:59 -07:00
Andy Stadler 912dc3b194 AI 147423: Provide a hook to notify remote stores that local stores are set up.
BUG=1807499

Automated import of CL 147423
2009-04-22 18:45:22 -07:00
Andy Stadler 29bbfd0b97 AI 147401: Redo the implementation of store-specific flags to allow
deeper database-style operations with them.  This enables two
  new LocalStore APIs to be provided:  A new version of
  GetMessages() that can retrieve only flagged (or un-flagged)
  messages, and a new method to set flags for an entire set of
  messages, in a single SQL transaction.
  BUG=1786939

Automated import of CL 147401
2009-04-22 13:49:57 -07:00
Andy Stadler 7e6df9c6aa AI 146379: Provide a small set of message flags that can be set by stores and will
be persisted by LocalStore.
  BUG=1786939

Automated import of CL 146379
2009-04-15 15:29:00 -07:00
Andy Stadler 37e98419d7 AI 146366: Automated g4 rollback of changelist 146361.
*** Reason for rollback ***
  Despite the markings in the CL, this was inadvertently merged.
  This CL restores donut & downstream branches to the desired state.
  *** Original change description ***
  am: CL 146359 D* N*T M***E - we'll keep the fix for donut+
  Automated g4 rollback of changelist 146273.
  *** Reason for rollback ***
  Inadvertently approved for cupcake, past deadline.
  *** Original change description ***
  Fixed "show pictures" button isnot displayed for HTML messages.
  Original author: stadler
  Merged from: //branches/cupcake/...
  BUG=1766880

Automated import of CL 146366
2009-04-15 13:38:26 -07:00
Andy Stadler af88cfc482 AI 146361: am: CL 146359 DO NOT MERGE - we'll keep the fix for donut+
Automated g4 rollback of changelist 146273.
  *** Reason for rollback ***
  Inadvertently approved for cupcake, past deadline.
  *** Original change description ***
  Fixed "show pictures" button isnot displayed for HTML messages.
  Original author: stadler
  Merged from: //branches/cupcake/...

Automated import of CL 146361
2009-04-15 13:01:48 -07:00
Andy Stadler 1f48259d22 AI 146360: Provide an API by which the server (or store) can tag some
of the role-specific folders such as Drafts, Sent, or Trash.
  This allows us to properly target these folders even on
  systems where they have different names.  I capture the
  tagged names into the existing columns in the account data,
  where they are used elsewhere in the code (no changes
  necessary).
  Use default implementations on POP3 and IMAP for now -
  no change from original behavior.  The new code is
  primarily to support EAS (for now).
  BUG=1790798

Automated import of CL 146360
2009-04-15 12:58:19 -07:00
Andy Stadler 4836f3c289 AI 146331: Make the download window sizing adjustable on a per-store basis.
The default values are 25 (default) and 25 (increment).  This is fine
  for Stores that control downloads by # of messages, but won't work for
  stores that use other measurements - e.g. EAS windows the download in #
  of days.  So for this change:
  1.  Allow the StoreInfo to provide non-default values
  2.  Remove the hardcoded references to the default values
  3.  Use StoreInfo values everywhere
  4.  Set the values to 1,1 in EAS store info
  BUG=1789913

Automated import of CL 146331
2009-04-15 10:58:59 -07:00
Tadashi Takaoka 1464095f9f AI 146274: am: CL 146273 Fixed "show pictures" button isnot displayed for HTML messages.
Original author: takaoka
  Merged from: //branches/cupcake/...

Automated import of CL 146274
2009-04-14 21:42:56 -07:00
Andy Stadler c6039f7d17 AI 146134: Add persistence API for remote stores & folders to use while
syncing.  This provides a key-value store, per folder, that
  can be used by network Stores to record persistent data such
  as sync status, server keys, etc.
  Note that, by definition, this only applies to remote folders
  (e.g. IMAP, POP3). You'll see everywhere that LocalFolder is
  passed null, and this is correct - LocalFolder *is* persistent
  storage and does not need external help.
  Note to reviewers:  The core changes are Folder.java,
  LocalStore.java, and LocalStoreUnitTests.java, so please give
  them the bulk of your reviewer attention.  The other files
  are just following along with minor API changes.  Of those,
  the one worth close examination is MessagingController.java,
  which is the only place in the system where remote Folders
  are bonded with Local Folders and thus where this new API
  comes into play.
  Note to jham:  Can you please take a look at
  LocalStore.LocalFolder.setPersistentString() and recommend
  better SQL foo than my primitive test-then-update-or-insert
  logic, which is not transactional or threadsafe.
  BUG=1786939

Automated import of CL 146134
2009-04-14 10:15:07 -07:00
Andy Stadler cd7e5664f9 AI 146061: Add persistent storage that Store classes can access.
The current design for Store classes (e.g. IMAP) did not provide for
  any persistent storage.  This is the beginning of a mechanism to
  provide that.  It's quite simplisitic - each Store can read/write one
  persistent string - but that's enough for the first simple use case
  (saving some sync data for EAS).
  The core changes here - suggest reviewing first - are in Account.java,
  Store.java, and AccountUnitTests.java.  Everything else is just
  following the API change that was necessary.
  Note that, by definition, this only applies to remote stores (e.g.
  IMAP, POP3).  You'll see everywhere that LocalStore is passed null, and
  this is correct - LocalStore *is* persistent storage and does not need
  access (so far, at least).
  BUG=1786939

Automated import of CL 146061
2009-04-13 20:07:56 -07:00
Andy Stadler 8664ecf181 AI 145227: Add callback for push-mode stores to report async updates.
The logic for this is quite simplistic, for now:  When the store
  reports that it has new messages, it triggers a service refresh,
  just as if a pull-mode interval had expired and it is time to
  check the server.
  Note, unfortunately at this time there are no tests, because there
  are not currently any good test seams in MailService.java.
  BUG=1776149

Automated import of CL 145227
2009-04-08 18:42:42 -07:00
Andy Stadler ea6fea9bb2 AI 144953: Provide UI for push mode accounts.
1.  Generalize the code for the various spinners that control
  account check frequency.
  2.  Provide an API for looking up store attributes (and refactor
  existing instatiateStore logic to use it).
  3.  Cleanup the old code that was used to setup frequency spinners.
  4.  Hardwire Exchange accounts to default into push mode.
  Notes to tester:
  1.  For each account type (POP, IMAP, EAS) we need to check that
  auto & manual creation "do the right thing" for frequencies.
  POP & IMAP should offer "none" or time intervals, while EAS
  should offer "push", "none", or time intervals.
  2.  EAS accounts should default to "push", all others to "15 min"
  3.  Make sure that you can edit existing account settings and see
  the right choices (only EAS should be offered push).
  4.  I couldn't write an automated test for the mail checker service,
  please confirm that POP & IMAP accounts are checked at the right
  intervals (or never, if set for "none".)
  BUG=1776149

Automated import of CL 144953
2009-04-07 17:35:13 -07:00
Andy Stadler 87c43cada6 AI 144525: Add structural support for Exchange transport. The idea is that
the shipping client will include the necessary generic pieces for
  configuring an Exchange client (e.g. account setup) but will not
  include actual Exchange client code (e.g. transport / protocol).
  Also added a "sample code" implementation of Exchange for use
  as a starting point for implementors.  (Note, this will not ship
  in Donut, it's a placeholder for working on the "framework"
  aspects.)
  BUG=1740621,1740626

Automated import of CL 144525
2009-04-03 16:02:55 -07:00
Andy Stadler 2b0c619f1e AI 144520: General cleanup after the integrations in CL 143018. Some spelling
errors, inconsistencies in passing Application/Activity/Context, and
  some error handling cleanups.  These are all changes that would have
  probably been made before the original submits, but I didn't want
  to fix them in the integration step.
  BUG=1740621

Automated import of CL 144520
2009-04-03 15:40:49 -07:00
Andy Stadler ae8ca3fbd1 Automated import from //branches/donutburger/...@143018,143018 2009-03-26 17:05:25 -07:00
Andy Stadler dfa98d5e1f Automated import from //branches/donutburger/...@142711,142711 2009-03-25 16:36:11 -07:00
Tadashi Takaoka d12181df8f Automated import from //branches/donutburger/...@142461,142461 2009-03-24 22:45:09 -07:00
Andy Stadler 7265bb729b Automated import from //branches/donutburger/...@142152,142152 2009-03-24 21:31:47 -07:00
Andy Stadler 7dbeb7d91c Automated import from //branches/donutburger/...@141237,141237 2009-03-24 19:53:32 -07:00
The Android Open Source Project 3469902379 auto import from //branches/cupcake_rel/...@140373 2009-03-18 17:39:48 -07:00
The Android Open Source Project 3b85e2c2b5 auto import from //branches/cupcake_rel/...@138607 2009-03-13 13:04:24 -07:00
The Android Open Source Project 3debc4f25a auto import from //branches/cupcake/...@137873 2009-03-11 12:11:58 -07:00
The Android Open Source Project 3db9542af6 auto import from //depot/cupcake/@136594 2009-03-05 14:34:38 -08:00
The Android Open Source Project 96c5af40d6 auto import from //depot/cupcake/@135843 2009-03-03 19:32:22 -08:00
The Android Open Source Project 8c2158a5eb auto import from //depot/cupcake/@135843 2009-03-03 18:28:50 -08:00
The Android Open Source Project 1f5bbf66d1 auto import from //depot/cupcake/@132589 2009-03-03 14:04:31 -08:00
The Android Open Source Project 7a8703fda9 auto import from //depot/cupcake/@137055 2009-03-02 22:54:40 -08:00
The Android Open Source Project 88a1d6f92d auto import from //branches/cupcake/...@132276 2009-02-19 10:57:35 -08:00
The Android Open Source Project ff4eb775df auto import from //branches/cupcake/...@131421 2009-02-13 12:57:53 -08:00
The Android Open Source Project f7ae27b973 auto import from //branches/cupcake/...@130745 2009-02-10 15:44:04 -08:00
The Android Open Source Project be72b1d08a auto import from //branches/cupcake/...@127436 2009-01-22 00:13:44 -08:00
The Android Open Source Project b957c79556 auto import from //branches/cupcake/...@126645 2009-01-15 16:12:13 -08:00
The Android Open Source Project 687f9962d7 Code drop from //branches/cupcake/...@124589 2008-12-17 18:05:56 -08:00
The Android Open Source Project 8978aac197 Initial Contribution 2008-10-21 07:00:00 -07:00