diff --git a/src/com/android/settings/language/LanguageAndInputSettings.java b/src/com/android/settings/language/LanguageAndInputSettings.java index 19b1a9f0b67..79f9deddfd8 100644 --- a/src/com/android/settings/language/LanguageAndInputSettings.java +++ b/src/com/android/settings/language/LanguageAndInputSettings.java @@ -177,7 +177,6 @@ public class LanguageAndInputSettings extends DashboardFragment { // Duplicates in summary and details pages. keys.add(KEY_TEXT_TO_SPEECH); keys.add(KEY_PHYSICAL_KEYBOARD); - return keys; } }; diff --git a/src/com/android/settings/language/PhoneLanguagePreferenceController.java b/src/com/android/settings/language/PhoneLanguagePreferenceController.java index 11c3e03d9f9..e7b0c72036c 100644 --- a/src/com/android/settings/language/PhoneLanguagePreferenceController.java +++ b/src/com/android/settings/language/PhoneLanguagePreferenceController.java @@ -23,6 +23,8 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; +import java.util.List; + public class PhoneLanguagePreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { @@ -47,6 +49,13 @@ public class PhoneLanguagePreferenceController extends AbstractPreferenceControl preference.setSummary(localeNames); } + @Override + public void updateNonIndexableKeys(List keys) { + // No index needed, because this pref has the same name as the parent page. Indexing it will + // make search page look like there are duplicate result, creating confusion. + keys.add(getPreferenceKey()); + } + @Override public String getPreferenceKey() { return KEY_PHONE_LANGUAGE; diff --git a/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java index 4050dd13da7..7b315aaf92a 100644 --- a/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/language/PhoneLanguagePreferenceControllerTest.java @@ -16,12 +16,16 @@ package com.android.settings.language; +import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + import android.content.Context; import android.support.v7.preference.Preference; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.testutils.FakeFeatureFactory; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; @@ -31,9 +35,8 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; -import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.List; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) @@ -77,4 +80,11 @@ public class PhoneLanguagePreferenceControllerTest { verify(mPreference).setSummary(testSummary); } + + @Test + public void testUpdateNonIndexable_shouldAddKey() { + final List niks = new ArrayList<>(); + mController.updateNonIndexableKeys(niks); + assertThat(niks).containsExactly(mController.getPreferenceKey()); + } }