Remove accessibility duplicates in settings search
Bug: 33701673
Test: make RunSettingsRoboTests
Change-Id: I46e79051d10c4cae851f8e76304e6cfe0a3f73d4
Merged-In: Idda6d2f98cb8d2cb91a9a4721b2ef84921f9056a
diff --git a/res/xml/accessibility_magnification_settings.xml b/res/xml/accessibility_magnification_settings.xml
index 0f3c119..4083360 100644
--- a/res/xml/accessibility_magnification_settings.xml
+++ b/res/xml/accessibility_magnification_settings.xml
@@ -14,6 +14,7 @@
limitations under the License.
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ android:key="magnification_preference_screen_title"
android:title="@string/accessibility_screen_magnification_title">
<Preference
android:fragment="com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment"
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index a9ca458..98844fa 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -50,6 +50,8 @@
public class DisplaySettings extends DashboardFragment {
private static final String TAG = "DisplaySettings";
+ public static final String KEY_DISPLAY_SIZE = "screen_zoom";
+
private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness";
private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
@@ -123,6 +125,13 @@
}
@Override
+ public List<String> getNonIndexableKeys(Context context) {
+ List<String> keys = new ArrayList<>();
+ keys.add(KEY_DISPLAY_SIZE);
+ return keys;
+ }
+
+ @Override
public List<PreferenceController> 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 eb3e726..342b384 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.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 @@
new BaseSearchIndexProvider() {
@Override
public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) {
- List<SearchIndexableRaw> indexables = new ArrayList<SearchIndexableRaw>();
+ List<SearchIndexableRaw> indexables = new ArrayList<>();
PackageManager packageManager = context.getPackageManager();
AccessibilityManager accessibilityManager =
@@ -763,5 +764,16 @@
indexables.add(indexable);
return indexables;
}
+
+ @Override
+ public List<String> getNonIndexableKeys(Context context) {
+ List<String> 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 83299e8..68979ad 100644
--- a/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/MagnificationPreferenceFragment.java
@@ -31,9 +31,11 @@
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 @@
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 @@
return Collections.emptyList();
}
}
+
+ @Override
+ public List<String> getNonIndexableKeys(Context context) {
+ List<String> 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 bda9319..8732227 100644
--- a/src/com/android/settings/search/BaseSearchIndexProvider.java
+++ b/src/com/android/settings/search/BaseSearchIndexProvider.java
@@ -42,7 +42,7 @@
public class BaseSearchIndexProvider implements Indexable.SearchIndexProvider {
private static final String TAG = "BaseSearchIndex";
- private static final List<String> EMPTY_LIST = Collections.emptyList();
+ private static final List<String> 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 0000000..4da06c0
--- /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<String> niks = AccessibilitySettings.SEARCH_INDEX_DATA_PROVIDER
+ .getNonIndexableKeys(context);
+ final List<String> 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 f10752a..6ffd704 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 @@
for (Integer xmlResId : xmlList) {
// Get all keys to be indexed
final List<String> 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 @@
masterKeys.addAll(prefKeys);
pageKeys.clear();
}
- assertThat(duplicateKeys).isEmpty();
+ assertThat(duplicateKeys).containsExactlyElementsIn(grandfatheredKeys);
}
/**