History log of /packages/apps/Mms/src/com/android/mms/data/Conversation.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
ab845dee6565a8dfc384186bc8f2e801a2b087e1 07-Jun-2014 Ye Wen <ywen@google.com> Use unified log tag for Mms app

Change-Id: Icec182674c008c2b9d01a6010a2aafc8111b2b7e
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
a31f51757729c398165682f3107aa17a6e03eb94 30-Jan-2013 Bin Li <libin@marvell.com> Send mms read report if it is required.

Change-Id: I35be42545f000c51ebe71444ab591c42b33160cc
Signed-off-by: Bin Li <libin@marvell.com>
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
8cc338d324dc4c92b686029064882147e9054f17 18-Oct-2012 Tom Taylor <tomtaylor@google.com> Empty draft created on deleting a group MMS message

Bug 7360609

Don't save an mms draft for a group message when there's no text. When the
last message in a thread is deleted, automatically go back to the
ConversationList. Earlier when my deletes were failing because of the
NULL threadId in the pdu table, I noticed an exception thrown from
Conversation.startDelete: "startDeleteAll already in the middle of a delete".
startDelete was being called in a loop and of course sDeletingThreads would
be true if the delete hadn't completed in between iterations. Fix by having
startDelete do all the deleting of multiple threadIds.


Change-Id: Idfb8c0d54d8bb1875bbe7c5163e75bbb0dfbf14d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
ff3e6009a8180701d8f344f9c128c79610e8bcfb 11-Oct-2012 Tom Taylor <tomtaylor@google.com> "No Subject" string is different for incoming and outgoing MMS

Bug 7328074

One line change to "cleanse" the subject snippet for the conversation.

Change-Id: Ia08c65550b4ae53a5bb17bf87c3f78ec6a93045e
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d2f67cfca13a6e415636dc253c371fb76974f5fa 03-Oct-2012 Tom Taylor <tomtaylor@google.com> STOPSHIP: Turn off MessagingNotifications DEBUG flag

Bug 7131792

Undo the debug logging of several CL's. The debug logging tracked notifications,
setting the active thread, creating threadIds, and deleting threads. I left
four debug messages active in the log: 1) cancel notifications, 2) create a
new notification with sound, 3) an sms message was just received, and
4) a new mms message was just received. After debugging various notification
oddities over the last few weeks, those four messages will allow us to
continue to track notifications without a lot of log spew.

Change-Id: I96b599658432fa98f1f06df0d9113449c615dc2a
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d645c8b53ae904bc059ee1ca7232916637c223e5 25-Sep-2012 Tom Taylor <tomtaylor@google.com> Notifications ring many times

Bug 7190093

markAsRead() was causing multiple sound notifications. The code for playing
a half sound notification needed to check whether one of the outstanding
notification was actually for the focused conversation. I'll add this CL
to the list of CL's to turn off logging in.

Change-Id: I84ddc2434630ee60f2eabc273d40195c95cd6061
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
74edcd117fce5097b2eee4e7b3260203257e7959 20-Sep-2012 Tom Taylor <tomtaylor@google.com> Merge "SMS delete behavior odd" into jb-mr1-dev
fef537959e6beb02279e4994934ec88df080846f 20-Sep-2012 Tom Taylor <tomtaylor@google.com> SMS delete behavior odd

Bug 7175606

Add more logging to see if we're trying to create a thread during delete.

Change-Id: If39845c370fd15a7641dc36db074ff0ef6b19c85
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
c6be7e1a81769764ce0b51ce03406ad96944d8e5 19-Sep-2012 Tom Taylor <tomtaylor@google.com> Notification beep sounds every time I open a previously viewed SMS

Bug 7192246
Bug 7117451

Only beep it there are outstanding notifications. Also, there was a race
condition between receiving an sms and putting up a notification and
the conversation getting marked as read.

Change-Id: Ib3050582cbcef2986214fcb82c8c64aa9948211f
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
bc7f97ae7d3661a44211d404fe4e187c35afadce 18-Sep-2012 Tom Taylor <tomtaylor@google.com> Notification goes to new message instead of existing thread

Bug 7169881

blockingUpdateAllNotifications() gets called from Conversation.markAsRead().
markAsRead gets called often, on every DB change (see CMP.mDataSetChangedListener)
and on every user interaction (see CMP.onUserInteraction()).
The call to blockingUpdateAllNotifications() wasn't passing in the threadId.
As a result, the code would build a notification for an incoming message
even though CMP was looking at that thread. This caused the messaging
notification icon to flash in notification bar as notification were
created then quickly dismissed. This change fixes that by not creating
notifications (other than a soft beep) for incoming messaging on the
thread the user is looking at. It also fixes the empty notification that
would take the user to a new conversation.

