diff --git a/res/xml/accessibility_magnification_settings.xml b/res/xml/accessibility_magnification_settings.xml index 0f3c1190839..4083360a396 100644 --- a/res/xml/accessibility_magnification_settings.xml +++ b/res/xml/accessibility_magnification_settings.xml @@ -14,6 +14,7 @@ limitations under the License. --> getNonIndexableKeys(Context context) { + List keys = new ArrayList<>(); + keys.add(KEY_DISPLAY_SIZE); + return keys; + } + @Override public List getPreferenceControllers(Context context) { return buildPreferenceControllers(context, null); diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index eb3e726b6dc..342b3847a6a 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -46,6 +46,7 @@ import com.android.internal.content.PackageMonitor; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.view.RotationPolicy; import com.android.internal.view.RotationPolicy.RotationPolicyListener; +import com.android.settings.DisplaySettings; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; @@ -721,7 +722,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements new BaseSearchIndexProvider() { @Override public List getRawDataToIndex(Context context, boolean enabled) { - List indexables = new ArrayList(); + List indexables = new ArrayList<>(); PackageManager packageManager = context.getPackageManager(); AccessibilityManager accessibilityManager = @@ -763,5 +764,16 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements indexables.add(indexable); return indexables; } + + @Override + public List getNonIndexableKeys(Context context) { + List keys = new ArrayList<>(); + // Duplicates in Display + keys.add(FONT_SIZE_PREFERENCE_SCREEN); + // TODO (b/37741509) Remove this non-indexble key when bug is resolved. + keys.add(DisplaySettings.KEY_DISPLAY_SIZE); + + return keys; + } }; } diff --git a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java index 83299e83a4a..68979ad61b3 100644 --- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java @@ -31,9 +31,11 @@ import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.core.PreferenceController; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -42,6 +44,7 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra Indexable { // Settings App preference keys + private static final String PREFERENCE_TITLE_KEY = "magnification_preference_screen_title"; private static final String MAGNIFICATION_GESTURES_PREFERENCE_SCREEN_KEY = "screen_magnification_gestures_preference_screen"; private static final String MAGNIFICATION_NAVBAR_PREFERENCE_SCREEN_KEY = @@ -214,5 +217,12 @@ public final class MagnificationPreferenceFragment extends SettingsPreferenceFra return Collections.emptyList(); } } + + @Override + public List getNonIndexableKeys(Context context) { + List keys = super.getNonIndexableKeys(context); + keys.add(PREFERENCE_TITLE_KEY); + return keys; + } }; } diff --git a/src/com/android/settings/search/BaseSearchIndexProvider.java b/src/com/android/settings/search/BaseSearchIndexProvider.java index bda93198cab..87322279134 100644 --- a/src/com/android/settings/search/BaseSearchIndexProvider.java +++ b/src/com/android/settings/search/BaseSearchIndexProvider.java @@ -42,7 +42,7 @@ import java.util.List; public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider { private static final String TAG = "BaseSearchIndex"; - private static final List EMPTY_LIST = Collections.emptyList(); + private static final List EMPTY_LIST = new ArrayList<>(); public BaseSearchIndexProvider() { } diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java new file mode 100644 index 00000000000..4da06c083dc --- /dev/null +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java @@ -0,0 +1,34 @@ +package com.android.settings.accessibility; + +import android.content.Context; + +import com.android.settings.R; +import com.android.settings.SettingsRobolectricTestRunner; +import com.android.settings.TestConfig; +import com.android.settings.testutils.XmlTestUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.RuntimeEnvironment; +import org.robolectric.annotation.Config; + +import java.util.ArrayList; +import java.util.List; + +import static com.google.common.truth.Truth.assertThat; + +@RunWith(SettingsRobolectricTestRunner.class) +@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) +public class AccessibilitySettingsTest { + + @Test + public void testNonIndexableKeys_existInXmlLayout() { + final Context context = RuntimeEnvironment.application; + final List niks = AccessibilitySettings.SEARCH_INDEX_DATA_PROVIDER + .getNonIndexableKeys(context); + final List keys = new ArrayList<>(); + + keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.accessibility_settings)); + + assertThat(keys).containsAllIn(niks); + } +} diff --git a/tests/robotests/src/com/android/settings/search/DataIntegrityTest.java b/tests/robotests/src/com/android/settings/search/DataIntegrityTest.java index f10752a44fc..6ffd704d9e2 100644 --- a/tests/robotests/src/com/android/settings/search/DataIntegrityTest.java +++ b/tests/robotests/src/com/android/settings/search/DataIntegrityTest.java @@ -93,10 +93,7 @@ public class DataIntegrityTest { for (Integer xmlResId : xmlList) { // Get all keys to be indexed final List prefKeys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlResId); - pageKeys.addAll(prefKeys); - // Remove grandfathered keys. - pageKeys.removeAll(grandfatheredKeys); // Find all already-existing keys. pageKeys.retainAll(masterKeys); // Keep list of offending duplicate keys. @@ -105,7 +102,7 @@ public class DataIntegrityTest { masterKeys.addAll(prefKeys); pageKeys.clear(); } - assertThat(duplicateKeys).isEmpty(); + assertThat(duplicateKeys).containsExactlyElementsIn(grandfatheredKeys); } /**