Fixes unit tests for ContactsPreferences
am: 030b126e60
Change-Id: I91a14f93e1bc356aca474ed7516972654f9de8ea
diff --git a/res/values/donottranslate_config.xml b/res/values/donottranslate_config.xml
index f81e01f..2dd0e73 100644
--- a/res/values/donottranslate_config.xml
+++ b/res/values/donottranslate_config.xml
@@ -43,6 +43,9 @@
<!-- If true, the default sort order is primary (i.e. by given name) -->
<bool name="config_default_display_order_primary">true</bool>
+ <!-- If true, an option is shown in Display Options UI to choose a phonetic name display preference -->
+ <bool name="config_phonetic_name_display_user_changeable">true</bool>
+
<!-- If true, phonetic name fields are not visible when empty -->
<bool name="config_default_hide_phonetic_name_if_empty">true</bool>
diff --git a/src/com/android/contacts/preference/ContactsPreferences.java b/src/com/android/contacts/preference/ContactsPreferences.java
index ab52b1b..87b13f7 100644
--- a/src/com/android/contacts/preference/ContactsPreferences.java
+++ b/src/com/android/contacts/preference/ContactsPreferences.java
@@ -177,6 +177,11 @@
}
}
+ public boolean isPhoneticNameDisplayPreferenceChangeable() {
+ return mContext.getResources().getBoolean(
+ R.bool.config_phonetic_name_display_user_changeable);
+ }
+
public void setPhoneticNameDisplayPreference(int phoneticNameDisplayPreference) {
mPhoneticNameDisplayPreference = phoneticNameDisplayPreference;
final Editor editor = mPreferences.edit();
@@ -186,6 +191,9 @@
}
public int getPhoneticNameDisplayPreference() {
+ if (!isPhoneticNameDisplayPreferenceChangeable()) {
+ return getDefaultPhoneticNameDisplayPreference();
+ }
if (mPhoneticNameDisplayPreference == PREFERENCE_UNASSIGNED) {
mPhoneticNameDisplayPreference = mPreferences.getInt(PHONETIC_NAME_DISPLAY_KEY,
getDefaultPhoneticNameDisplayPreference());
@@ -281,6 +289,7 @@
// listener was unregistered.
mDisplayOrder = PREFERENCE_UNASSIGNED;
mSortOrder = PREFERENCE_UNASSIGNED;
+ mPhoneticNameDisplayPreference = PREFERENCE_UNASSIGNED;
mDefaultAccount = null;
mPreferences.registerOnSharedPreferenceChangeListener(this);
@@ -319,6 +328,9 @@
} else if (SORT_ORDER_KEY.equals(key)) {
mSortOrder = PREFERENCE_UNASSIGNED;
mSortOrder = getSortOrder();
+ } else if (PHONETIC_NAME_DISPLAY_KEY.equals(key)) {
+ mPhoneticNameDisplayPreference = PREFERENCE_UNASSIGNED;
+ mPhoneticNameDisplayPreference = getPhoneticNameDisplayPreference();
} else if (mDefaultAccountKey.equals(key)) {
mDefaultAccount = null;
mDefaultAccount = getDefaultAccount();
diff --git a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
index 3f68d05..22a6683 100644
--- a/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
+++ b/src/com/android/contacts/preference/DisplayOptionsPreferenceFragment.java
@@ -83,6 +83,7 @@
private static final String KEY_EXPORT = "export";
private static final String KEY_MY_INFO = "myInfo";
private static final String KEY_SORT_ORDER = "sortOrder";
+ private static final String KEY_PHONETIC_NAME_DISPLAY = "phoneticNameDisplay";
private static final int LOADER_PROFILE = 0;
private static final int LOADER_ACCOUNTS = 1;
@@ -269,6 +270,10 @@
getPreferenceScreen().removePreference(findPreference(KEY_SORT_ORDER));
}
+ if (!resources.getBoolean(R.bool.config_phonetic_name_display_user_changeable)) {
+ getPreferenceScreen().removePreference(findPreference(KEY_PHONETIC_NAME_DISPLAY));
+ }
+
if (HelpUtils.isHelpAndFeedbackAvailable()) {
getPreferenceScreen().removePreference(findPreference(KEY_ABOUT));
}
diff --git a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
index 7da9099..bea8d14 100644
--- a/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
+++ b/tests/src/com/android/contacts/preference/ContactsPreferencesTest.java
@@ -61,6 +61,8 @@
.thenReturn(true);
Mockito.when(mSharedPreferences.contains(ContactsPreferences.DISPLAY_ORDER_KEY))
.thenReturn(true);
+ Mockito.when(mSharedPreferences.contains(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY))
+ .thenReturn(true);
InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
@@ -108,6 +110,43 @@
mContactsPreferences.getDisplayOrder());
}
+ public void testGetPhoneticNameDisplayDefault() {
+ Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+ false, // R.bool.config_phonetic_name_display_user_changeable
+ true // R.bool.config_default_hide_phonetic_name_if_empty
+ );
+ Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
+ mContactsPreferences.getPhoneticNameDisplayPreference());
+ }
+
+ public void testGetPhoneticNameDisplay() {
+ Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+ true // R.bool.config_phonetic_name_display_user_changeable
+ );
+ Mockito.when(mSharedPreferences.getInt(
+ Mockito.eq(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY),
+ Mockito.anyInt())).thenReturn(PhoneticNameDisplayPreference.HIDE_IF_EMPTY);
+ Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
+ mContactsPreferences.getPhoneticNameDisplayPreference());
+ }
+
+ public void testRefreshPhoneticNameDisplay() throws InterruptedException {
+ Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
+ true // R.bool.config_phonetic_name_display_user_changeable
+ );
+ Mockito.when(mSharedPreferences.getInt(
+ Mockito.eq(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY),
+ Mockito.anyInt())).thenReturn(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
+ PhoneticNameDisplayPreference.SHOW_ALWAYS);
+
+ Assert.assertEquals(PhoneticNameDisplayPreference.HIDE_IF_EMPTY,
+ mContactsPreferences.getPhoneticNameDisplayPreference());
+ mContactsPreferences.refreshValue(ContactsPreferences.PHONETIC_NAME_DISPLAY_KEY);
+
+ Assert.assertEquals(PhoneticNameDisplayPreference.SHOW_ALWAYS,
+ mContactsPreferences.getPhoneticNameDisplayPreference());
+ }
+
public void testRefreshSortOrder() throws InterruptedException {
Mockito.when(mResources.getBoolean(Mockito.anyInt())).thenReturn(
true // R.bool.config_sort_order_user_changeable