Misc tweaks to Indexable usage and tests.

- Make SettingsPreferenceFragment implement Indexable directly
- Add existing fragments that are SettingsPrefFragment but not Indexable
  to grandfather list.
- Fix "font size" fragment so it shows up in search properly.
- Remove duplicates for "lock screen display", "Screen saver".

Bug: 70720645
Test: robotests
Change-Id: I44ce0cac0fdf5e882b315861bb4bebc45dbe01e6
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 3d9f666..acf171c 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -63,13 +63,13 @@
         android:summary="@string/summary_placeholder"
         android:entries="@array/screen_timeout_entries"
         android:entryValues="@array/screen_timeout_values"
-        settings:keywords="@string/keywords_screen_timeout"/>
+        settings:keywords="@string/keywords_screen_timeout" />
 
     <SwitchPreference
         android:key="auto_rotate"
         android:title="@string/accelerometer_title"
         settings:keywords="@string/keywords_auto_rotate"
-        settings:controller="com.android.settings.display.AutoRotatePreferenceController"/>
+        settings:controller="com.android.settings.display.AutoRotatePreferenceController" />
 
     <Preference
         android:key="color_mode"
@@ -82,8 +82,7 @@
         android:key="font_size"
         android:title="@string/title_font_size"
         android:fragment="com.android.settings.accessibility.ToggleFontSizePreferenceFragment"
-        settings:controller="com.android.settings.display.FontSizePreferenceController"
-        settings:keywords="@string/keywords_display_font_size" />
+        settings:controller="com.android.settings.display.FontSizePreferenceController" />
 
     <com.android.settings.display.ScreenZoomPreference
         android:key="display_settings_screen_zoom"
@@ -99,7 +98,8 @@
     <Preference
         android:key="screensaver"
         android:title="@string/screensaver_settings_title"
-        android:fragment="com.android.settings.dream.DreamSettings" />
+        android:fragment="com.android.settings.dream.DreamSettings"
+        settings:controller="com.android.settings.dream.DreamEntryPreferenceController" />
 
     <com.android.settingslib.RestrictedPreference
         android:key="lockscreen_from_display_settings"
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index afdf9d0..ea9267a 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -49,7 +49,6 @@
     public static final String KEY_DISPLAY_SIZE = "display_settings_screen_zoom";
 
     private static final String KEY_SCREEN_TIMEOUT = "screen_timeout";
-    private static final String KEY_AMBIENT_DISPLAY = "ambient_display";
     private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness_entry";
     private static final String KEY_NIGHT_DISPLAY = "night_display";
 
