auto import from //depot/cupcake/@132589
diff --git a/src/com/android/contacts/CallDetailActivity.java b/src/com/android/contacts/CallDetailActivity.java
index 012a33e..ada4778 100644
--- a/src/com/android/contacts/CallDetailActivity.java
+++ b/src/com/android/contacts/CallDetailActivity.java
@@ -79,7 +79,7 @@
     
     static final String[] PHONES_PROJECTION = new String[] {
         Phones.PERSON_ID,
-        Phones.DISPLAY_NAME,
+        Phones.NAME,
         Phones.TYPE,
         Phones.LABEL,
         Phones.NUMBER,
diff --git a/src/com/android/contacts/ContactsListActivity.java b/src/com/android/contacts/ContactsListActivity.java
index 6e72fbd..6fad5a9 100644
--- a/src/com/android/contacts/ContactsListActivity.java
+++ b/src/com/android/contacts/ContactsListActivity.java
@@ -57,10 +57,8 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ContextMenu.ContextMenuInfo;
-import android.view.inputmethod.InputMethodManager;
 import android.widget.AdapterView;
 import android.widget.AlphabetIndexer;
-import android.widget.Filter;
 import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.ResourceCursorAdapter;
@@ -89,7 +87,6 @@
     static final int MENU_ITEM_DELETE = 7;
     static final int MENU_ITEM_TOGGLE_STAR = 8;
 
-    public static final int MENU_SEARCH = 1;
     public static final int MENU_DIALER = 9;
     public static final int MENU_NEW_CONTACT = 10;
     public static final int MENU_DISPLAY_GROUP = 11;
@@ -590,22 +587,13 @@
             }
         }
 
-        if (mJustCreated && runQuery) {
-            // We need to start a query here the first time the activity is launched, as long
-            // as we aren't doing a filter.
+        if (runQuery) {
+            // Calling requery here may cause an ANR, so always do the async query
             startQuery();
         }
         mJustCreated = false;
     }
     
-    @Override
-    protected void onRestart() {
-        super.onRestart();
-
-        // The cursor was killed off in onStop(), so we need to get a new one here
-        startQuery();
-    }
-    
     private void updateGroup() {
         if (mDefaultMode) {
             setDefaultMode();
@@ -637,7 +625,7 @@
 
         // We don't want the list to display the empty state, since when we resume it will still
         // be there and show up while the new query is happening. After the async query finished
-        // in response to onRestart() setLoading(false) will be called.
+        // in response to onResume() setLoading(false) will be called.
         mAdapter.setLoading(true);
         mAdapter.changeCursor(null);
 
@@ -656,10 +644,6 @@
             return false;
         }
 
-        // Search
-        menu.add(0, MENU_SEARCH, 0, R.string.menu_search)
-                .setIcon(android.R.drawable.ic_menu_search);
-
         // New contact
         menu.add(0, MENU_NEW_CONTACT, 0, R.string.menu_newContact)
                 .setIcon(android.R.drawable.ic_menu_add)
@@ -736,21 +720,16 @@
     
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case MENU_DISPLAY_GROUP:
-                AlertDialog.Builder builder = new AlertDialog.Builder(this)
-                    .setTitle(R.string.select_group_title)
-                    .setPositiveButton(android.R.string.ok, this)
-                    .setNegativeButton(android.R.string.cancel, null);
-                
-                setGroupEntries(builder);
-                
-                builder.show();
-                return true;
-
-            case MENU_SEARCH:
-                startSearch(null, false, null, false);
-                return true;
+        if (item.getItemId() == MENU_DISPLAY_GROUP) {
+            AlertDialog.Builder builder = new AlertDialog.Builder(this)
+                .setTitle(R.string.select_group_title)
+                .setPositiveButton(android.R.string.ok, this)
+                .setNegativeButton(android.R.string.cancel, null);
+            
+            setGroupEntries(builder);
+            
+            builder.show();
+            return true;
         }
         return false;
     }
