Merge "Insert name into toast during contact deletion"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2b4b28a..8ee4c8d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -172,6 +172,9 @@
     <!-- Toast shown after two contacts have been linked by a user action. [CHAR LIMIT=NONE] -->
     <string name="contactsJoinedMessage">Contacts linked</string>
 
+    <!-- Toast shown after contact deleted when no display name is given. [CHAR LIMIT=20]-->
+    <string name="contact_deleted_named_toast"><xliff:g id="name">%s</xliff:g> deleted</string>
+
     <!-- Toast shown after contacts that the user has selected are deleted by a user action. [CHAR LIMIT=30] -->
     <plurals name="contacts_deleted_toast">
         <item quantity="one">Contact deleted</item>
diff --git a/src/com/android/contacts/interactions/ContactDeletionInteraction.java b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
index c9a5a9b..ec500f3 100644
--- a/src/com/android/contacts/interactions/ContactDeletionInteraction.java
+++ b/src/com/android/contacts/interactions/ContactDeletionInteraction.java
@@ -66,6 +66,7 @@
         Entity.DATA_SET, // 2
         Entity.CONTACT_ID, // 3
         Entity.LOOKUP_KEY, // 4
+        Entity.DISPLAY_NAME, // 5
     };
 
     private static final int COLUMN_INDEX_RAW_CONTACT_ID = 0;
@@ -73,9 +74,11 @@
     private static final int COLUMN_INDEX_DATA_SET = 2;
     private static final int COLUMN_INDEX_CONTACT_ID = 3;
     private static final int COLUMN_INDEX_LOOKUP_KEY = 4;
+    private static final int COLUMN_INDEX_DISPLAY_NAME = 5;
 
     private boolean mActive;
     private Uri mContactUri;
+    private String mDisplayName;
     private boolean mFinishActivityWhenDone;
     private Context mContext;
     private AlertDialog mDialog;
@@ -248,6 +251,7 @@
             final String dataSet = cursor.getString(COLUMN_INDEX_DATA_SET);
             contactId = cursor.getLong(COLUMN_INDEX_CONTACT_ID);
             lookupKey = cursor.getString(COLUMN_INDEX_LOOKUP_KEY);
+            mDisplayName = cursor.getString(COLUMN_INDEX_DISPLAY_NAME);
             AccountType type = accountTypes.getAccountType(accountType, dataSet);
             boolean writable = type == null || type.areContactsWritable();
             if (writable) {
@@ -338,8 +342,14 @@
         if (isAdded() && mFinishActivityWhenDone) {
             getActivity().setResult(RESULT_CODE_DELETED);
             getActivity().finish();
-            final String deleteToastMessage = getResources().getQuantityString(R.plurals
-                    .contacts_deleted_toast, /* quantity */ 1);
+            final String deleteToastMessage;
+            if (mDisplayName == null) {
+                deleteToastMessage = getResources().getQuantityString(
+                        R.plurals.contacts_deleted_toast, /* quantity */ 1);
+            } else {
+                deleteToastMessage = getResources().getString(
+                        R.string.contact_deleted_named_toast, mDisplayName);
+            }
             Toast.makeText(mContext, deleteToastMessage, Toast.LENGTH_LONG).show();
         }
     }
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index f943aaa..9152956 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -107,33 +107,33 @@
     }
 
     public void testSingleWritableRawContact() {
-        expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo");
+        expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
         assertWithMessageId(R.string.deleteConfirmation);
     }
 
     public void testReadOnlyRawContacts() {
-        expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo");
+        expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
         assertWithMessageId(R.string.readOnlyContactWarning);
     }
 
     public void testMixOfWritableAndReadOnlyRawContacts() {
         expectQuery()
-                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo")
-                .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo");
+                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
+                .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
         assertWithMessageId(R.string.readOnlyContactDeleteConfirmation);
     }
 
     public void testMultipleWritableRawContacts() {
         expectQuery()
-                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo")
-                .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo");
+                .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
+                .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
         assertWithMessageId(R.string.multipleContactDeleteConfirmation);
     }
 
     private Query expectQuery() {
         return mContactsProvider.expectQuery(ENTITY_URI).withProjection(
                 Entity.RAW_CONTACT_ID, Entity.ACCOUNT_TYPE, Entity.DATA_SET, Entity.CONTACT_ID,
-                Entity.LOOKUP_KEY);
+                Entity.LOOKUP_KEY, Entity.DISPLAY_NAME);
     }
 
     private void assertWithMessageId(int messageId) {