Change-Id: Ic0177cdd05d198abc85eae9077688c360573c879
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
01303749a722c0e8c8be740166bf4858c12eb7ec 09-Sep-2012 Tom Taylor <tomtaylor@google.com> Old thumbnail shown

Bug 6602473

When a message is deleted, remove the uri from the pdu cache. When a
thread is deleted, clear the pdu cache.

Change-Id: Idb4476c35271180f4faca0f8dbaefd5cff8b8fac
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d64419030e1fec1e751695dab3bd7236e2fb0214 02-Aug-2012 Roger Chen <cxr514033970@gmail.com> Clean and format all imported packages

Change-Id: I2e45f5ba1d56b9b17314a8b0f4c0fc1a5d8fc4d9
Signed-off-by: Roger Chen <cxr514033970@gmail.com>
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
7b6fe946f2e1020432e3600c8863f72449cd4e68 16-May-2012 Tom Taylor <tomtaylor@google.com> Old thumbnail shown

Bug 6490001

DO NOT MERGE
hen a message is deleted, remove the uri from the pdu cache and clear the
thumbnail cache. When a thread is deleted, clear both the pdu and thumbnail
caches.

Change-Id: I361d48fe5430cbf9885656e2fe91ee2f566a25b9
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6bbfdd3cc9cbe6b31dc64f122f3308563d19e077 02-May-2012 Tom Taylor <tomtaylor@google.com> Messaging app crashed

Bug 6350665

There's a race condition in Telephony.Threads.getOrCreateThreadId when it
calls MmsSmsProvider.getThreadId. If a user deletes a thread and a message
for that thread arrives at the same time, it's possible for the delete
to remove the thread found in getThreadId. With this change, getOrCreateThreadId
is wrapped by a function that blocks if we're doing a delete. I tested this
technique by adding a 10 second sleep in onDeleteComplete. The SmsReceiverService,
which calls getOrCreateThreadId is fine being blocked, since it does all of
its work on a background thread.

Change-Id: Ia9fc04052adac15c2252034006dd6cdd5c02f108
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
49e599163acc3200e9bda4fb7825c041b67960f1 13-Jan-2012 jshin <jgsin@samsung.com> Fix for Arabic digit issue in MMS app.

Change Arabic and other Unicode digits to ASCII digits.

bug: 5615791
Change-Id: I22b32aabf3433df6381451bb4989812344e84d6c

Signed-off-by: Jake Hamby <jhamby@google.com>
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
fd36e337347b5f9a945806961d61f1c0b8b3514e 06-Apr-2012 Tom Taylor <tomtaylor@google.com> Notifications do not dismiss

Bug 6298996

A line of code got eliminated in Conversation.markAsRead(). Fixed!

Change-Id: I528930f5dd8424147d97aa0ad3da9bf0590a8f28
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
a56495caea392de00eea50fb84ffdc06537110ba 03-Apr-2012 Tom Taylor <tomtaylor@google.com> Multiple Recipient Failure in MMS

Bug 6062623

The following command fails:
adb shell am start -a android.intent.action.SENDTO -d “sms:+15178923456,+15174356789?body=MessageText”
The app needs to replace commas with semiscolons.

Change-Id: I2c5c349065079f0dcbb12817fec5fe6d3b1a85df
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6a53d30825817a8e70a3da0e591449377306959a 29-Mar-2012 Tom Taylor <tomtaylor@google.com> Messaging App crashes/phone becomes unresponsive

Bug 6175605

Threads were getting created out of control. Greatly
simplify markAsRead and associated code. Use an
AsyncTask (which uses a thread pool) than a bare
naked thread.

Change-Id: Icd1b56a36f45c5d47f30d071fb967b3dca8a6c9b
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
c7aa632be8e7d3ebe71f236f534ea2f0af71e04a 19-Mar-2012 Tom Taylor <tomtaylor@google.com> Add a widget for SMS/MMS

Bug 5935857

Change-Id: I1246487d974fef9de0f26e7b55fad2a940b084d5
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
8112b6847de98297068915e7d95a87a8dc842c64 17-Mar-2012 Todor Kalaydjiev <todor@google.com> Run ContactsCache's worker thread at a lower priority. Same with the
thread that marks all conversations as seen.

This gives us another 30% improvement in the remaining startup time.

Needed for b/5928517

Change-Id: Ia06eb30d4c320e3eb43133658a9a1f0475e9abad
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
ff013e77fd2e30fe98f8935ae04802a2b7fbf714 16-Mar-2012 Todor Kalaydjiev <todor@google.com> Do Conversation.init in a low-priority thread.

This alone gives us an improvement of about 30% in startup time on Crespo.
Needed for b/5928517

Change-Id: Ib6382a3772c11c3fceda51ca7a6f058ce2dd28f9
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
ddd31c4011b4191035bdfbba05a8edb1785f71af 13-Mar-2012 Todor Kalaydjiev <todor@google.com> Give names to all background threads we create. No logic changes.