@@ -909,11 +888,6 @@
 
     @Override
     protected void onListItemClick(ListView l, View v, int position, long id) {
-        // Hide soft keyboard, if visible
-        InputMethodManager inputMethodManager = (InputMethodManager)
-                getSystemService(Context.INPUT_METHOD_SERVICE);
-        inputMethodManager.hideSoftInputFromWindow(mList.getWindowToken(), 0);
-
         if (mMode == MODE_INSERT_OR_EDIT_CONTACT) {
             Intent intent;
             if (position == 0) {
@@ -1044,7 +1018,7 @@
 
             case MODE_WITH_PHONES:
                 mQueryHandler.startQuery(QUERY_TOKEN, null, People.CONTENT_URI, CONTACTS_PROJECTION,
-                        People.PRIMARY_PHONE_ID + " IS NOT NULL", null, SORT_ORDER);
+                        People.PRIMARY_PHONE_ID + " IS NOT NULL", null, People.DEFAULT_SORT_ORDER);
                 break;
 
             case MODE_QUERY: {
@@ -1101,7 +1075,8 @@
                 } else {
                     uri = Uri.withAppendedPath(mGroupFilterUri, Uri.encode(filter));
                 }
-                return resolver.query(uri, CONTACTS_PROJECTION, null, null, SORT_ORDER);
+                return resolver.query(uri, CONTACTS_PROJECTION, null, null,
+                        People.DEFAULT_SORT_ORDER);
             }
 
             case MODE_ALL_CONTACTS:
@@ -1319,7 +1294,7 @@
         private CharSequence[] mLocalizedLabels;
 
         public ContactItemListAdapter(Context context) {
-            super(context, R.layout.contacts_list_item, null, false);
+            super(context, R.layout.contacts_list_item, null);
             
             mAlphabet = context.getString(com.android.internal.R.string.fast_scroll_alphabet);
             
@@ -1336,24 +1311,6 @@
             }
         }
 
-        /**
-         * Callback on the UI thread when the content observer on the backing cursor fires.
-         * Instead of calling requery we need to do an async query so that the requery doesn't
-         * block the UI thread for a long time. 
-         */
-        @Override
-        protected void onContentChanged() {
-            CharSequence constraint = getListView().getTextFilter();
-            if (!TextUtils.isEmpty(constraint)) {
-                // Reset the filter state then start an async filter operation
-                Filter filter = getFilter();
-                filter.filter(constraint);
-            } else {
-                // Start an async query
-                startQuery();
-            }
-        }
-        
         public void setLoading(boolean loading) {
             mLoading = loading;
         }
diff --git a/src/com/android/contacts/EditContactActivity.java b/src/com/android/contacts/EditContactActivity.java
index 49569e3..c12074e 100644
--- a/src/com/android/contacts/EditContactActivity.java
+++ b/src/com/android/contacts/EditContactActivity.java
@@ -69,7 +69,6 @@
 import android.provider.Contacts;
 import android.provider.Contacts.ContactMethods;
 import android.provider.Contacts.Intents.Insert;
-import android.provider.Contacts.Groups;
 import android.provider.Contacts.Organizations;
 import android.provider.Contacts.People;
 import android.provider.Contacts.Phones;
@@ -933,44 +932,6 @@
             if (!TextUtils.isEmpty(displayGroup)) {
                 People.addToGroup(mResolver, ContentUris.parseId(contactUri), displayGroup);
             }
-        } else {
-            // Check to see if we're not syncing everything and if so if My Contacts is synced.
-            // If it isn't then the created contact can end up not in any groups that are
-            // currently synced and end up getting removed from the phone, which is really bad.
-            boolean syncingEverything = !"0".equals(Contacts.Settings.getSetting(mResolver, null,
-                    Contacts.Settings.SYNC_EVERYTHING));
-            if (!syncingEverything) {
-                boolean syncingMyContacts = false;
-                Cursor c = mResolver.query(Groups.CONTENT_URI, new String[] { Groups.SHOULD_SYNC },
-                        Groups.SYSTEM_ID + "=?", new String[] { Groups.GROUP_MY_CONTACTS }, null);
-                if (c != null) {
-                    try {
-                        if (c.moveToFirst()) {
-                            syncingMyContacts = !"0".equals(c.getString(0));
-                        }
-                    } finally {
-                        c.close();
-                    }
-                }
-
-                if (!syncingMyContacts) {
-                    // Not syncing My Contacts, so find a group that is being synced and stick
-                    // the contact in there. We sort the list so at least all contacts
-                    // will appear in the same group.
-                    c = mResolver.query(Groups.CONTENT_URI, new String[] { Groups._ID },
-                            Groups.SHOULD_SYNC + "!=0", null, Groups.DEFAULT_SORT_ORDER);
-                    if (c != null) {
-                        try {
-                            if (c.moveToFirst()) {
-                                People.addToGroup(mResolver, ContentUris.parseId(contactUri),
-                                        c.getLong(0));
-                            }
-                        } finally {
-                            c.close();
-                        }
-                    }
-                }
-            }
         }
 
         // Handle the photo
diff --git a/src/com/android/contacts/RecentCallsListActivity.java b/src/com/android/contacts/RecentCallsListActivity.java
index dbf2879..8d6360b 100644
--- a/src/com/android/contacts/RecentCallsListActivity.java
+++ b/src/com/android/contacts/RecentCallsListActivity.java
@@ -95,7 +95,7 @@
     /** The projection to use when querying the phones table */
     static final String[] PHONES_PROJECTION = new String[] {
             Phones.PERSON_ID,
-            Phones.DISPLAY_NAME,
+            Phones.NAME,
             Phones.TYPE,
             Phones.LABEL,
             Phones.NUMBER