diff --git a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
index 2873881..d953229 100644
--- a/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
+++ b/src/com/android/settings/PreviewSeekBarPreferenceFragment.java
@@ -97,9 +97,9 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
+            Bundle savedInstanceState) {
         final View root = super.onCreateView(inflater, container, savedInstanceState);
-        final ViewGroup listContainer = (ViewGroup) root.findViewById(android.R.id.list_container);
+        final ViewGroup listContainer = root.findViewById(android.R.id.list_container);
         listContainer.removeAllViews();
 
         final View content = inflater.inflate(mActivityLayoutResId, listContainer, false);
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 5a5db45..d0bfa55 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -37,6 +37,7 @@
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.search.Indexable;
 import com.android.settings.search.actionbar.SearchMenuController;
 import com.android.settings.support.actionbar.HelpMenuController;
 import com.android.settings.support.actionbar.HelpResourceProvider;
@@ -61,7 +62,7 @@
  * Base class for Settings fragments, with some helper functions and dialog management.
  */
 public abstract class SettingsPreferenceFragment extends InstrumentedPreferenceFragment
-        implements DialogCreatable, HelpResourceProvider {
+        implements DialogCreatable, HelpResourceProvider, Indexable {
 
     private static final String TAG = "SettingsPreference";
 
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 61f2672..ab38d2d 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -48,7 +48,6 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 import com.android.settingslib.RestrictedPreference;
@@ -75,7 +74,7 @@
  */
 @SearchIndexable
 public class AccessibilitySettings extends SettingsPreferenceFragment implements
-        Preference.OnPreferenceChangeListener, Indexable {
+        Preference.OnPreferenceChangeListener {
 
     // Index of the first preference in a preference category.
     private static final int FIRST_PREFERENCE_IN_CATEGORY_INDEX = -1;
diff --git a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
index 45b9def..c3100ee 100644
--- a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.os.Bundle;
@@ -26,10 +27,18 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.PreviewSeekBarPreferenceFragment;
 import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
+import com.android.settings.search.SearchIndexableRaw;
+import com.android.settingslib.search.SearchIndexable;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * Preference fragment used to control font size.
  */
+@SearchIndexable
 public class ToggleFontSizePreferenceFragment extends PreviewSeekBarPreferenceFragment {
 
     private float[] mValues;
@@ -39,7 +48,7 @@
         super.onCreate(savedInstanceState);
 
         mActivityLayoutResId = R.layout.font_size_activity;
-        mPreviewSampleResIds = new int[]{R.layout.font_size_preview};
+        mPreviewSampleResIds = new int[] {R.layout.font_size_preview};
 
         Resources res = getContext().getResources();
         final ContentResolver resolver = getContext().getContentResolver();
@@ -85,19 +94,35 @@
     }
 
     /**
-     *  Utility function that returns the index in a string array with which the represented value is
-     *  the closest to a given float value.
+     * Utility function that returns the index in a string array with which the represented value is
+     * the closest to a given float value.
      */
     public static int fontSizeValueToIndex(float val, String[] indices) {
         float lastVal = Float.parseFloat(indices[0]);
-        for (int i=1; i<indices.length; i++) {
+        for (int i = 1; i < indices.length; i++) {
             float thisVal = Float.parseFloat(indices[i]);
-            if (val < (lastVal + (thisVal-lastVal)*.5f)) {
-                return i-1;
+            if (val < (lastVal + (thisVal - lastVal) * .5f)) {
+                return i - 1;
             }
             lastVal = thisVal;
         }
-        return indices.length-1;
+        return indices.length - 1;
     }
 
+    public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableRaw> getRawDataToIndex(Context context,
+                        boolean enabled) {
+                    final ArrayList<SearchIndexableRaw> result = new ArrayList<>();
+                    final SearchIndexableRaw data = new SearchIndexableRaw(context);
+                    data.title = context.getString(R.string.title_font_size);
+                    data.screenTitle = context.getString(R.string.title_font_size);
+                    data.key = "font_size_setting_screen";
+                    data.keywords = context.getString(R.string.keywords_display_font_size);
+                    result.add(data);
+                    return result;
+                }
+            };
+
 }
diff --git a/src/com/android/settings/display/FontSizePreferenceController.java b/src/com/android/settings/display/FontSizePreferenceController.java
index 3d6b6b4..a55d577 100644
--- a/src/com/android/settings/display/FontSizePreferenceController.java
+++ b/src/com/android/settings/display/FontSizePreferenceController.java
@@ -29,7 +29,7 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return AVAILABLE;
+        return AVAILABLE_UNSEARCHABLE;
     }
 
     @Override
diff --git a/src/com/android/settings/display/NightDisplaySettings.java b/src/com/android/settings/display/NightDisplaySettings.java
index d6fd544..d322c1d 100644
--- a/src/com/android/settings/display/NightDisplaySettings.java
+++ b/src/com/android/settings/display/NightDisplaySettings.java
@@ -42,7 +42,7 @@
  */
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
 public class NightDisplaySettings extends DashboardFragment
-        implements ColorDisplayController.Callback, Indexable {
+        implements ColorDisplayController.Callback {
 
     private static final String TAG = "NightDisplaySettings";
 
diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java
index fed8aa6..dbb6353 100644
--- a/src/com/android/settings/display/ScreenZoomSettings.java
+++ b/src/com/android/settings/display/ScreenZoomSettings.java
@@ -27,7 +27,6 @@
 import com.android.settings.PreviewSeekBarPreferenceFragment;
 import com.android.settings.R;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
 import com.android.settings.search.SearchIndexableRaw;
 import com.android.settingslib.display.DisplayDensityUtils;
 import com.android.settingslib.search.SearchIndexable;
@@ -39,7 +38,7 @@
  * Preference fragment used to control screen zoom.
  */
 @SearchIndexable(forTarget = SearchIndexable.ALL & ~SearchIndexable.ARC)
-public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment implements Indexable {
+public class ScreenZoomSettings extends PreviewSeekBarPreferenceFragment {
 
     private int mDefaultDensity;
     private int[] mValues;
diff --git a/src/com/android/settings/dream/DreamEntryPreferenceController.java b/src/com/android/settings/dream/DreamEntryPreferenceController.java
new file mode 100644
index 0000000..097fa3a
--- /dev/null
+++ b/src/com/android/settings/dream/DreamEntryPreferenceController.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.dream;
+
+import android.content.Context;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class DreamEntryPreferenceController extends BasePreferenceController {
+
+    public DreamEntryPreferenceController(Context context, String preferenceKey) {
+        super(context, preferenceKey);
+    }
+
+    @Override
+    public int getAvailabilityStatus() {
+        return AVAILABLE_UNSEARCHABLE;
+    }
+}
diff --git a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
index 96185e2..75bf724 100644
--- a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
@@ -38,7 +38,6 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
 import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtil;
 import com.android.settingslib.inputmethod.InputMethodPreference;
 import com.android.settingslib.inputmethod.InputMethodSettingValuesWrapper;
@@ -50,7 +49,7 @@
 
 @SearchIndexable
 public final class AvailableVirtualKeyboardFragment extends SettingsPreferenceFragment
-        implements InputMethodPreference.OnSavePreferenceListener, Indexable {
+        implements InputMethodPreference.OnSavePreferenceListener {
 
     private final ArrayList<InputMethodPreference> mInputMethodPreferenceList = new ArrayList<>();
     private InputMethodSettingValuesWrapper mInputMethodSettingValues;
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index 734c290..765a834 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -58,7 +58,7 @@
 @SearchIndexable
 public final class PhysicalKeyboardFragment extends SettingsPreferenceFragment
         implements InputManager.InputDeviceListener,
-        KeyboardLayoutDialogFragment.OnSetupKeyboardLayoutsListener, Indexable {
+        KeyboardLayoutDialogFragment.OnSetupKeyboardLayoutsListener {
 
     private static final String KEYBOARD_ASSISTANCE_CATEGORY = "keyboard_assistance_category";
     private static final String SHOW_VIRTUAL_KEYBOARD_SWITCH = "show_virtual_keyboard_switch";
diff --git a/src/com/android/settings/security/ScreenPinningSettings.java b/src/com/android/settings/security/ScreenPinningSettings.java
index e58159c2..8a51449 100644
--- a/src/com/android/settings/security/ScreenPinningSettings.java
+++ b/src/com/android/settings/security/ScreenPinningSettings.java
@@ -34,7 +34,6 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.password.ChooseLockGeneric;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
 import com.android.settings.widget.SwitchBar;
 import com.android.settingslib.search.SearchIndexable;
 
@@ -51,7 +50,7 @@
  */
 @SearchIndexable
 public class ScreenPinningSettings extends SettingsPreferenceFragment
-        implements SwitchBar.OnSwitchChangeListener, Indexable {
+        implements SwitchBar.OnSwitchChangeListener {
 
     private static final CharSequence KEY_USE_SCREEN_LOCK = "use_screen_lock";
     private static final int CHANGE_LOCK_METHOD_REQUEST = 43;
diff --git a/src/com/android/settings/security/screenlock/LockScreenPreferenceController.java b/src/com/android/settings/security/screenlock/LockScreenPreferenceController.java
index 3ffbed1..58576e8 100644
--- a/src/com/android/settings/security/screenlock/LockScreenPreferenceController.java
+++ b/src/com/android/settings/security/screenlock/LockScreenPreferenceController.java
@@ -54,11 +54,11 @@
     public int getAvailabilityStatus() {
         if (!mLockPatternUtils.isSecure(MY_USER_ID)) {
             return mLockPatternUtils.isLockScreenDisabled(MY_USER_ID)
-                    ? DISABLED_FOR_USER : AVAILABLE;
+                    ? DISABLED_FOR_USER : AVAILABLE_UNSEARCHABLE;
         } else {
             return mLockPatternUtils.getKeyguardStoredPasswordQuality(MY_USER_ID)
                     == PASSWORD_QUALITY_UNSPECIFIED
-                    ? DISABLED_FOR_USER : AVAILABLE;
+                    ? DISABLED_FOR_USER : AVAILABLE_UNSEARCHABLE;
         }
     }
 
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index 47922a7..a56a290 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -32,7 +32,6 @@
 import android.util.Log;
 import android.util.Pair;
 
-import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
@@ -230,8 +229,7 @@
         return searchDestination;
     }
 
-    @VisibleForTesting
-    static Intent getContentIntent(Context context, SliceData sliceData) {
+    public static Intent getContentIntent(Context context, SliceData sliceData) {
         final Uri contentUri = new Uri.Builder().appendPath(sliceData.getKey()).build();
         final Intent intent = buildSearchResultPageIntent(context,
                 sliceData.getFragmentClassName(), sliceData.getKey(),
diff --git a/src/com/android/settings/tts/TextToSpeechSettings.java b/src/com/android/settings/tts/TextToSpeechSettings.java
index c4f980b..c13d12c 100644
--- a/src/com/android/settings/tts/TextToSpeechSettings.java
+++ b/src/com/android/settings/tts/TextToSpeechSettings.java
@@ -63,7 +63,7 @@
 @SearchIndexable
 public class TextToSpeechSettings extends SettingsPreferenceFragment
         implements Preference.OnPreferenceChangeListener,
-        GearPreference.OnGearClickListener, Indexable {
+        GearPreference.OnGearClickListener {
 
     private static final String STATE_KEY_LOCALE_ENTRIES = "locale_entries";
     private static final String STATE_KEY_LOCALE_ENTRY_VALUES = "locale_entry_values";
diff --git a/src/com/android/settings/tts/TtsEnginePreferenceFragment.java b/src/com/android/settings/tts/TtsEnginePreferenceFragment.java
index 42c3c53..01f2e42 100644
--- a/src/com/android/settings/tts/TtsEnginePreferenceFragment.java
+++ b/src/com/android/settings/tts/TtsEnginePreferenceFragment.java
@@ -26,8 +26,8 @@
 import androidx.preference.PreferenceCategory;
 
 @SearchIndexable
-public class TtsEnginePreferenceFragment extends SettingsPreferenceFragment //implements
-        implements RadioButtonGroupState, Indexable {
+public class TtsEnginePreferenceFragment extends SettingsPreferenceFragment
+        implements RadioButtonGroupState {
     private static final String TAG = "TtsEnginePrefFragment";
 
     private static final int VOICE_DATA_INTEGRITY_CHECK = 1977;
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index c57d959..00809e4 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -96,7 +96,7 @@
         implements Preference.OnPreferenceClickListener, View.OnClickListener,
         MultiUserSwitchBarController.OnMultiUserSwitchChangedListener,
         DialogInterface.OnDismissListener,
-        EditUserInfoController.OnContentChangedCallback, Indexable {
+        EditUserInfoController.OnContentChangedCallback {
 
     private static final String TAG = "UserSettings";
 
diff --git a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
index a2be681..befd880 100644
--- a/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
+++ b/tests/robotests/assets/grandfather_invalid_base_preference_controller_constructor
@@ -11,5 +11,4 @@
 com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceController
 com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController
 com.android.settings.security.VisiblePatternProfilePreferenceController
-com.android.settings.security.screenlock.LockScreenPreferenceController
 com.android.settings.wifi.details.WifiMeteredPreferenceController
\ No newline at end of file
diff --git a/tests/robotests/assets/grandfather_not_implementing_index_provider b/tests/robotests/assets/grandfather_not_implementing_index_provider
index 6bbdca7..dfa4fba 100644
--- a/tests/robotests/assets/grandfather_not_implementing_index_provider
+++ b/tests/robotests/assets/grandfather_not_implementing_index_provider
@@ -1,31 +1,91 @@
+com.android.settings.accessibility.AccessibilitySettingsForSetupWizard
+com.android.settings.accessibility.CaptionPropertiesFragment
+com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment
+com.android.settings.accessibility.ToggleAutoclickPreferenceFragment
+com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment
+com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment
+com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragmentForSetupWizard
+com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard
+com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard
+com.android.settings.accounts.AccountDetailDashboardFragment
+com.android.settings.accounts.AccountSyncSettings
+com.android.settings.accounts.ManagedProfileSettings
 com.android.settings.applications.appinfo.AppInfoDashboardFragment
-com.android.settings.datausage.UnrestrictedDataAccess
-com.android.settings.bluetooth.DevicePickerFragment
+com.android.settings.applications.appinfo.DrawOverlayDetails
+com.android.settings.applications.appinfo.ExternalSourcesDetails
+com.android.settings.applications.appinfo.PictureInPictureDetails
+com.android.settings.applications.appinfo.PictureInPictureSettings
+com.android.settings.applications.appinfo.WriteSettingsDetails
+com.android.settings.applications.AppLaunchSettings
+com.android.settings.applications.AppStorageSettings
+com.android.settings.applications.ConfirmConvertToFbe
+com.android.settings.applications.DirectoryAccessDetails
+com.android.settings.applications.PremiumSmsAccess
+com.android.settings.applications.ProcessStatsDetail
+com.android.settings.applications.ProcessStatsSummary
+com.android.settings.applications.ProcessStatsUi
+com.android.settings.applications.RunningServices
+com.android.settings.applications.UsageAccessDetails
+com.android.settings.applications.VrListenerSettings
+com.android.settings.backup.ToggleBackupSettingFragment
+com.android.settings.biometrics.fingerprint.FingerprintSettings$FingerprintSettingsFragment
 com.android.settings.bluetooth.BluetoothDeviceDetailsFragment
 com.android.settings.bluetooth.BluetoothPairingDetail
-com.android.settings.accounts.AccountDetailDashboardFragment
-com.android.settings.accounts.ManagedProfileSettings
-com.android.settings.shortcut.CreateShortcut
-com.android.settings.fuelgauge.PowerUsageAnomalyDetails
-com.android.settings.fuelgauge.AdvancedPowerUsageDetail
+com.android.settings.bluetooth.DevicePickerFragment
+com.android.settings.datausage.AppDataUsage
+com.android.settings.datausage.BillingCycleSettings
+com.android.settings.datausage.DataSaverSummary
+com.android.settings.datausage.DataUsageList
+com.android.settings.datausage.UnrestrictedDataAccess
+com.android.settings.datetime.timezone.TimeZoneSettings
 com.android.settings.development.featureflags.FeatureFlagsDashboard
 com.android.settings.development.qstile.DevelopmentTileConfigFragment
+com.android.settings.deviceinfo.PrivateVolumeSettings
+com.android.settings.deviceinfo.PublicVolumeSettings
 com.android.settings.deviceinfo.StorageProfileFragment
-com.android.settings.inputmethod.UserDictionaryList
-com.android.settings.notification.ChannelNotificationSettings
-com.android.settings.notification.ChannelGroupNotificationSettings
-com.android.settings.notification.AppNotificationSettings
-com.android.settings.wifi.details.WifiNetworkDetailsFragment
-com.android.settings.wifi.p2p.WifiP2pSettings
 com.android.settings.enterprise.ApplicationListFragment$AdminGrantedPermissionCamera
 com.android.settings.enterprise.ApplicationListFragment$AdminGrantedPermissionLocation
 com.android.settings.enterprise.ApplicationListFragment$AdminGrantedPermissionMicrophone
 com.android.settings.enterprise.ApplicationListFragment$EnterpriseInstalledPackages
 com.android.settings.enterprise.EnterpriseSetDefaultAppsListFragment
+com.android.settings.fuelgauge.AdvancedPowerUsageDetail
+com.android.settings.fuelgauge.BatteryHistoryDetail
+com.android.settings.fuelgauge.InactiveApps
+com.android.settings.fuelgauge.PowerUsageAnomalyDetails
+com.android.settings.fuelgauge.RestrictedAppDetails
+com.android.settings.IccLockSettings
+com.android.settings.inputmethod.InputMethodAndSubtypeEnabler
 com.android.settings.inputmethod.KeyboardLayoutPickerFragment
-com.android.settings.wifi.SavedAccessPointsWifiSettings
+com.android.settings.inputmethod.SpellCheckersSettings
+com.android.settings.inputmethod.UserDictionaryList
+com.android.settings.localepicker.LocaleListEditor
+com.android.settings.network.ApnEditor
+com.android.settings.network.ApnSettings
+com.android.settings.notification.AppNotificationSettings
+com.android.settings.notification.ChannelGroupNotificationSettings
+com.android.settings.notification.ChannelNotificationSettings
+com.android.settings.notification.NotificationAccessSettings
+com.android.settings.notification.NotificationStation
+com.android.settings.notification.RedactionInterstitial$RedactionInterstitialFragment
+com.android.settings.notification.ZenAccessSettings
 com.android.settings.notification.ZenModeEventRuleSettings
 com.android.settings.notification.ZenModeScheduleRuleSettings
-com.android.settings.fuelgauge.RestrictedAppDetails
-com.android.settings.datetime.timezone.TimeZoneSettings
-com.android.settings.inputmethod.InputMethodAndSubtypeEnabler
+com.android.settings.password.ChooseLockGeneric$ChooseLockGenericFragment
+com.android.settings.password.SetupChooseLockGeneric$SetupChooseLockGenericFragment
+com.android.settings.print.PrintJobSettingsFragment
+com.android.settings.print.PrintServiceSettingsFragment
+com.android.settings.SetupRedactionInterstitial$SetupRedactionInterstitialFragment
+com.android.settings.shortcut.CreateShortcut
+com.android.settings.TestingSettings
+com.android.settings.UserCredentialsSettings
+com.android.settings.users.AppRestrictionsFragment
+com.android.settings.users.RestrictedProfileSettings
+com.android.settings.users.UserDetailsSettings
+com.android.settings.vpn2.AppManagementFragment
+com.android.settings.vpn2.VpnSettings
+com.android.settings.wifi.calling.WifiCallingSettingsForSub
+com.android.settings.wifi.ChangeWifiStateDetails
+com.android.settings.wifi.details.WifiNetworkDetailsFragment
+com.android.settings.wifi.p2p.WifiP2pSettings
+com.android.settings.wifi.SavedAccessPointsWifiSettings
+com.android.settings.wifi.WifiInfo
diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable
deleted file mode 100644
index 45474e7..0000000
--- a/tests/robotests/assets/grandfather_not_implementing_indexable
+++ /dev/null
@@ -1,63 +0,0 @@
-com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment
-com.android.settings.inputmethod.SpellCheckersSettings
-com.android.settings.fuelgauge.InactiveApps
-com.android.settings.accessibility.CaptionPropertiesFragment
-com.android.settings.accessibility.AccessibilitySettingsForSetupWizard
-com.android.settings.datausage.DataUsageList
-com.android.settings.vpn2.AppManagementFragment
-com.android.settings.vpn2.VpnSettings
-com.android.settings.biometrics.fingerprint.FingerprintSettings$FingerprintSettingsFragment
-com.android.settings.applications.ProcessStatsDetail
-com.android.settings.wifi.WifiInfo
-com.android.settings.applications.VrListenerSettings
-com.android.settings.datausage.DataSaverSummary
-com.android.settings.datausage.AppDataUsage
-com.android.settings.accessibility.FontSizePreferenceFragmentForSetupWizard
-com.android.settings.applications.appinfo.WriteSettingsDetails
-com.android.settings.applications.ProcessStatsSummary
-com.android.settings.users.RestrictedProfileSettings
-com.android.settings.accessibility.ToggleAutoclickPreferenceFragment
-com.android.settings.applications.AppLaunchSettings
-com.android.settings.applications.ProcessStatsUi
-com.android.settings.datausage.BillingCycleSettings
-com.android.settings.notification.NotificationStation
-com.android.settings.print.PrintJobSettingsFragment
-com.android.settings.accessibility.ToggleScreenReaderPreferenceFragmentForSetupWizard
-com.android.settings.accessibility.ToggleSelectToSpeakPreferenceFragmentForSetupWizard
-com.android.settings.accounts.AccountSyncSettings
-com.android.settings.notification.RedactionInterstitial$RedactionInterstitialFragment
-com.android.settings.applications.appinfo.DrawOverlayDetails
-com.android.settings.backup.ToggleBackupSettingFragment
-com.android.settings.users.UserDetailsSettings
-com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragmentForSetupWizard
-com.android.settings.fuelgauge.BatteryHistoryDetail
-com.android.settings.applications.RunningServices
-com.android.settings.applications.ConfirmConvertToFbe
-com.android.settings.deviceinfo.PublicVolumeSettings
-com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment
-com.android.settings.print.PrintServiceSettingsFragment
-com.android.settings.deviceinfo.PrivateVolumeSettings
-com.android.settings.users.AppRestrictionsFragment
-com.android.settings.notification.ZenAccessSettings
-com.android.settings.accessibility.ToggleFontSizePreferenceFragment
-com.android.settings.applications.PremiumSmsAccess
-com.android.settings.applications.UsageAccessDetails
-com.android.settings.applications.AppStorageSettings
-com.android.settings.notification.NotificationAccessSettings
-com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment
-com.android.settings.localepicker.LocaleListEditor
-com.android.settings.applications.appinfo.ExternalSourcesDetails
-com.android.settings.applications.appinfo.PictureInPictureSettings
-com.android.settings.applications.appinfo.PictureInPictureDetails
-com.android.settings.network.ApnSettings
-com.android.settings.wifi.calling.WifiCallingSettingsForSub
-com.android.settings.password.SetupChooseLockGeneric$SetupChooseLockGenericFragment
-com.android.settings.SetupRedactionInterstitial$SetupRedactionInterstitialFragment
-com.android.settings.password.ChooseLockGeneric$ChooseLockGenericFragment
-com.android.settings.IccLockSettings
-com.android.settings.TetherSettings
-com.android.settings.network.ApnEditor
-com.android.settings.UserCredentialsSettings
-com.android.settings.TestingSettings
-com.android.settings.applications.DirectoryAccessDetails
-com.android.settings.wifi.ChangeWifiStateDetails
diff --git a/tests/robotests/assets/grandfather_not_in_search_index_provider_registry b/tests/robotests/assets/grandfather_not_in_search_index_provider_registry
index 1c5603e2..af663f4 100644
--- a/tests/robotests/assets/grandfather_not_in_search_index_provider_registry
+++ b/tests/robotests/assets/grandfather_not_in_search_index_provider_registry
@@ -1,2 +1,3 @@
+com.android.settings.accessibility.FontSizePreferenceFragmentForSetupWizard
 com.android.settings.display.ScreenZoomPreferenceFragmentForSetupWizard
 com.android.settings.search.FakeSettingsFragment
diff --git a/tests/robotests/src/com/android/settings/display/FontSizePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/FontSizePreferenceControllerTest.java
index 585b2e8..5169290 100644
--- a/tests/robotests/src/com/android/settings/display/FontSizePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/FontSizePreferenceControllerTest.java
@@ -49,7 +49,7 @@
     @Test
     public void isAlwaysAvailable() {
         assertThat(mController.getAvailabilityStatus())
-                .isEqualTo(BasePreferenceController.AVAILABLE);
+                .isEqualTo(BasePreferenceController.AVAILABLE_UNSEARCHABLE);
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
index c68ddbb..e7cc653 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
@@ -40,8 +40,6 @@
 public class SearchIndexProviderCodeInspector extends CodeInspector {
     private static final String TAG = "SearchCodeInspector";
 
-    private static final String NOT_IMPLEMENTING_INDEXABLE_ERROR =
-            "SettingsPreferenceFragment should implement Indexable, but these do not:\n";
     private static final String NOT_CONTAINING_PROVIDER_OBJECT_ERROR =
             "Indexable should have public field "
                     + DatabaseIndexingUtils.FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER
@@ -57,19 +55,15 @@
             "SearchIndexableProvider must either provide no resource to index, or valid ones. "
             + "But the followings contain resource with xml id = 0\n";
 
-    private final List<String> notImplementingIndexableGrandfatherList;
     private final List<String> notImplementingIndexProviderGrandfatherList;
     private final List<String> notInSearchIndexableRegistryGrandfatherList;
     private final List<String> notSharingPrefControllersGrandfatherList;
 
     public SearchIndexProviderCodeInspector(List<Class<?>> classes) {
         super(classes);
-        notImplementingIndexableGrandfatherList = new ArrayList<>();
         notImplementingIndexProviderGrandfatherList = new ArrayList<>();
         notInSearchIndexableRegistryGrandfatherList = new ArrayList<>();
         notSharingPrefControllersGrandfatherList = new ArrayList<>();
-        initializeGrandfatherList(notImplementingIndexableGrandfatherList,
-                "grandfather_not_implementing_indexable");
         initializeGrandfatherList(notImplementingIndexProviderGrandfatherList,
                 "grandfather_not_implementing_index_provider");
         initializeGrandfatherList(notInSearchIndexableRegistryGrandfatherList,
@@ -80,7 +74,6 @@
 
     @Override
     public void run() {
-        final Set<String> notImplementingIndexable = new ArraySet<>();
         final Set<String> notImplementingIndexProvider = new ArraySet<>();
         final Set<String> notInSearchProviderRegistry = new ArraySet<>();
         final Set<String> notSharingPreferenceControllers = new ArraySet<>();
@@ -95,14 +88,6 @@
             if (!SettingsPreferenceFragment.class.isAssignableFrom(clazz)) {
                 continue;
             }
-            // If it's a SettingsPreferenceFragment, it must also be Indexable.
-            final boolean implementsIndexable = Indexable.class.isAssignableFrom(clazz);
-            if (!implementsIndexable) {
-                if (!notImplementingIndexableGrandfatherList.remove(className)) {
-                    notImplementingIndexable.add(className);
-                }
-                continue;
-            }
             final boolean hasSearchIndexProvider = hasSearchIndexProvider(clazz);
             // If it implements Indexable, it must also implement the index provider field.
             if (!hasSearchIndexProvider) {
@@ -135,8 +120,6 @@
         }
 
         // Build error messages
-        final String indexableError = buildErrorMessage(NOT_IMPLEMENTING_INDEXABLE_ERROR,
-                notImplementingIndexable);
         final String indexProviderError = buildErrorMessage(NOT_CONTAINING_PROVIDER_OBJECT_ERROR,
                 notImplementingIndexProvider);
         final String notSharingPrefControllerError = buildErrorMessage(
@@ -146,9 +129,6 @@
                 buildErrorMessage(NOT_IN_INDEXABLE_PROVIDER_REGISTRY, notInSearchProviderRegistry);
         final String notProvidingValidResourceError = buildErrorMessage(
                 NOT_PROVIDING_VALID_RESOURCE_ERROR, notProvidingValidResource);
-        assertWithMessage(indexableError)
-                .that(notImplementingIndexable)
-                .isEmpty();
         assertWithMessage(indexProviderError)
                 .that(notImplementingIndexProvider)
                 .isEmpty();
@@ -161,8 +141,6 @@
         assertWithMessage(notProvidingValidResourceError)
                 .that(notProvidingValidResource)
                 .isEmpty();
-        assertNoObsoleteInGrandfatherList("grandfather_not_implementing_indexable",
-                notImplementingIndexableGrandfatherList);
         assertNoObsoleteInGrandfatherList("grandfather_not_implementing_index_provider",
                 notImplementingIndexProviderGrandfatherList);
         assertNoObsoleteInGrandfatherList("grandfather_not_in_search_index_provider_registry",
diff --git a/tests/robotests/src/com/android/settings/security/screenlock/LockScreenPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/screenlock/LockScreenPreferenceControllerTest.java
index 2eaf3c0..b77b44e 100644
--- a/tests/robotests/src/com/android/settings/security/screenlock/LockScreenPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/screenlock/LockScreenPreferenceControllerTest.java
@@ -19,7 +19,7 @@
 import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC;
 import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
 import static androidx.lifecycle.Lifecycle.Event.ON_RESUME;
-import static com.android.settings.core.BasePreferenceController.AVAILABLE;
+import static com.android.settings.core.BasePreferenceController.AVAILABLE_UNSEARCHABLE;
 import static com.android.settings.core.BasePreferenceController.DISABLED_FOR_USER;
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -96,7 +96,7 @@
         when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false);
         when(mLockPatternUtils.isLockScreenDisabled(anyInt())).thenReturn(false);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
     }
 
     @Test
@@ -105,7 +105,7 @@
         when(mLockPatternUtils.getKeyguardStoredPasswordQuality(anyInt()))
                 .thenReturn(PASSWORD_QUALITY_ALPHABETIC);
 
-        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+        assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE_UNSEARCHABLE);
     }
 
     @Test