Also, fix some warnings by adding @Overrides, etc.

Change-Id: I3d7306f25fb917817359bd46b9274e04d86f4e26
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
1b1af7c751218e380bd119629ff9a652157fbb21 10-Jan-2012 Tom Taylor <tomtaylor@google.com> Weird refresh in list of smses showing only numbers for a second

Bug 5649763
When deleting a thread, the code was rebuilding the whole contacts cache
and threads would only show numbers while the contacts were loading. This
is normally only visible for folks with a LOT of conversations. With this
change, deleting a single thread only removes the associated contact(s)
from the cache.

Change-Id: Ia31f9fdcb3654461d93ed5de205a28ab5389a865
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
b6b2ee07c9261504376401070fcfdf09879e7eeb 31-Oct-2011 Tom Taylor <tomtaylor@google.com> PduBodyCache.getPduBody cache not cleared

Bug 5526870
The PduBodyCache was never getting cleared. If you deleted a message
and then added a message and they had the same id, we'd return the old
pdu of the deleted message. It turns out that the PduBodyCache is
redundant because the pdu is already getting cached at a lower level in
the PduCache. Make sure we delete the cache entries associated with
individual messages and threads when those messages and threads are
deleted. While stepping through the change in the debugger to verify
it, I found that the new temp file names that start with '.' stripped
the filename incorrectly.

Change-Id: Ice4e453470eb1186ea69ebe6eca750bb230c5205
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
7a063cb79843369325645ce059ec0f4676e0ca83 25-Oct-2011 Tom Taylor <tomtaylor@google.com> Turn off database log dumps

Bug 5512341
If we run into a recipient inconsistency while sending, log it but don't
dump the user's database into the log. Use a direct method when printing
out the db. The nice LogTag functions use format and if any of the strings
have format characters, this causes a crash.

Change-Id: I597c1b7ac72b346b3b8b3b05843132c243c6fd6d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
5a9381876ce766cc761c3e6ed2ea9a67e19bd716 13-Oct-2011 Tom Taylor <tomtaylor@google.com> Sound name on slides not getting updated

Bug 5446866
The name of the sound on a slide wasn't getting updated on any slide
past the first. Also, change a bunch of LogTag.debug calls back into
Log.d calls. The LogTag.debug calls were crashing when a recipient name
contained formatting characters such as & or ().

Change-Id: Icfe3703d0d84ffb4f10090a59a9fcd994bf62b52
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
b04236e2977ac69e63cc0fa123399a584b606945 05-Oct-2011 Tom Taylor <tomtaylor@google.com> Delete wrong thread during multi-select

Bug 5399568.
If a new message comes in and creates a new thread while the user is
in multi-select mode, tapping delete will delete the wrong thread.
Keep track of threadIds rather than what the list thinks is selected.

Change-Id: Iafa066de9b40977bfa6b97bf320b074121ef994d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
b736686638eca62aa89cb15184711ef38413cb3e 28-Sep-2011 Tom Taylor <tomtaylor@google.com> SMS messages being delivered to wrong contact

Bug 5319828
Last ditch escape hatch at detecting an sms being sent to a wrong
contact. From what we've seen of a database where sending to the wrong
contact had taken place, the in-memory Conversation cache had the
correct threadId, but the wrong recipient. With this change, we do
two checks to verify that the recipients for a particular thread match
the recipients associated with the thread in the database.

Change-Id: I8f7c194243e6da093461c1aaae4119f05390582d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
c1342c003f027f564b44b4f4f93d6a6e780aa1c7 18-Sep-2011 Tom Taylor <tomtaylor@google.com> SMS messages being delivered to wrong contact

When we observe the conversation cache is out-of-date, update
the conversation in the cache. Also, fix a bug removing an attachment.
The old pdu wasn't getting deleted. Bug 5319828

Change-Id: I46dbc698a76d4f8bc8fe2a93a967df410a4f557a
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
fcca7b38fcc90a781f1507a0a135a64e3ae8f6d8 14-Sep-2011 Tom Taylor <tomtaylor@google.com> Attached picture is not saved in drafts when a received message is opened from notification bar

Our mConversation.sameRecipient() code didn't work on uri's from
notifications that contained a threadId instead of a number. Therefore,
an incoming message never matched a new draft that had a threadId of
zero, even when the recipients matched. When we decided a conversation
matched, the code didn't update itself or the working message with the
updated conversation that has a valid threadId. Bug 5250265

Change-Id: I6c97d5c53cf75d97b652b7635020c2cb30855761
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
836c85f29abef77ebca6185cd5f537c166074b35 02-Sep-2011 Tom Taylor <tomtaylor@google.com> NPE at com.android.mms.data.Conversation.cacheAllThreads

