Fixing "no-op" handling in custom filter configuration

Bug: 3308350

Change-Id: Iaefc5694b49a80b7a251e6e5527bce2c80b3eba5
diff --git a/src/com/android/contacts/list/CustomContactListFilterActivity.java b/src/com/android/contacts/list/CustomContactListFilterActivity.java
index c836640..35297fe 100644
--- a/src/com/android/contacts/list/CustomContactListFilterActivity.java
+++ b/src/com/android/contacts/list/CustomContactListFilterActivity.java
@@ -19,9 +19,9 @@
 import com.android.contacts.ContactsSearchManager;
 import com.android.contacts.R;
 import com.android.contacts.model.AccountType;
+import com.android.contacts.model.AccountTypes;
 import com.android.contacts.model.EntityDelta.ValuesDelta;
 import com.android.contacts.model.GoogleAccountType;
-import com.android.contacts.model.AccountTypes;
 import com.android.contacts.preference.ContactsPreferences;
 import com.android.contacts.util.EmptyService;
 import com.android.contacts.util.LocalizedNameResolver;
@@ -34,7 +34,6 @@
 import android.app.ExpandableListActivity;
 import android.app.ProgressDialog;
 import android.content.ContentProviderOperation;
-import android.content.ContentProviderOperation.Builder;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
@@ -67,7 +66,6 @@
 import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
 import android.widget.TextView;
 
-import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
@@ -311,33 +309,37 @@
          * this {@link GroupDelta}.
          */
         public ContentProviderOperation buildDiff() {
-            if (isNoop()) {
-                return null;
-            } else if (isUpdate()) {
-                // When has changes and "before" exists, then "update"
-                final Builder builder = ContentProviderOperation.newUpdate(
-                        mUngrouped
-                                ? Settings.CONTENT_URI
-                                : addCallerIsSyncAdapterParameter(Groups.CONTENT_URI));
-                if (mUngrouped) {
-                    builder.withSelection(Settings.ACCOUNT_NAME + "=? AND " + Settings.ACCOUNT_TYPE
-                            + "=?", new String[] {
-                            this.getAsString(Settings.ACCOUNT_NAME),
-                            this.getAsString(Settings.ACCOUNT_TYPE)
-                    });
-                } else {
-                    builder.withSelection(Groups._ID + "=" + this.getId(), null);
-                }
-                builder.withValues(mAfter);
-                return builder.build();
-            } else if (isInsert() && mUngrouped) {
+            if (isInsert()) {
                 // Only allow inserts for Settings
-                mAfter.remove(mIdColumn);
-                final Builder builder = ContentProviderOperation.newInsert(Settings.CONTENT_URI);
-                builder.withValues(mAfter);
-                return builder.build();
+                if (mUngrouped) {
+                    mAfter.remove(mIdColumn);
+                    return ContentProviderOperation.newInsert(Settings.CONTENT_URI)
+                            .withValues(mAfter)
+                            .build();
+                }
+                else {
+                    throw new IllegalStateException("Unexpected diff");
+                }
+            } else if (isUpdate()) {
+                if (mUngrouped) {
+                    return ContentProviderOperation.newUpdate(Settings.CONTENT_URI)
+                            .withSelection(Settings.ACCOUNT_NAME + "=? AND "
+                                    + Settings.ACCOUNT_TYPE + "=?",
+                                    new String[] {
+                                        this.getAsString(Settings.ACCOUNT_NAME),
+                                        this.getAsString(Settings.ACCOUNT_TYPE)
+                                    })
+                            .withValues(mAfter)
+                            .build();
+                } else {
+                    return ContentProviderOperation.newUpdate(
+                                    addCallerIsSyncAdapterParameter(Groups.CONTENT_URI))
+                            .withSelection(Groups._ID + "=" + this.getId(), null)
+                            .withValues(mAfter)
+                            .build();
+                }
             } else {
-                throw new IllegalStateException("Unexpected delete or insert");
+                return null;
             }
         }
     }