Use single method to handle all popup.dismiss() logic.

Refactor to reduce duplicate code.

Bug: 7902358
Change-Id: I6395635eba435ef6ebe4a34125d9a310c18f7e93
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index d4d5fc7..0222a89 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -112,6 +112,7 @@
 import com.android.contacts.util.DateUtils;
 import com.android.contacts.util.PhoneCapabilityTester;
 import com.android.contacts.util.StructuredPostalUtils;
+import com.android.contacts.util.UiClosables;
 import com.android.internal.telephony.ITelephony;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.Iterables;
@@ -1028,9 +1029,7 @@
     }
 
     private void dismissPopupIfShown() {
-        if (mPopup != null && mPopup.isShowing()) {
-            mPopup.dismiss();
-        }
+        UiClosables.closeQuietly(mPopup);
         mPopup = null;
     }
 
diff --git a/src/com/android/contacts/detail/PhotoSelectionHandler.java b/src/com/android/contacts/detail/PhotoSelectionHandler.java
index 3f913f2..9689acc 100644
--- a/src/com/android/contacts/detail/PhotoSelectionHandler.java
+++ b/src/com/android/contacts/detail/PhotoSelectionHandler.java
@@ -46,6 +46,7 @@
 import com.android.contacts.common.model.account.AccountType;
 import com.android.contacts.model.RawContactDeltaList;
 import com.android.contacts.util.ContactPhotoUtils;
+import com.android.contacts.util.UiClosables;
 
 import java.io.File;
 
@@ -79,9 +80,7 @@
     }
 
     public void destroy() {
-        if (mPopup != null) {
-            mPopup.dismiss();
-        }
+        UiClosables.closeQuietly(mPopup);
     }
 
     public abstract PhotoActionListener getListener();
diff --git a/src/com/android/contacts/editor/GroupMembershipView.java b/src/com/android/contacts/editor/GroupMembershipView.java
index ab7895c..d150be8 100644
--- a/src/com/android/contacts/editor/GroupMembershipView.java
+++ b/src/com/android/contacts/editor/GroupMembershipView.java
@@ -43,6 +43,7 @@
 import com.android.contacts.model.RawContactDelta;
 import com.android.contacts.common.model.ValuesDelta;
 import com.android.contacts.model.RawContactModifier;
+import com.android.contacts.util.UiClosables;
 import com.google.common.base.Objects;
 
 import java.util.ArrayList;
@@ -280,8 +281,7 @@
 
     @Override
     public void onClick(View v) {
-        if (mPopup != null && mPopup.isShowing()) {
-            mPopup.dismiss();
+        if (UiClosables.closeQuietly(mPopup)) {
             return;
         }
 
@@ -329,10 +329,8 @@
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
-        if (mPopup != null) {
-            mPopup.dismiss();
-            mPopup = null;
-        }
+        UiClosables.closeQuietly(mPopup);
+        mPopup = null;
     }
 
     @Override
@@ -409,10 +407,8 @@
     }
 
     private void createNewGroup() {
-        if (mPopup != null) {
-            mPopup.dismiss();
-            mPopup = null;
-        }
+        UiClosables.closeQuietly(mPopup);
+        mPopup = null;
 
         GroupCreationDialogFragment.show(
                 ((Activity) getContext()).getFragmentManager(),
diff --git a/src/com/android/contacts/editor/PhotoActionPopup.java b/src/com/android/contacts/editor/PhotoActionPopup.java
index 4c7e7b7..9903880 100644
--- a/src/com/android/contacts/editor/PhotoActionPopup.java
+++ b/src/com/android/contacts/editor/PhotoActionPopup.java
@@ -26,6 +26,7 @@
 
 import com.android.contacts.R;
 import com.android.contacts.util.PhoneCapabilityTester;
+import com.android.contacts.util.UiClosables;
 
 import java.util.ArrayList;
 
@@ -122,7 +123,7 @@
                         break;
                 }
 
-                listPopupWindow.dismiss();
+                UiClosables.closeQuietly(listPopupWindow);
             }
         };
 
diff --git a/src/com/android/contacts/util/UiClosables.java b/src/com/android/contacts/util/UiClosables.java
index 66ab6cd..3f960b1 100644
--- a/src/com/android/contacts/util/UiClosables.java
+++ b/src/com/android/contacts/util/UiClosables.java
@@ -27,10 +27,13 @@
      * Close a {@link ListPopupWindow}.
      *
      * @param popup The popup window to close.
+     * @return {@code true} if the popup was showing. {@code false} otherwise.
      */
-    public static void closeQuietly(ListPopupWindow popup) {
+    public static boolean closeQuietly(ListPopupWindow popup) {
         if (popup != null && popup.isShowing()) {
             popup.dismiss();
+            return true;
         }
+        return false;
     }
 }