NPE in printing an error message in an unusual situation. Bug 5249850

Change-Id: I15fc275bcf336838018dd21b3a1a2a9e95c5e7d9
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
10ca1d3969305df50fb07a17f5d23b0ed59f7868 31-Aug-2011 Tom Taylor <tomtaylor@google.com> Lots of visual tweaks to ConversationList

Draw vertical rules around items. Move attachments to the bottom of
the message. Use new divot from Talk. Bug 5151145

Change-Id: Ib04ff0105990baab990137cd72eabf3d4399aebf
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d4e997a8f0e03688143d1a50b381c6f363a204ca 22-Aug-2011 Tom Taylor <tomtaylor@google.com> Tweak debug code

Direct users to send bug reports to buganizer. Only dump 8 chars of
the message. Only dump the last 20 messages.

Change-Id: I65c9d632c50397f39050ab1e3f53eda4ac304186
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
f9d706cfd0c46a74ba3d79e5543f13a225328d30 18-Aug-2011 Tom Taylor <tomtaylor@google.com> In multi-select mode, show a custom background

Harder than it seems! Only the ListView knows which items are
checked. The adapter doesn't know anything about list items.
The common bridge is the Conversation. Also, get rid of a useless
class of indirection, the ConversationListItemData. Bug 5151185

Change-Id: If263c95a32ddb9ac565355aac3fc58ad5e3ddacd
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
b3217a6ddcd9455968de7078bfbc0a901b4ff705 16-Aug-2011 Tom Taylor <tomtaylor@google.com> Merge debugging messages and tools to master

Merge the newly added debugging messages and database dump tools from
gingerbread into master. Bug 5133439

Change-Id: I191960a79c7dc60f7e5f731ab952f06c5c9383c4
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6d38b19aa9aef46afa855187f23e44d4c06f8878 11-Aug-2011 Tom Taylor <tomtaylor@google.com> Add new send sms intent

Add a new intent to send an sms message without any UI interaction.
Presently, the Messaging app can already respond to intents with
the android.intent.action.SENDTO action, but this brings up the
ComposeMessageActivity primed with a destination and message. It's up
to the user to review the message and hit send. This new intent will
send the message to the user without the user seeing the compose screen
and having to hit send. Apps could already send sms's by talking
directly to the SmsManager. Using this new intent, however, has the
benefit of adding the outgoing message to a thread so the user will
be able to see what was sent. In addition, sending a message via the
Messaging app compare to the SmsManager will add automatica retry when
there's no connection, etc. This new feature could be used by the phone
app so the user could easily respond to an incoming phone call by sending a canned sms that
reads, "I'm busy, but I'll call you right back." A caller of this new
intent must have android.permission.SEND_SMS_NO_CONFIRMATION. An
accompanying CL adds the private permission to the framework.
An included test app tests the feature. Bug 4563486

Change-Id: I9292ea6d52e135cdabcfe68091d4d24d15524c97
Signed-off-by: Tom Taylor <tomtaylor@google.com>
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
c06913a292eba0dc9c17ca312f837f009b8e46f5 03-Aug-2011 Tom Taylor <tomtaylor@google.com> Blank messaging thread is displayed after locking/unlocking the screen

The conversation was getting wiped out because the message count
in the conv was 0. Bug 5088276

Change-Id: Id1af5e862eb7679bfc0328134d61c1949fe08f3c
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
85d5c5d852355248b98c43305bd950b432754755 03-Jun-2011 Ben Dodson <bjdodson@google.com> am 4f28ef33: am 59249b63: am 1149674a: Improved support for rfc 5724

* commit '4f28ef33ca021f8560b50e90427e0c3b67a05c9a':
Improved support for rfc 5724
1149674a2a3c13c7b3b41e5057880e011a45b4b4 19-May-2011 Ben Dodson <bjdodson@google.com> Improved support for rfc 5724

Change-Id: I0b8a07de4af64173ef431ade3bf2dca6c4fb9ba6
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
b51ea8318ca2e4019b666d938e3e7efdf6e643b3 13-May-2011 Tom Taylor <tomtaylor@google.com> Multi-select conversation delete

Change-Id: I78748c9881733caea18239e4bd807e7a0c2ae4bf
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
2426db8887f7f1c0c93dbab5a10663cb22575ccd 11-May-2011 Tom Taylor <tomtaylor@google.com> Add actionbar to ConversationList

Add the number of unread conversations in the action bar of the
ConversationList. Remove the static "New message" item from the list.
"New message" is now in the actionbar.

Change-Id: If417964118146bdef6d807cce71213674d809c44
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
e2986af492c30ad92c96bcb7adf8092d4d948565 27-Apr-2011 Tom Taylor <tomtaylor@google.com> Add a test case for creating thousands of conversations

