Merge "Adding util to consolidate primary/alternative name choice" into ub-contactsdialer-a-dev
diff --git a/src/com/android/contacts/common/util/ContactDisplayUtils.java b/src/com/android/contacts/common/util/ContactDisplayUtils.java
index ca91024..ca5fdbd 100644
--- a/src/com/android/contacts/common/util/ContactDisplayUtils.java
+++ b/src/com/android/contacts/common/util/ContactDisplayUtils.java
@@ -22,11 +22,14 @@
import android.telephony.PhoneNumberUtils;
import android.text.Spannable;
import android.text.SpannableString;
+import android.text.TextUtils;
import android.text.style.TtsSpan;
import android.util.Log;
import android.util.Patterns;
import com.android.contacts.common.R;
+import com.android.contacts.common.preference.ContactsPreferences;
+import com.android.contacts.common.testing.NeededForTesting;
import com.google.common.base.Preconditions;
@@ -220,4 +223,40 @@
}
return spannable;
}
+
+ /**
+ * Returns either namePrimary or nameAlternative based on the value of displayOrderPreference
+ *
+ * In the event that nameAlternative is empty or displayOrderPreference is neither
+ * {@link ContactsPreferences#DISPLAY_ORDER_PRIMARY} nor
+ * {@link ContactsPreferences#DISPLAY_ORDER_ALTERNATIVE}, namePrimary is returned
+ *
+ * @param namePrimary the primary name
+ * @param nameAlternative the alternative name
+ * @param displayOrderPreference one of {@link ContactsPreferences#DISPLAY_ORDER_PRIMARY} or
+ * {@link ContactsPreferences#DISPLAY_ORDER_ALTERNATIVE}
+ * @return namePrimary or nameAlternative depending on the value of displayOrderPreference
+ */
+ @NeededForTesting // TODO Temporary until used in source
+ public static String getPreferredName(String namePrimary, String nameAlternative,
+ int displayOrderPreference) {
+ if (TextUtils.isEmpty(nameAlternative)) {
+ Log.d(TAG, "nameAlternative was empty - defaulting to primary");
+ return namePrimary;
+ }
+
+ if (displayOrderPreference != ContactsPreferences.DISPLAY_ORDER_PRIMARY
+ && displayOrderPreference != ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE) {
+ Log.d(TAG, "Attempted to get preferredName with invalid preference "
+ + "- defaulting to primary");
+ return namePrimary;
+ }
+
+
+ if (displayOrderPreference == ContactsPreferences.DISPLAY_ORDER_PRIMARY) {
+ return namePrimary;
+ }
+
+ return nameAlternative;
+ }
}
diff --git a/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
index 544abbb..3871b7c 100644
--- a/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
+++ b/tests/src/com/android/contacts/common/util/ContactDisplayUtilTests.java
@@ -22,6 +22,7 @@
import android.test.suitebuilder.annotation.SmallTest;
import com.android.contacts.common.R;
+import com.android.contacts.common.preference.ContactsPreferences;
/**
* Unit tests for (@link ContactDisplayUtils}
@@ -29,6 +30,9 @@
@SmallTest
public class ContactDisplayUtilTests extends AndroidTestCase {
+ private static final String NAME_PRIMARY = "Name Primary";
+ private static final String NAME_ALTERNATIVE = "Name Alternative";
+
public void testIsCustomPhoneTypeReturnsTrue() {
assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_CUSTOM));
assertTrue(ContactDisplayUtils.isCustomPhoneType(Phone.TYPE_ASSISTANT));
@@ -92,4 +96,23 @@
assertEquals(R.string.sms_home, ContactDisplayUtils.getSmsLabelResourceId(Phone.TYPE_HOME));
}
+ public void testGetPreferredNameEmptyAlternative() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredName(NAME_PRIMARY, "",
+ ContactsPreferences.DISPLAY_ORDER_PRIMARY));
+ }
+
+ public void testGetPreferredInvalidPreference() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredName(NAME_PRIMARY,
+ NAME_ALTERNATIVE, -1));
+ }
+
+ public void testGetPreferredNamePrimary() {
+ assertEquals(NAME_PRIMARY, ContactDisplayUtils.getPreferredName(NAME_PRIMARY,
+ NAME_ALTERNATIVE, ContactsPreferences.DISPLAY_ORDER_PRIMARY));
+ }
+
+ public void testGetPreferredNameAlternative() {
+ assertEquals(NAME_ALTERNATIVE, ContactDisplayUtils.getPreferredName(NAME_PRIMARY,
+ NAME_ALTERNATIVE, ContactsPreferences.DISPLAY_ORDER_ALTERNATIVE));
+ }
}