Merge "Prefactor RawContactDelta.ValuesDelta into top level class."
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 6822494..b527f84 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -250,7 +250,7 @@
     }
 
     private void configureActivityTitle() {
-        if (mRequest.getActivityTitle() != null) {
+        if (!TextUtils.isEmpty(mRequest.getActivityTitle())) {
             setTitle(mRequest.getActivityTitle());
             return;
         }
@@ -527,16 +527,6 @@
     }
 
     @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        ContextMenuAdapter menuAdapter = mListFragment.getContextMenuAdapter();
-        if (menuAdapter != null) {
-            return menuAdapter.onContextItemSelected(item);
-        }
-
-        return super.onContextItemSelected(item);
-    }
-
-    @Override
     public boolean onQueryTextChange(String newText) {
         mListFragment.setQueryString(newText, true);
         return false;
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 9ad21e8..927e429 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -323,7 +323,6 @@
             startActivity(redirect);
             return false;
         }
-        setTitle(mRequest.getActivityTitle());
         return true;
     }
 
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index 75cf1b3..71a8cf2 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -1866,6 +1866,11 @@
         menu.add(ContextMenu.NONE, ContextMenuIds.COPY_TEXT,
                 ContextMenu.NONE, getString(R.string.copy_text));
 
+        // Don't allow setting or clearing of defaults for directory contacts
+        if (mContactData.isDirectoryEntry()) {
+            return;
+        }
+
         String selectedMimeType = selectedEntry.mimetype;
 
         // Defaults to true will only enable the detail to be copied to the clipboard.
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 8ea8c1c..45cee6b 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -493,8 +493,15 @@
                 mSelectionRequired = false;
 
                 // If we were looking at a different specific contact, just reload
+                // FILTER_TYPE_ALL_ACCOUNTS is needed for the case where a new contact is added
+                // on a tablet and the loader is returning a stale list.  In this case, the contact
+                // will not be found until the next load. b/7621855 This will only fix the most
+                // common case where all accounts are shown. It will not fix the one account case.
+                // TODO: we may want to add more FILTER_TYPEs or relax this check to fix all other
+                // FILTER_TYPE cases.
                 if (mFilter != null
-                        && mFilter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT) {
+                        && (mFilter.filterType == ContactListFilter.FILTER_TYPE_SINGLE_CONTACT
+                        || mFilter.filterType == ContactListFilter.FILTER_TYPE_ALL_ACCOUNTS)) {
                     reloadData();
                 } else {
                     // Otherwise, call the listener, which will adjust the filter.
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index d522b5e..7971905 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -61,7 +61,6 @@
 import com.android.contacts.common.list.DirectoryListLoader;
 import com.android.contacts.common.list.DirectoryPartition;
 import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.widget.ContextMenuAdapter;
 
 /**
  * Common base class for various contact-related list fragments.
@@ -128,7 +127,6 @@
     private int mSortOrder;
     private int mDirectoryResultLimit = DEFAULT_DIRECTORY_RESULT_LIMIT;
 
-    private ContextMenuAdapter mContextMenuAdapter;
     private ContactPhotoManager mPhotoManager;
     private ContactListEmptyView mEmptyView;
     private ContactsPreferences mContactsPrefs;
@@ -692,17 +690,6 @@
         mDirectoryResultLimit = limit;
     }
 
-    public void setContextMenuAdapter(ContextMenuAdapter adapter) {
-        mContextMenuAdapter = adapter;
-        if (mListView != null) {
-            mListView.setOnCreateContextMenuListener(adapter);
-        }
-    }
-
-    public ContextMenuAdapter getContextMenuAdapter() {
-        return mContextMenuAdapter;
-    }
-
     protected boolean loadPreferences() {
         boolean changed = false;
         if (getContactNameDisplayOrder() != mContactsPrefs.getDisplayOrder()) {
@@ -769,10 +756,6 @@
         // We manually save/restore the listview state
         mListView.setSaveEnabled(false);
 
-        if (mContextMenuAdapter != null) {
-            mListView.setOnCreateContextMenuListener(mContextMenuAdapter);
-        }
-
         configureVerticalScrollbar();
         configurePhotoLoader();
     }