The test case found a bug. The conversation cache's delete function wasn't
synchronized and resulted in a ConcurrentModificationException while
looking up an existing thread.

Change-Id: I668361e457df3ab4ca4bdc527c4872b014bb370d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
ef1e257cbaa7f7085eda3a9b075eca79075aab89 12-Oct-2010 Wink Saville <wink@google.com> Remove some PII.

Change-Id: I846866881d79b985ea0bc6fa647f8e7a38e63a9b
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6bbfd941885c588cc5d94e345d2cfc4197134a19 23-Apr-2010 Tom Taylor <tomtaylor@google.com> Fix unread notifications

Reading one thread would mark all messages read. The expression
read=0 OR seen=0 was getting combined with the thread_id in the
provider like this: read=0 OR seen=0 AND thread_id=N, which was evaluated
as read=0 OR (seen=0 AND thread_id=N). The expression needs parens
so it will get evaluated correctly. Bug 2615680

Change-Id: Ib495a74e41346b835a576a8d6d53e809b839f93d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
e14b79584cca1bf7ba60c53bd7e3d6386adbfc59 09-Apr-2010 Wei Huang <weih@google.com> bug #2582343: attempt to fix the sticky notification bug.

- when going to the compose screen, we query to see if there are unread messages, and if so, update both read and seen columns to 1. So in the chance that read=1 and seen=0 (not sure how that can happen), we wouldn't update seen to 1.

change the query to check for (read=0 OR seen=0) instead of just (read=0).

- add selective verbose logging in case this isn't the real fix.

Change-Id: I978ba3a83be227cd924d0c4c85d090bf42be1c8d
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
09a75ac1d3710e60dbe78ead3dee6863ffb380ca 08-Apr-2010 Wei Huang <weih@google.com> bug #2438230: more logging for Conversation and Recipient cache.

- add more logging to try to catch the mismatching contact/thread bug.
- add selective checking to make sure thread id and recipients are not compromised.

Change-Id: I038dca4f7b32bf822ef68e344c7a6eaf8990e328
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
63e395258ae33a101b9634a68b55ec89fac8b580 24-Mar-2010 Tom Taylor <tomtaylor@google.com> Fix an ANR in ConversationList

ConversationList.onStart() was trying to delete old conversations
on the UI thread. Now do the delete via an asyncHandler after we've
completed the initial conversation query. Bug 2538095

Change-Id: Ia9498d61c49244f0354c7d5a1e23ad490c1eaf6b
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
3b21f6ab04db5936d73e9f53032f1587389380ff 22-Mar-2010 Tom Taylor <tomtaylor@google.com> Fix DB query on the UI thread

Move a notification query on the UI thread to a worker thread.
Any calls from UI threads (which includes receivers) are made
nonblocking. Calls from non-UI threads (which includes services)
are blocking. Tested various scenarios and checked threads in the
debugger. Bug 2524765 and bug 2533501.

Change-Id: I38213b7202957bdb103058b657be04bfe6b085dc
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
0f1fb760aa6a1ae040703b8ce405c96923e40603 09-Mar-2010 Tom Taylor <tomtaylor@google.com> Fix race condition

After deleting a thread in ConversationList, the onDeleteComplete function
would call Conversation.init() to update the threads and make the
conversation cache match what was on disk, then call
startAsyncQuery() to get the new state of the threads. Then it called
onContentChange(), which was a mistake. onContentChange() caused the
list to redraw based on the old cursor. The code would reinsert
the deleted conversation back into the cache as a result of doing
a Conversation.get. Later on when looking up a thread by thread id,
the cache could easily return the deleted conversation from the cache.
With that onContentChange() removed, the async query takes place
and the conversation list gets rebuilt with the new cursor.
Fixes bug 2492283.

Change-Id: I901e774dd341a3ed1a39f9a47e8026555f853566
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
f7e8281a223af6228e6399055a6197a1edd9bc3a 09-Mar-2010 Tom Taylor <tomtaylor@google.com> Remove mms-common

Get rid of the mms-common library and move the mms files back into the
framework where they originally came from.

Change-Id: I8ce2b0a2a3cfc6b7da13ce0e791173c09dd8f0f5
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6a78e60e584cb440c63198b87f8aba6b4c07f8ca 03-Mar-2010 Tom Taylor <tomtaylor@google.com> Don't delete draft unless we need to

Don't even look for a draft unless the conversation says we've got a draft.
Don't delete the draft unless the draft is the only message in the
conversation. Excess drafts will get deleted at send time (or in various
other places where we save the draft or discard). Fix one of the
Conversation constructor's to use the cache. Otherwise, ConversationList
activity was updating all the conversations, but all the other activities
were retrieving old conversations from the cache. Bugs 2483022 and 2329323.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
627007213deb59ef938c80353c8f3598b01478b3 26-Feb-2010 Wei Huang <weih@google.com> Bug 2030420: fix SMS/MMS statusbar notification.

