Hide the SelfAvailablePreference if it is not available.

- instead of removing it from the preference screen, set its visibility
to false, so that if it becomes available later, it will still be found
on the screen.

Bug: 119838520
Test: make RunSettingsRoboTests
Change-Id: Idc7079bb5846aef247dd87c0b0dba2546f2d8f8f
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 6933cfd..6b29b2e 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -155,13 +155,14 @@
         checkAvailablePrefs(getPreferenceScreen());
     }
 
-    private void checkAvailablePrefs(PreferenceGroup preferenceGroup) {
+    @VisibleForTesting
+    void checkAvailablePrefs(PreferenceGroup preferenceGroup) {
         if (preferenceGroup == null) return;
         for (int i = 0; i < preferenceGroup.getPreferenceCount(); i++) {
             Preference pref = preferenceGroup.getPreference(i);
             if (pref instanceof SelfAvailablePreference
                     && !((SelfAvailablePreference) pref).isAvailable(getContext())) {
-                preferenceGroup.removePreference(pref);
+                pref.setVisible(false);
             } else if (pref instanceof PreferenceGroup) {
                 checkAvailablePrefs((PreferenceGroup) pref);
             }