- don't show statusbar notification for sms/mms based on whether there are unread messages or not. Instead, add a "seen" column for the SMS and Mpdu (mms) table. Each SMS and MMS message will now have a "seen" flag in the db. If there are unseen messages, we'll show the statusbar notification. Once the user reads a thread, we'll mark a thread (and all messages in the thread) read and seen. If the user goes to the conversation list activity, we'll mark all messages "seen", but won't touch the read flag for the messages.

So now the user can have many unread messages, but still have seen all the messages, thus won't get notified repeatedly just because there are unread messages.

we'll mark a message "seen" flag to 0 for incoming SMS and MMS (pdu) messages.

to-do: mark all messages as seen when the user hits the clear notification button in the window shade.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
436042159134e8ecbc57097340a5bd81f2912574 27-Feb-2010 Tom Taylor <tomtaylor@google.com> Avoid unnecessary DB updates

Making database updates at the same time we're trying to read the list of
messages in a conversation causes any further queries to block until the updates
are complete. This results in taking a long time to display a new
message when the user selects the sms notification. With this change,
we block marking a thread as "read" until we've completed the query for
a conversation's list of messages. Also, every delete causes several
DB updates inside the provider. We can avoid one of these deletes that causes
so many updates if the thread has no drafts. Now responding to a new message
notification only results in two updates (one to the sms table and one to the
pdu table) and that happens after the messages are loaded.
Bug 2467382.

Change-Id: I2a78023e3ba7dee72c110d2023f4c79b1b816565
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
fd644551e8506266aad2b76463b51b44154ed62f 29-Jan-2010 Tom Taylor <tomtaylor@google.com> Update refs now that MMS is removed

Move MMS to mms-common library. Update imports.

Change-Id: I28fa24a68c27977eba58cb62f2667596d3abe2c4
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6be18bedb5b87dbbcdb54f37d5a0945bd0f71377 17-Dec-2009 Tom Taylor <tomtaylor@google.com> Unbundling work

This is the first step in unbundling the Mms app. Some of the changes include:
- moving some of the Mms code from the framework into the app itself.
- same with emoticons
- remove dependency on internal drawables and add local copy to mms
- some dependencies on various internal classes now moved to android-common library
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
5163798dea35fb12fa7892120d39605a1f3c175e 01-Dec-2009 Tom Taylor <tomtaylor@google.com> Fix conversation loading

After loading a thread with an exact set of recipients, the code called
setRecipients() which resets the threadId to zero. As a result, a new
conversation was created and displayed, rather than the existing conversation
with all of its messages. Fixes bug 2284007.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
e692b9dcf5742e7a3ef3a7e64b44bb9d08f05b57 01-Dec-2009 Tom Taylor <tomtaylor@google.com> Don't load contacts on UI thread

There's a route through a Conversation constructor that will
result in the conversation's contacts getting loaded on the
UI thread. Add an explicit "allowQuery" parameter to give callers
the ability to throttle this behavior. Fixes bug 2280762.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
e37a39111cf1e43107308e607c1c955989887c40 18-Nov-2009 Wei Huang <weih@google.com> clean up synchronized block usage.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
715e32f97bd9d8ce4b5ba650b97ba4b137150456 18-Nov-2009 Tom Taylor <tomtaylor@google.com> Fix ANR from calling Contact.get()

The Contact.get() API allows the caller to specify whether the operation
can block (looking up contact info in the DB) or not. There are about 10
places where various callers were passing "true" to canBlock, all coming
from the UI thread. We've previously fixed Contact.get() to always return
a Contact, with the number filled in, even if we don't have the contact
in the cache. With this change, never block the UI thread getting a contact.
The worst side-effect should be showing a number, instead of a name.
Fixes bug 2265631.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
5544f47dbe1ffd4af73b9b9dde0e35cd257cd795 10-Nov-2009 Tom Taylor <tomtaylor@google.com> Fix ANR deadlock

When the Mms app starts up, Conversation starts a background thread
to load all the conversations into a cache. It had a lock on the cache.
Meanwhile, the ComposeMessageActivity started up and tried to load
its conversation, but was blocked and eventually ANR'd. Make the
sync lock cover a much smaller scope and don't hold the lock during
the slow operation of looking up the contact info. Also, remove the
unused SuggestionsProvider. It was causing the Mms app to spin up
needlessly. Fixes bug 2220565.

Change-Id: I0f8260338a5368dc4b8ef11249361ca0716a2887
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
fae5cfc585e0a68ed7ed62909bb83abf53212aef 09-Nov-2009 Wei Huang <weih@google.com> bug 2248168: populate the recipient field when texting from the fast track.

- need to call Conversation.setRecipient() when creating a new Conversation object.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
445fb5abf8804279e591d1c35657c9162625135e 07-Nov-2009 Tom Taylor <tomtaylor@google.com> Speedup contact name resolution

The first time Messaging is launched, a background thread loads
the conversations threads, which loads the contact info cache. While
this is happening, the ConversationList activity starts and the
first thing it does is clear the contact cache that is being built
in the background. Don't clear the cache if it's currently being
built. Fixes bug 2167799.

Change-Id: Id8a9345caaf7905d1f4bcc18ee45d11cb860d293
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
67ec6c54e11c19caf894b4ffce7250fb3fd96d30 06-Nov-2009 Wei Huang <weih@google.com> bug #2236553: catch NPE thrown by SmsManager.sendMultipartTextMessage().

- need to catch the NPE and deal with it, like clean up and delete the queued message. Otherwise we not only get a crash in the app, but the queued message would keep getting retried, therefore grow the conversation thread everytime it retries.

- also catch a RuntimeException when we try to insert an existing conversation into the Conversation cache. That caused an app crash too!

Change-Id: Iba081955e19d7a5eb517c3a3aea5186534787c15
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
56e77a576e452f26da6941f01746435fe4b3011b 05-Nov-2009 Wei Huang <weih@google.com> bug #2236535: when entering MMS compose screen via an address in an intent, replace the matching contact cache with the intent address.

- this is basically another path in which we have the actual dest address (in the intent). When the compose screen finds the
matching cached contact, it should replace the contact's address with the specified address in the intent, in case the
cached contact has a bad address.

Change-Id: Id55500e212df5dcd47ff7a1858bc99d4b4656df1
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
25b939e5a7ecb1e0879b684dc5bc55183cf468b4 04-Nov-2009 Wei Huang <weih@google.com> bug #2236535: use an initial bad address (from a merged contact) would lead to permanent failure for the messaging thread even after a good number is used.

- when the user selects/types a new number in the recipients editor, and we find a cached contact, set the contact's number to be the newly selected number. This will allow the user to correct the address, at least until the next time MMS rebuilds the contact cache with the bad number stored in the database. This will get us to par with the Cupcake behavior. Unfortunately, after MMS app is relaunched, the thread would use the bad initial adddress again (loaded from the 'canonical_address' table in the db). That's a much harder, riskier fix, so deferring to later.

Change-Id: If32958482b14848bd770cff50e4736457c47ac8a
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d62ef06699b3ca5048c5642bd50300e9a2eb04a1 23-Sep-2009 Tom Taylor <tomtaylor@google.com> Fix draft bug

Fix a special case of working on a draft and then getting a new intent for that same
draft. Recognize we've got the same conversation rather than trying to save the draft
and reload the same draft. Add more logging to Conversation and WorkingMessage and move
the common logging code into LogTag.

Change-Id: I1388967f3f2e7520e08730036243f958574a6001
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
13dbe96fc54f9b7190fd415d737f9a56dc409d10 23-Sep-2009 Wei Huang <weih@google.com> Fix bug #2100169: include the from address (line1 + "/TYPE=PLMN") when sending a pdu.

Change-Id: I212a03b963ae868d7d69e3841e6a88ab7217b2e3
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
6cba8248f3e41921b03cc74a823a6347016e69ba 11-Sep-2009 Tom Taylor <tomtaylor@google.com> Fix monkey crasher

If the monkey sends an intent with uri to a non-existing thread,
the messaging app would crash.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
85fbc94e34688455c3f2f36271ba65b90ceb2542 27-Aug-2009 Tom Taylor <tomtaylor@google.com> Fix delete threads dialog

When deleting a thread with locked messages, show a checkbox that allows
a user to delete even locked messages.

Change-Id: I544fc0188bf9e96af671bd2e4321dba4356ebf81
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
59be3105fb43b5e9fcb363981dfa3de31c1bc2a8 26-Aug-2009 Wei Huang <weih@google.com> support intent extra parameter "address" for launching ComposeMessageActivity. If the intent has no "thread_id", and doesn't contain a data uri, then look for the "addrss" field.

- this is to support testing of

adb shell am start -a android.intent.action.VIEW --es address <number> --es sms_body <body> -t vnd.android-dir/mms-sms

Change-Id: I38c0dff2f0cc20ba0a0dbafdb17660c5eacb4b49
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
475d780550e0034379ed821a90fdbc96d810b72d 26-Aug-2009 Tom Taylor <tomtaylor@google.com> Handle delete all vs. delete unlocked

For the various options of deleting a thread, ask the user to choose
between deleting all messages or just the unlocked ones.

Change-Id: I04c9d7ddc220ec5bb61e0fb487bfd13a1a7aeb66
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
5893069282b516db7da5e16eef051cd02508eb2a 30-Jul-2009 Tom Taylor <tomtaylor@google.com> Fix a notification bug.

Marking a conversation as read wasn't clearing the notification. The conversation's
cached "read" state didn't match that on disk because newly received messages don't
update the conversation's state. Now we always mark a conversation as read and
always update the notification state.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
baf7fec7d1a5b8d52ae7be04865f9e869742c261 27-Jul-2009 repo sync <dxn738@motorola.com> SMS to own number creates two threads and crashes

Send an SMS from a test phone to itself (say the number is 9243176013).
A thread gets created. But when this SMS gets received (of course from
the test phone itself), the number gets received as '09243176013'. And
one more thread is created. But in the conversation list, 2 threads are
shown with the same number (9243176013). When it is tried to add this
new conversation thread to the cache, it throws an Exception which is
not caught.

From this time onwards, everytime we launch Messaging, we keep getting
the Uncaught Exception, and the application closes.

To fix, in Conversation.java handled the exception by catching it from
wherever this function is called. In files Conversation.java and
SmsReceiverService.java did changes to consider 9243176013 and 09243176013
as a same 'from address', so that only one thread id gets created.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
07ce1878a36d2df1707dd4bbd9cd7235679bdc94 16-Jul-2009 Tom Taylor <tomtaylor@google.com> Fix a problem with drafts

This is a fix for bug 1973603. If you go into SMS from contacts and create a draft
and in the meantime receive a message from that same contact, we'd crash in the
conversation cache trying to add the new conversation. This crash occured because
the draft conversation wasn't getting cleared out of the cache after thread was
deleted on disk. Since conversations in the cache are "equal" by recipients, the
incoming recipient matched the stale conversation in the cache. It gets even more
tricky. Bottom line: anytime a thread is deleted from the database, the equivalent
conversation has to be removed from the cache.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
338855e07bb9c998705d4e6680f696888ca3d0e5 15-Jul-2009 Tom Taylor <tomtaylor@google.com> Read a long instead of an int Thread ID

Bug 1973603 is throwing an exception when adding a new conversation. Immediately
before, the code checks to see if the conversation exists, by thread id, and if
not, creates and adds the new conversation. I'm not able to duplicate the bug,
but found a problem where we're reading the threadid as an int, rather than a long.
Also added the threadid to the exception so we'll be able to look at the database.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
d0480376fabb519abb703acb42209d2e0d9dfa7a 24-Jun-2009 Madhav B <ridhishguhan@motorola.com> Changes to stop locked messages from getting deleted

Specific list of changes that are made as a part of this patch are:
1. When a user tries to delete a locked message.
The locked message doesn't gets deleted and it pops a toast
that locked messages cannot be deleted.
2. When a user tries to delete a thread containing locked messages.
Only the unlocked messages present in the same thread are getting
deleted. The locked message which are part of the thread are not
deleted.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
926da0d5c27e8d0e4246ea975c2226b83a81a5d3 29-Jun-2009 Tom Taylor <tomtaylor@google.com> Fix bug 1930462: Draft message disappears in Conversation List when editing a draft.

When a user creates a draft and then backs out, a thread is created for the draft. When
the user re-edits the draft, the thread is deleted after loading the conversation. When
the user backs out again, we still have a valid threadId (but no actual thread) and the
message is saved without a corresponding thread. The fix is simple. When the thread is
deleted, the threadId has to be reset in the Conversation to match. Then when the user backs
out again (or in any other code path, e.g. send), the thread will get created.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
71bbae69cee0da902032743d0702e283cfe31504 28-May-2009 Ficus Kirkpatrick <ficus@android.com> Fix a race condition in Conversation.get().

Missed entering a monitor on the cache when doing a get-or-create
operation.

Also remove a bunch of trailing whitespace and some dead code.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
33a87f96f8c625aa10131a77a3968c97c4ec5a62 27-May-2009 Ficus Kirkpatrick <ficus@android.com> Remove all references to ContactInfoCache except those in Contact.

This is in preparation for moving the database logic from ContactInfoCache
into Contact and removing the old cache.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
1d98ae0b203e01034ddead4214d1520ce863a23b 22-May-2009 Ficus Kirkpatrick <ficus@android.com> New data model for contact information.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
70c73e05a792832aa28da751cdaf3fa83a7b8113 23-Apr-2009 Ficus Kirkpatrick <ficus@android.com> Begin moving all conversation data behind a data model with a cache.

Remove some unused code like the stale concept of "common threads" vs.
"broadcast threads", old references to search, etc.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java
ab6141d9c98f1a6024fac52fe3c897076d8549c0 16-Apr-2009 Ficus Kirkpatrick <ficus@android.com> Add a new Conversation class for protecting access to conversations/threads.
/packages/apps/Mms/src/com/android/mms/data/Conversation.java